2016-09-23 1 views
0

これはあなたがインターフェイスビルダーで、それの影をコントロールすることができる場所私が作ったカスタムUIViewクラスの私が持っている次のコードです:私はawakeFromNibを使用する場合iOS - IBInspectableの仕事をするためにどのようなObjective-Cメソッドが必要ですか?

#import "ShadowView.h" 

@interface ShadowView() 

@property (copy, nonatomic) IBInspectable UIColor *shadowColor; 
@property (assign, nonatomic) IBInspectable CGFloat xOffset; 
@property (assign, nonatomic) IBInspectable CGFloat yOffset; 
@property (assign, nonatomic) IBInspectable float shadowOpacity; 
@property (assign, nonatomic) IBInspectable CGFloat shadowRadius; 
@property (assign, nonatomic) IBInspectable CGFloat xInset; 
@property (assign, nonatomic) IBInspectable CGFloat yInset; 

@end 

@implementation ShadowView 

#pragma mark - Lifecycle 

//-(void)awakeFromNib { 
// [super awakeFromNib]; 
// [self setUpView]; 
//} 

-(void)drawRect:(CGRect)rect { 
    [super drawRect:rect]; 
    [self setUpView]; 
} 

#pragma mark - Helpers 

-(void)setUpView { 
    self.layer.shadowColor = _shadowColor.CGColor; 
    self.layer.shadowOffset = CGSizeMake(_xOffset, _yOffset); 
    self.layer.shadowOpacity = _shadowOpacity; 
    self.layer.shadowRadius = _shadowRadius; 
    CGRect shadowRect = CGRectInset(self.bounds, _xInset, _yInset); 
    self.layer.shadowPath = [[UIBezierPath bezierPathWithRect:shadowRect] CGPath]; 
} 

@end 

、影がiPhone 5用シミュレータだけ半分に取り組みます彼らのiPhone6エミュレータで動作します。 drawRectはすべて動作するようですが、init(frame: CGRect)init?(coder aDecoder: NSCoder)を使用するスウィフトの例を見てきました。この権利を常に得るために必要な方法は何ですか?

注:インターフェイスビルダーで影がレンダーされないため、この場合はIB_DESIGNABLEを使用していません。

+0

わかりませんが、IB_DESIGNABLEに設定することなくIBInspectableを使用することはできません – Suhaib

答えて

0

IBInspectableを使用する場合、すべてのプロパティを設定するために - (void)setupviewメソッドを追加する必要はありませんでした。以下のような別のセッターメソッドを追加する必要があります。

-(void)setShadowColor:(UIColor)color { 
    _shadowColor = color; 
    self.layer.shadowColor = _shadowColor.CGColor; 
} 
........ 

希望すると助かります。

関連する問題