私はこの質問が長く持って知っているが、私はこのような状況にある人のための私の答えを置くことを決めたので、最近私は似たような状況にありました。
私はInterface Builderを経由UIView
にborderColor
とshadowColor
を設定できるようにしたかったが、層のborderColor
プロパティの型がで変更することが許可されたタイプのものではありません(ただshadowColor
のように)CGColor
されていますユーザー定義のランタイム属性機能
だから私は、CALayer
の拡張子を作って、私はタイプUIColorであるborderColorIBとshadowColorIBと呼ばれる2つのプロパティを追加しました:
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でこの2つのプロパティを設定することができる:「ユーザー定義のランタイム属性」セクション(アイデンティティインスペクタ)で
を確認してくださいUIViewを選択し、以下のランタイム属性を追加します
- layer.borderWidth、数、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ではないようで分かったが、私はYES =私のInterfaceBuilderビューのclipsToBoundsを設定していること(デフォルトでは)falseにする必要があります。ここにNOを置いても問題ありません。だから私は、クリップのToBound = NOと影で2番目のビューでビューをラップする必要がありますね。別の方法がありますか? – Dennis
同じ問題がありましたが、Interface Builderのビューで "Clip Subviews"がチェックされたためです。 CALayerのシャドウが表示されるようにチェックを外してください。 – azdev