我知道這個問題已經很久了,但最近我處於類似的情況,所以我決定把我的答案放在那些處於這種情況下的人。
我希望能夠通過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