Button的基本使用
既能显示文字,又能显示图片
-
UIButton的状态:
-
normal
(普通状态): UIControlStateNormal -
highlighted
(高亮状态):UIControlStateHighlighted -
disabled
(失效状态,不可用状态):UIControlStateDisabled
-
-
UIButton的文字和图片的设置
//设置按钮的文字 - (void)setTitle:(NSString *)title forState:(UIControlState)state; //设置按钮的文字颜色 - (void)setTitleColor:(UIColor *)color forState:(UIControlState)state; //设置按钮内部的小图片 - (void)setImage:(UIImage *)image forState:(UIControlState)state; //设置按钮的背景图片 - (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state; //设置按钮的文字字体(需要拿到按钮内部的label来设置) btn.titleLabel.font = [UIFont systemFontOfSize:13];
-
获得Button的一些属性
//获得按钮的文字 - (NSString *)titleForState:(UIControlState)state; //获得按钮的文字颜色 - (UIColor *)titleColorForState:(UIControlState)state; //获得按钮内部的小图片 - (UIImage *)imageForState:(UIControlState)state; //获得按钮的背景图片 - (UIImage *)backgroundImageForState:(UIControlState)state;
Button的常见用法
- button的内部有两个子控件一个是imageView一个是titleLabel
- 因为有titleLabel属性所以button可以不用设置宽高,设置位置即可
- button设置文字、文字颜色、标题、背景图片、图片等都需要说明是在什么状态下的。但是可以设置titleLabel的文字大小,因为这样不管是什么状态下都是该字体大小:
button.titleLabel.font = [UiFont systemFontOfSize:16];
- 可以设置button的contentEdgeInsets属性,表示上下左右有多少尺寸不作为显示内容的地方:
button.contentEdgeInsets = UIEdgeInsetsMake(20, 20, 20, 20);
表示button的上下左右各有20的尺寸不显示 - 在聊天布局的demo中,文字的titleLabel的大小正好填充了button的大小,但是由于button的背景图片上下左右的各有20的透明像素,所以在设置的时候背景图片被拉伸了。设置button的contentEdgeInsets的上下左右各有20的尺寸那么正好titleLabel的显示的内容在其中,先是button根据titleLabel的大小有了此存,然后在titleLabel的基础上再加上2 * 20,这个就是button的高度
- 自定义cell实现图片在上面文字在下面的效果
- 第一种:实现
layoutSubviews
方法在里面布局 - 第二种: 在下面的方法中实现布局
//布局imageView的frame
- (CGRect)imageRectForContentRect:(CGRect)contentRect{
}
//布局titleLabel的frame
- (CGRect)titleRectForContentRect:(CGRect)contentRect{
}