为类目(类别)添加属性,使用storyboard设置边框颜色

通常使用Category时,只能添加方法,不可添加属性。但是在使用Storyboard时我们可能会使用到keyPath,这里设置的key都需要是所设置视图的属性值,并且类型有所限制。 
例如:我现在有一个按钮,我想设置成圆角,并且是紫色边框。并且我不想写代码,想通过storyboard直接设置。这样看起来很帅(其实就是一个强迫症吧,因为一直在用sb设置整个界面,但是突然出现几个样式,在sb中不可以直接设置,这种感觉很烦躁的,所以要解决掉它)。 

遇到的问题:这里key path 的type类型是固定的,这里我们不可以添加。这里只有一个UIColor类型的color,但是设置边框的颜色,应该是CGColor的,所以类型不匹配,我们需要为CALayer添加一个UIColor的属性。这里我们使用Category,不用疑问,对,是使用Category为CALayer添加一个UIColor的属性。 
CALayer+Addition.h 
#import <QuartzCore/QuartzCore.h> 
#import <UIKit/UIKit.h> 


@interface CALayer (Additions) 


@property(nonatomic, strong) UIColor *borderColorFromUIColor; 


- (void)setBorderColorFromUIColor:(UIColor *)color; 


@end 
CALayer+Addition.m 
#import "CALayer+Additions.h" 
#import <objc/runtime.h> 
@implementation CALayer (Additions) 


//static const void *borderColorFromUIColorKey = &borderColorFromUIColorKey; 
//@dynamic borderColorFromUIColor; 


- (UIColor *)borderColorFromUIColor { 
    return objc_getAssociatedObject(self, @selector(borderColorFromUIColor)); 

-(void)setBorderColorFromUIColor:(UIColor *)color 

    objc_setAssociatedObject(self, @selector(borderColorFromUIColor), color, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 
    [self setBorderColorFromUI:self.borderColorFromUIColor]; 



- (void)setBorderColorFromUI:(UIColor *)color 

    self.borderColor = color.CGColor; 
    //    NSLog(@"%@", color); 
     



这样就成功为CALayer添加了borderColorFromUIColor属性,并且在key path里可能成功设置该属性,为按钮设置边框颜色了。 


实现效果 


转自 :http://www.sjsjw.com/100/003604MYM020327/





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值