IBInspectable UIView 属性

IBInspectable UIView property

我可以让我的 UIView @属性 可检查吗?

@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;
}

但是对每个 属性 都做到这一点并不容易,尤其是当我想创建另一个包含我的超级视图的视图时。

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

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

如果您创建了一个 IBDesignable 超级视图,您也许可以使用诸如装饰器模式之类的东西来公开它的按钮和进度视图的可检查属性。

Apple's Documentation

不,您不能使 UIView 可检查。 IBInspectable 的使用仅用于配置 NIB 或故事板中实例的 "key value" 编码 属性。 假设,如果 UIView 是键,那么它的值是多少? UIView 不会有任何价值,因此您不能使 UIView 可检查。 但是我们可以让UIView的属性Inspectable如:

UIView的背景颜色、宽度、高度等

示例项目:IBDesignable and IBInspectable