通过IBInspectable属性实时渲染IBOutlet连接子视图
我在iOS 8中第一次使用故事板,到目前为止一直喜欢故事板上的实时渲染方面。 但是,我似乎遇到了让我的视图在故事板上正确呈现的障碍。
我有一个容器UIView
包含与故事板上的UILabel
的连接,我试图根据标签的父容器视图上的IBInspectable
属性设置标签的文本。
@IBDesignable class ContainerView : UIView { @IBOutlet weak var : titleLabel : UILabel! @IBInspectable var title : String = "" { didSet { titleLabel?.text = title } } /* Init functions */ prepareForInterfaceBuilder() { self.titleLabel?.text = title } }
如果我在故事板中设置属性,它会在程序执行时按预期呈现,但无法像我期望的那样在故事板中呈现。 我已经检查了我的连接,所有内容似乎都正常连接。
我的问题是:是否可以通过IBInspectable属性影响IBOutlet连接视图的内容,并让它们在故事板上实时渲染,如果是,我错过了什么或做错了什么?
遗憾的是,您无法在界面构建器中看到标记为IBDesignable
自定义视图的IBOutlet
对象。 如果要在界面构建器中查看sockets,则必须使用常规变量而不是IBOutlet
并且必须以编程方式创建对象。
另请注意,如果您需要从对象的界面构建器更改某些内容,则必须将属性定义为IBInspectable
。 目前,以下变量类型对IBInspectable
有效:
Bool
, CGFloat
, CGPoint
, CGRect
, CGSize
, NSInteger
, NSString
, UIColor
, UIImage
我希望这个答案对你来说是充分清楚的。
编辑:我发现以下文章描述了如何做你需要的方法:
http://justabeech.com/2014/07/27/xcode-6-live-rendering-from-nib/
第二次编辑:我试过这篇文章并且它有效。 现在我可以在界面构建器上看到我的sockets