IBInspectable UIView 属性

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

但并非每个属性都可以轻松实现此操作,特别是如果我想创建包含我的超级视图的另一个视图。

2个回答

5

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

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

如果您正在创建一个IBDesignable的父视图,您可以使用类似于装饰者模式的东西来公开其按钮和进度视图的可检查属性。

苹果的文档


0

不,你不能使UIView可检查。 IBInspectable的使用仅用于配置NIB或故事板中实例的“键值”编码属性。 如果UIView是键,那么它的值将是什么?UIView没有值,因此无法使UIView可检查。 但是,我们可以使UIView的属性可检查,例如:

UIView的backgroundColor、宽度、高度等

示例项目:IBDesignable和IBInspectable


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接