gpt4 book ai didi

ios - Storyboard设计时布局属性

转载 作者:可可西里 更新时间:2023-11-01 00:59:29 25 4
gpt4 key购买 nike

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

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

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

目前我正在清理 ViewController 的 viewDidLoad 上的所有设计值。有没有一种方法可以将布局属性定义为设计占位符并避免在我的所有 View Controller 中执行此 setupClean 步骤?

最佳答案

当您想要即时反射(reflect) Storyboard 中特定组件的属性/特性时,您可以使用@IBDesignable来实现。

要实现这一点,您必须子调用您希望反射(reflect)在 Storyboard上的类型。

步骤

  1. 创建一个你想要反射(reflect)在 Storyboard 上的类型的子类,就像这里的例子一样,我将把 UILabel 子类化为 DGlabel

    /li>
  2. 将该类设置为@IBDesignable,查看示例

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

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

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
}

}

希望这能让您了解这个过程。

关于ios - Storyboard设计时布局属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37366468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com