storyboard或者Xib给View设置边框属性(颜色,宽度,圆角)

纯代码设置Button或者其余View的边框属性布局

例: UIView* view = [[UIView alloc]init];ui

     view.layer.borderWidth = 2.0;this

    view.layer.masksToBounds = YES;spa

     view.layer.cornerRadius = 5.0;3d

     view.layer.borderColor = [UIColorredColor].CGColor;blog

 

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

其主要设置的方式是经过在 XIB操做栏的User Defined Runtime Attributes中经过 KEY PATH去设置当前控件的属性,具体步骤以下图所示:
 
这里写图片描述
 
 

设置圆角最经常使用的是设置圆角,边框颜色,所以须要用到的 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两句代码看起来并无效果ip

缘由:实际上是由于在设置borderColor的时候,须要接受的是一个CGColor,而在 key Path中只有Color,其实就是 UIColor,类型是不对的,所以并无正确显示想要展示的颜色.it

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

 

 

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

#import "CALayer+XibBorderColor.h"

#import <UIKit/UIKit.h>

@implementation CALayer (XibBorderColor)

 

- (void)setBorderColorWithUIColor:(UIColor *)color

{

    

    self.borderColor = color.CGColor;

}

 

@end

这样之后,只须要将key Path中的layer.borderColor修改为为layer.setBorderColorWithUIColor 就能够了
 
 
 
添加阴影同理:
 

-(void)setShadowColorWithUIColor:(UIColor *)color

{

    self.shadowColor = color.CGColor;

}

 

@end

相关文章
相关标签/搜索