为类目(类别)添加属性,使用storyboard设置边框颜色(转载)
2015-05-12 12:23
423 查看
原文地址
为按钮设置边框以及边框颜色通过storyboard,这里使用了Category为CALayer添加了一个UIColor类型的boderColorFromUIColor。
通常使用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)
b179
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里可能成功设置该属性,为按钮设置边框颜色了。
实现效果
为按钮设置边框以及边框颜色通过storyboard,这里使用了Category为CALayer添加了一个UIColor类型的boderColorFromUIColor。
通常使用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)
b179
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里可能成功设置该属性,为按钮设置边框颜色了。
实现效果
相关文章推荐
- 为类目(类别)添加属性,使用storyboard设置边框颜色
- 为类目(类别)添加属性,使用storyboard设置边框颜色
- 使用storyboard设置按钮边框属性(颜色,宽度,圆角)
- 使用storyboard设置button边框属性(颜色,宽度,圆角)
- storyboard或者Xib给View设置边框属性(颜色,宽度,圆角)
- 使用Drawble文件实现圆角,填充颜色,边框等属性的设置(Android)
- POI操作Excel表格系列3 --- 背景颜色、边框等属性的读取和设置以及数据有效性的添加
- xib 给View 添加边框 及 设置边框颜色
- iOS高级编程-使用类目方法给一个类添加属性
- storyboard内设置视图属性(圆角和边框)
- [Object-C]关于 UiView添加边框和设置边框的颜色
- iOS应用开发中UIView添加边框颜色及设置圆角边框的方法
- 设置UI控件的Layer属性(边框可见,边框颜色,边框宽度,边框圆角)
- EditText使用Selector设置选中与边框颜色
- EditText动态添加图片-----SpannableString来设置超链接、颜色、字体、图片属性
- iOS之XIB设置边框颜色属性
- iOS 使用 Runtime Attribute 为 IB 控件添加不能直接设置的属性
- 使用pulltorefreshlistview,添加上拉加载更多效果。不同于设置both属性的效果
- Android中的基础-----如何使用JAVA动态的添加并设置组件属性
- 给QLabe添加边框并设置颜色