gpt4 book ai didi

ios - 如何创建枚举类型的 IBInspectable

转载 作者:IT王子 更新时间:2023-10-29 04:57:37 30 4
gpt4 key购买 nike

enum 不是 Interface Builder 定义的运行时属性。以下内容不会显示在 Interface Builder 的属性检查器中:

enum StatusShape:Int {
case Rectangle = 0
case Triangle = 1
case Circle = 2
}
@IBInspectable var shape:StatusShape = .Rectangle

来自文档:您可以将 IBInspectable 属性附加到类声明、类扩展或类别中的任何属性,以供 Interface Builder 定义的运行时属性支持的任何类型: bool 值、整数或 float 、字符串、本地化字符串、矩形、点、大小、颜色、范围和零。

问:如何在 Interface Builder 的属性检查器中查看 enum

最佳答案

swift 3

@IBInspectable var shape:StatusShape = .Rectangle 仅在 Interface Builder 中创建一个空白条目:

Not available in IB

使用适配器,它将充当 Swift 和 Interface Builder 之间的桥梁
shapeAdapter 可从 IB 检查:

   // IB: use the adapter
@IBInspectable var shapeAdapter:Int {
get {
return self.shape.rawValue
}
set( shapeIndex) {
self.shape = StatusShape(rawValue: shapeIndex) ?? .Rectangle
}
}

Available in IB

与条件编译方法(使用#if TARGET_INTERFACE_BUILDER)不同,shape 变量的类型不随目标改变,可能需要进一步更改源代码来应对使用 shape:NSIntegershape:StatusShape 变体:

   // Programmatically: use the enum
var shape:StatusShape = .Rectangle

完整代码

@IBDesignable
class ViewController: UIViewController {

enum StatusShape:Int {
case Rectangle
case Triangle
case Circle
}

// Programmatically: use the enum
var shape:StatusShape = .Rectangle

// IB: use the adapter
@IBInspectable var shapeAdapter:Int {
get {
return self.shape.rawValue
}
set( shapeIndex) {
self.shape = StatusShape(rawValue: shapeIndex) ?? .Rectangle
}
}
}

► 在 GitHub 上找到此解决方案.

关于ios - 如何创建枚举类型的 IBInspectable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27432736/

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