美文网首页
xcode直接给xib,sb内控件添加圆角等属性

xcode直接给xib,sb内控件添加圆角等属性

作者: BigBossZhu | 来源:发表于2019-08-26 19:09 被阅读0次

    纯代码设置Button或者其他View的边框属性

    例: UIView* view = [[UIView alloc]init];
    
         view.layer.borderWidth = 2.0;
    
        view.layer.masksToBounds = YES;
    
         view.layer.cornerRadius = 5.0;
    
         view.layer.borderColor = [UIColorredColor].CGColor;
    

    以下提供自定义控件的时候,使用Xib,或者用sb来进行布局,那么这时候怎么来使用storyboard或者Xib给View设置边框属性的方法

    其主要设置的方式是通过在 XIB操作栏的User Defined Runtime Attributes中通过 KEY PATH去设置当前控件的属性,具体步骤如下图所示:

    位置.png

    设置圆角最常用的是设置圆角,边框颜色,因此需要用到的 key Path有一下几个:

    1. layer.cornerRadius ,注意该 key 对应 Value 的 type 应该设置为 String/Number
      两种类型均可(代码设置弧度为:thisViewlayer.masksToBounds = YES)
    2. layer.masksToBounds ,注意该 key 对应 Value 的 type 应该设置为 Boolean ,
      当右侧出现对号时为YES(代码圆角为:thisView.layer.masksToBounds = YES)
    3. layer.borderWidth ,注意该 key 对应 Value 的 type 应该设置为 String/Number
      两种类型均可(代码设置边框宽度为:thisViewlayer.borderWidth = 2)
    4. layer.borderColor , 注意该 key 对应 Value 的 type 应该设置为
      Color(代码设置边框颜色:thisView.layer.borderColor = [UIColor
      redColor].CGColor)

    其实如果你从上面一直敲下来的话:
    你会发现只有1和2的两句代码是有效的;
    3,4两句代码看起来并没有效果

    原因:其实是因为在设置borderColor的时候,需要接受的是一个CGColor,而在 key Path中只有Color,其实就是 UIColor,类型是不对的,因此并没有正确显示想要展现的颜色.

    因此这样的写法是有问题的.
    所以要通过添加一个CALayer的类扩展来实现,将key Path中设置的UIColor转换成为CGColor,为边框设置颜色,实现如下:

    技术分享 技术分享

    然后在你的分类.m文件中添加一个属性

    //
    //  Created by xiaoyige on 2019/8/26.
    //  Copyright © 2019
    
    #import "CALayer+ZLCALayer_XibBorderColor_h.h"
    #import <UIKit/UIKit.h>
    @interface CALayer ()
    @property (nonatomic,strong) UIColor *borderColorWithUIColor;
    @property (nonatomic,strong) UIColor *shadowColorWithUIColor;
    @end
    @implementation CALayer (ZLCALayer_XibBorderColor_h)
    //keyPath中的keyt为borderColorWithUIColor
    - (void)setBorderColorWithUIColor:(UIColor *)color {
        self.borderColor = color.CGColor;
    }
    //keyPath中的keyt为shadowColorWithUIColor
    -(void)setShadowColorWithUIColor:(UIColor *)color {
        self.shadowColor = color.CGColor;
    }
    
    
    @end
    
    

    这样以后,只需要将key Path中的layer.borderColor修改成为layer.borderColorWithUIColor 就可以了

    添加阴影同理:

    -(void)setShadowColorWithUIColor:(UIColor *)color {
    self.shadowColor = color.CGColor;

    }
    只需要将key Path中的layer.shadow修改成为layer.shadowColorWithUIColor 就可以了亲测有效
    不用写无用的废物代码了

    keyPath添加圆角边框等属性.jpeg

    常用

    layer.masksToBounds
    layer.cornerRadius
    layer.borderWidth
    layer.borderColorWithUIColor
    layer.shadowColorWithUIColor
    
    

    相关文章

      网友评论

          本文标题:xcode直接给xib,sb内控件添加圆角等属性

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