【问题标题】:Storyboard Designtime Layout AttributesStoryboard Designtime 布局属性
【发布时间】:2016-05-21 18:12:35
【问题描述】:

在为 Android 定义布局时,这是一个非常相似的功能,它允许定义属性只是为了设计。

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

但在使用 Storyboard 制作 iOS 应用程序时,我没有找到任何等效的方法。

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

【问题讨论】:

  • 我想你刚刚在 Interface Builder 中描述了Auto Layout
  • This book 对我理解和使用自动布局有很大帮助。
  • 不,我不是说自动布局。 AFAIK 无法在设计时使用自动布局在 UILabel 中定义文本

标签: ios xcode swift storyboard


【解决方案1】:

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

要实现这一点,您必须subcalss您想要反映在情节提要上的那种类型。

步骤

  1. 创建一个您想要反映在情节提要上的类型的子类,例如这里我将子类 UILabelDGlabel

  2. 将其设为 @IBDesignable,请参阅示例

  3. Identity Inspector 将该子类分配给组件,请参见屏幕截图
  4. 在子类中(此处为示例 DGLabel)将您希望在设计中反映的属性/属性的变量声明为 @IBInspectable,请参阅此处的示例,我已贴标 borderColor 为 @IBInspectable,这意味着该属性将在 Xcode 的属性检查器中列出

现在您可以从故事板更改该属性的值,如下面的屏幕截图所示

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,而问题只能在情节提要编辑器中看到,而不是在运行应用程序时看到
【解决方案2】:

是的,您可以通过在情节提要的身份检查器下的“用户定义的运行时属性”部分中提供运行时属性来做到这一点。请参阅下面的屏幕截图,将 UILabel 的“文本”键路径的运行时值设置为空白。

【讨论】:

    【解决方案3】:

    我认为您可以通过使用IBDesignable 来获得类似的效果。然后您可以使用prepareForInterfaceBuilder()TARGET_INTERFACE_BUILDER 生成模拟数据以在Interface Builder 中显示。

    【讨论】:

      【解决方案4】:

      你是这个意思吗?

      您可以从“属性检查器”更改情节提要中的标签文本值。

      【讨论】:

      • 不,这是真正的价值。 UILabel 将在运行时采用此值。我正在寻找可以在 Storyboard 中配置的文本进行设计,但在应用程序运行时不会应用于 UILabel 本身
      • 然后在代码中设置值,例如 label.text = @"your text"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 2012-08-04
      相关资源
      最近更新 更多