我知道这个问题已经很久了,但最近我处于类似的情况,所以我决定把我的答案放在那些处于这种情况下的人。
我希望能够通过Interface Builder来设置一个UIView
的borderColor
和shadowColor
,但图层的borderColor
属性的类型是CGColor
(就像shadowColor
),这是不是在改变允许的类型之一用户定义的运行时属性功能。
所以我提出的扩展为CALayer
,我加入两个属性称为borderColorIB和shadowColorIB是类型的UIColor的:
RuntimeAttributes.h
@import QuartzCore;
@interface CALayer (IBConfiguration)
@property(nonatomic, assign) UIColor* borderColorIB;
@property(nonatomic, assign) UIColor* shadowColorIB;
@end
RuntimeAttributes。米
#import <UIKit/UIKit.h>
#import "RuntimeAttributes.h"
@implementation CALayer (IBConfiguration)
-(void)setBorderColorIB:(UIColor*)color
{
self.borderColor = color.CGColor;
}
-(UIColor*)borderColorIB
{
return [UIColor colorWithCGColor:self.borderColor];
}
-(void)setShadowColorIB:(UIColor*)color
{
self.shadowColor = color.CGColor;
}
-(UIColor*)shadowColorIB
{
return [UIColor colorWithCGColor:self.shadowColor];
}
@end
现在我alredy能够通过Interface Builder中这样设置这个两个属性:
- 在“用户自定义运行属性”部分(身份检查)
确保选择UIView,并添加以下运行属性:
- layer.borderWidth,Number,1
- layer.borderColorIB,颜色,someColor
<- my custom property to set the borderColor
- layer.shadowColorIB,颜色,someColor
<- my custom property to set the shadowColor
- layer.shadowOpacity,数字,0.8
- layer.shadowOffset,大小,{5,5}
- 层。 cornerRadius,数字,5
这里是展现你的形象我是如何做到:
...和运行过程中的结果将是显而易见的,而不是在Xcode:
我希望这可以帮助一些人在那里!
很随意,我只是发现似乎实际问题并没有被InterfaceBuilder的,但事实上,我把我的InterfaceBuilder视图的clipsToBounds = YES。没有在这里是可以的。所以我想我必须在第二个视图中用clipToBound = NO和阴影来包装视图。有另一种方法吗? – Dennis
我有同样的问题,但这是因为“剪辑子视图”已在Interface Builder中为视图选中。取消选中使CALayer阴影可见。 – azdev