IBInspectable UIView属性

时间:2015-05-30 16:21:23

标签: ios uiview interface-builder ibdesignable

我可以检查我的UIView @property吗?

@interface Superview : UIView 
    @property (nonatomic, weak, readonly) IBInspectable UIButton *stopButton;
    @property (nonatomic, weak, readonly) IBInspectable PKCircleProgressView *circleProgressView;
@end

我已经创建了一个可设计的视图PKCircleProgressView,我希望它可以从IB编辑。我还创建了另一个可设计的视图,其中包含PKCircleProgressView作为子视图,我希望它也可以编辑。

如果我在IB中使用Superview,有没有办法编辑circleProgressView的属性?

我只有一个想法,为两个视图创建一个通用协议,并实现如下方法:

- (void)setProgress:(CGFloat)progress {
    self.circleProgressView.progress = progress;
}

但是对每个属性都不容易,特别是如果我想创建另一个包含我的Superview的视图。

2 个答案:

答案 0 :(得分:5)

IBInspectable不支持UIView或它的子类型。它支持简单的值。

如果您的自定义进度视图是IBDesignable,为什么不将其半径和前景色等属性设置为IBInspectable,并在界面构建器中选择进度视图并更改进度视图的属性?

如果您创建IBDesignable超级视图,则可以使用类似装饰器模式的内容公开其可检查属性的按钮和进度视图。

Apple's Documentation

答案 1 :(得分:0)

不,你不能让UIView Inspectable。 IBInspectable的用法仅用于在NIB或故事板中配置实例的“键值”编码属性。 假设,如果UIView将成为关键,那么它的价值是什么? UIView没有价值,所以你不能让UIView Inspectable。 但我们可以将UIView的属性设为Inspectable,例如:

UIView的backgroundColor,width,height等

示例项目:IBDesignable and IBInspectable