4按钮UIButton的细节

1.按钮的细节:

1、内部子控件
2、按钮拉伸问题
    2-1、代码拉伸
    2-2、无代码拉伸

2.内容子控件:

自定义按钮:调整内部子控件的frame
方式1:实现titleRectForContentRect:和imageRectForContentRect:方法,分别返回titleLabel和imageView的frame
方式2:在layoutSubviews方法中设置
内边距:
// 设置按钮内容的内边距(影响到imageView和titleLabel)
@property(nonatomic)          UIEdgeInsets contentEdgeInsets;
// 设置titleLabel的内边距(影响到titleLabel)
@property(nonatomic)          UIEdgeInsets titleEdgeInsets;
// 设置imageView的内边距(影响到imageView)
@property(nonatomic)          UIEdgeInsets imageEdgeInsets;

3.按钮拉伸问题:

代码拉伸:
在按钮使用了背景图片之后,特别是圆角图片,如果将按钮拉伸很大,边角锯齿显示就很明显了,也很难看。
所以我们需要将按钮拉伸问题进行处理:
使用UIImage对象的一个方法resizeable...可拉伸的意思


image.png
瓦片模式:拉伸后,会将可拉伸的部分拷贝铺设一块一块
拉伸模式:拉伸后,会直接将可拉伸部分直接拉大

IOS5开始

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets;
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode;
最后一般项目中这个图片拉伸的复用的功能我们可以封装在内部,
我们先将这个功能封装进方法,方法名是:resizableImage
那么写在谁的内部比较合适,也就是谁做这个功能最合适呢?
当然是UIImage,那么就有两种方式,
    1、分类类别拓展UIImage的方法,2、在继承UIImage自定义类中写
注意:类别拓展拓展成类方法比较合适哦,不然你还需要通过alloc-init创建UIImage对象,然后调用这个拓展的类别方法。

4.无代码拉伸:

在xcode上设置,直接好实用,不用写代码,连前面导入的文件名都不需要了


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,490评论 4 61
  • li { list-style-position: inside; list-style-type: decima...
    今天学了啥阅读 655评论 0 0
  • 一,听碟:(许东老师分享如何做好做大如新事业)(许红老师分享)不要把过程当结果。 二,看书:和客人一起看小册子。 ...
    卓越nu陈秋婵阅读 583评论 0 0
  • 遇到可爱的你,让我忘记了自己。 我只想好好的爱你!
    灵犀一指阅读 193评论 0 0
  • 弟弟比我小两岁,跟他的记忆一箩筐。 在一对夫妻一对孩的严格计划生育时代,父亲作为教师,是绝不许要第二个孩子的。弟弟...
    逸黎阅读 374评论 2 4

友情链接更多精彩内容