UIButton总结

自定义控件继承UIButton注意点

  • 自定义控件继承UIButton
    • 有时候我们显示的界面需要UIImageView和UILabel的结合,这个时候我们就可以通过继承UIButton来实现功能
    • 但是注意点:通常我们在.h里面也得声明模型数据,然后在.m里面重写set方法来给UIButton里面的UIImageView和UILabel的数据
    • 这里以前犯的一个错误,就是像以前设置UIImageView和UILabel对象的时候,直接就.image或者.text 直接进行赋值
    • 纠正设置按钮的文字、图片、背景图片等都是分状态的,所以,得通过调用相应的方法来进行设置数据,否则,可能看不到数据界面,不显示界面

UIButton的界面状态

  • 往storyboard中拖拽一个UIButton,比如我的示例图片QQ图片尺寸是36*36,我把它设置给UIButton属性中的Image,只要UIButton的尺寸大于等于QQ图片尺寸,那么QQ图片尺寸,不会进行缩放,在没有文字的情况下,默认是显示在UIButton的正中间,用面板里面的模式去设置,对QQ图片没有任何影响;把它设置给UIButton属性中的Background,只要UIButton的图片尺寸大于QQ图片的尺寸,那么,QQ图片会进行缩放,在storyboard面板中,如图:

改变里面的模式,对QQ图片的尺寸没有任何影响,在Background的条件下,UIButton的尺寸比QQ图片小,QQ图片也会进行缩放,调整面板里面的模式,对QQ图片没有任何影响

  • 把它依然设置给UIButton属性中的Image,UIButton的尺寸小于QQ图片的尺寸,那么QQ图片也会进行缩放,会变形,调整面板里面的模式,对QQ图片没有任何影响;但是,如果我通过代码的方式:
// 创建UIButton对象
    UIButton *btn = [[UIButton alloc] init];
    btn.imageView.contentMode = UIViewContentModeScaleAspectFit;
    btn.frame = CGRectMake(20, 20, 40, 20);
    // 设置背景色
    btn.backgroundColor = [UIColor redColor];

    // 设置文字
    [btn setTitle:@"hehe" forState:UIControlStateNormal];
    [btn setTitle:@"haha" forState:UIControlStateHighlighted];

    // 设置小图片
    [btn setImage:[UIImage imageNamed:@"QQ"] forState:UIControlStateNormal];
    [btn setImage:[UIImage imageNamed:@"QQ"] forState:UIControlStateHighlighted];

    // 添加到view
    [self.view addSubview:btn];

那么,btn.imageView.contentMode = UIViewContentModeScaleAspectFit;这句代码就起到一个作用,里面的图片跟着按钮一起收缩的时候,会进行等比例缩放,并且排布到按钮中间

效果图:

2.png

总结,在storyboard中给UIButton的Image,Background设置图片的话,用storyboard里面的View里面的模式去设置图片,没有半点影响,因为那个模式是UIView里面的,所以,不行,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,239评论 4 61
  • 天挫伤了我的光明 墨浸染了我的眼睛 雨冲刷不净痕迹 泪是什么颜色 有人说 是透明的 其实 它是黑色的
    好奇是病阅读 1,638评论 5 3
  • 1.text-align: center的作用是什么,作用在什么元素上?能让什么元素水平居中 作用是使行内元素居中...
    村里第一帅阅读 2,523评论 0 0