美文网首页
4按钮UIButton的细节

4按钮UIButton的细节

作者: 峰子1994 | 来源:发表于2017-11-03 14:00 被阅读28次

    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

    相关文章

      网友评论

          本文标题:4按钮UIButton的细节

          本文链接:https://www.haomeiwen.com/subject/mfazpxtx.html