3

我可以让我的 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 的视图。

4

2 回答 2

5

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

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

如果您创建一个 IBDesignable 超级视图,您可能能够使用装饰器模式之类的东西公开其按钮和进度视图的可检查属性。

苹果的文档

于 2015-05-30T17:05:51.670 回答
0

不,您不能使 UIView 可检查。IBInspectable 的使用仅用于在 NIB 或情节提要中配置实例的“键值”编码属性。假设,如果 UIView 将是关键,那么它的价值是什么?UIView 将没有价值,因此您不能使 UIView 可检查。但是我们可以让 UIView 的属性 Inspectable 比如:

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

示例项目:IBDesignable 和 IBInspectable

于 2015-06-01T16:07:12.130 回答