UIButton的基本使用

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{
  }

推荐阅读更多精彩内容