gpt4 book ai didi

ios - 将 IBDesignable 和 prepareForInterfaceBuilder 与 UILabel 一起使用

转载 作者:IT王子 更新时间:2023-10-29 05:44:14 26 4
gpt4 key购买 nike

我正在创建一个名为 MyViewUIView 子类。

其中有一个 UILabel(由于某些原因,这是在代码中添加的,而不是在 InterfaceBuilder 中添加的)。

然后我在 MyView 上有一个名为 color 的属性。

我想要的是让 Interface Builder 能够选择颜色,然后显示字体设置为该颜色的标签。

在我的代码中我有...

@IBDesignable class MyView: UIView {

private let textLabel = UILabel()

@IBInspectable var color: UIColor = .blackColor() {
didSet {
textLabel.textColor = color
}
}

required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)

initialSetup()
}

override init(frame: CGRect) {
super.init(frame: frame)

initialSetup()
}

private func initialSetup() -> Void {
self.backgroundColor = .clearColor()

textLabel.textAlignment = .Center
textLabel.numberOfLines = 0

addSubview(textLabel)
}

override func layoutSubviews() {
super.layoutSubviews()

textLabel.frame = bounds
}

// I have no idea what I'm doing here?!
override func prepareForInterfaceBuilder() {
// should I create a label specifically for here?
// or should I use the property textLabel?

textLabel.text = "Hello, world!" // setting place holder IB text?
textLabel.textColor = color
textLabel.font = .systemFontOfSize(21)
textLabel.textAlignment = .Center
textLabel.numberOfLines = 0

// do I need to add sub view?
}

}

IBInspectable

在 IB 中,我可以看到那里的颜色属性,我可以设置它。令人讨厌的是,它采用默认值 .clearColor() 虽然不是我在代码中设置的颜色。有办法解决这个问题吗?

可设计的

当我将 View 放入 InterfaceBuilder 时,它显示了所有可检查的属性,但实际 View 中没有显示任何内容。

当我运行它时,一切正常。我只是希望能够在 IB 中得到一些工作(除了 drawRect)。不过,我发现明显缺乏文档。

编辑 - 警告

我刚刚注意到我收到构建错误/警告...

warning: IB Designables: Ignoring user defined runtime attribute for key path "color" on instance of "UIView". Hit an exception when attempting to set its value: [ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key color.

这可能会改变解决方案:)

最佳答案

我将您问题中的代码复制到一个新的应用程序中,添加了 View 并设置了属性,一切正常。

您看到的错误表明您在某个时候已将身份检查器中的 View 改回普通 UIView(用户定义的属性保留在这种情况下)。

enter image description here

关于ios - 将 IBDesignable 和 prepareForInterfaceBuilder 与 UILabel 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28088343/

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