故事板设计时布局属性

时间:2016-05-21 18:12:35

标签: ios xcode swift storyboard

这是为Android定义布局时的一个功能,它允许定义属性以便设计。

http://tools.android.com/tips/layout-designtime-attributes

但是在使用故事板制作iOS应用程序时,我没有找到任何相同的方法来做同样的事情。

目前我正在清理ViewController的viewDidLoad上的所有设计值。有没有办法将布局属性定义为设计占位符,并避免在所有视图控制器中执行此setupClean步骤?

4 个答案:

答案 0 :(得分:3)

当您想要在故事板中即时反映特定组件的属性/属性时,您可以使用 @IBDesignable 来实现。

要实现此目的,您必须 您想要在故事板上反映的那种类型。

<强>步骤

  1. 创建您想要在故事板上反映的类型的子类,在此示例中,我将 UILabel 子类化为 DGlabel

    < / LI>
  2. 将该calss设为 @IBDesignable ,请参阅示例

  3. 将该子类别从 Identity Inspector 分配给该组件,请参阅屏幕截图enter image description here
  4. 在子类calss(此处为示例 DGLabel )中声明属性/属性的变量,您希望在设计中将其反映为 @IBInspectable ,请参阅此处示例我已经decalred < strong> borderColor 为 @IBInspectable ,这意味着此属性将在Xcode的属性检查器中列出
  5. 现在您可以从故事板更改该属性的值,如下面的屏幕截图

    enter image description here

    import UIKit
    
    @IBDesignable
    class DGLabel: UILabel {
    
    @IBInspectable var borderColor:UIColor = UIColor.red {
        didSet {
            reflectChange()
        }
    }
    
     override init(frame: CGRect) {
        super.init(frame: frame)
    }
    
     required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    
    }
    
    func reflectChange() {
    
        self.layer.borderWidth = 1
        self.layer.borderColor = borderColor.cgColor
            }
    
    }
    

    希望这可以让您了解这个过程。

答案 1 :(得分:1)

是的,您可以通过在故事板的Identity检查器下的“用户定义的运行时属性”部分中提供运行时属性来实现。请参阅下面的屏幕截图,将UILabel的“text”键路径的运行时值设置为空白。

enter image description here

答案 2 :(得分:0)

我认为您可以通过IBDesignable为您的观点实现类似的功能。然后,您可以使用prepareForInterfaceBuilder()TARGET_INTERFACE_BUILDER生成模拟数据,以便在Interface Builder中显示。

答案 3 :(得分:-1)

你是说这个意思吗?

enter image description here

您可以从&#34;属性检查器&#34;更改故事板中的标签文本值。