所以,我有UIView的子类,我要包含两个自定义UILabels。我UIView初始化为“应该”,但是,UILabels不(我用普通UILabels尝试为好,但这并不能工作。)的子类。在没有任何打印语句的痕迹,他们不会显示。他们做的工作对自己很好,当我直接把一个到故事板。
我不知道是转了,也没有什么是错的。我现在已经走遍天互联网。请帮助这个初学者...
class MainscreenButton: UIView {
@IBOutlet var icon: LAUILabel!
@IBOutlet var info: LAUILabel!
required init(coder aDecoder: NSCoder){
super.init(coder: aDecoder)!
print("mainscreenbutton requiredinit")
}
override init(frame: CGRect) {
super.init(frame: frame)
print("mainscreenbutton frameinit")
}
}
好。
他们应该初始化..你只需要给他们一个帧/边界/位置。 IBOutlet中暗示故事板或NIB,所以请确保您设置在故事板或笔尖类和连接IBOutlet中。然后给标签约束+文字,他们应该会出现。
如果你想这样做var icon = LAUILabel()
然后在初始化做到像自动布局,应该工作太icon.frame = CGRect(... blah whatever)
或方案限制
请注意,在我的代码,虽然我有这样的情节提要/笔尖初始化
required init?(coder aDecoder: NSCoder) {
}
不知道,如果它只是不就拿起BC略有不同的方法签名
你也有很多需要调用label.layoutIfNeeded()
,如果你不给他们明确的宽度限制(也许你只是给它一个X)。因为它会与一个0宽度被初始化,如果世界上没有文本和无宽度或没有前导/尾随X约束。
我不知道为什么你正在做的UIView的按钮,但如果u想要做的一样,只是流这样的:
1)创建自定义的UILabel类
class LAUILabel: UILabel {
//you can even define some params like @IBOutlet images ...
override init(frame: CGRect) {
super.init(frame: frame)
updateUI()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
updateUI()
}
private func updateUI() {
backgroundColor = .red
textColor = .green
numberOfLines = 1
textAlignment = .center
}
}
2)创建MainscreenButton
class MainscreenButton: UIView {
@IBOutlet weak var icon: LAUILabel!
@IBOutlet weak var info: LAUILabel!
required init(coder aDecoder: NSCoder){
super.init(coder: aDecoder)!
print("mainscreenbutton requiredinit")
}
override init(frame: CGRect) {
super.init(frame: frame)
print("mainscreenbutton frameinit")
}
}
3)你的用户界面与您的自定义类连接你会去到故事板或XIB文件并拖动视图去标识督察那么视图内即拖即UILabels后插入你的自定义类类的MainscreenButton'的名称和更改自定义从身份检查,如“LAUILabel”课前再与corespondent UI它应该工作链接的标签。
4)否则,你可以创建一个没有像这样的故事板标签:
class MainscreenView: UIView {
required init(coder aDecoder: NSCoder){
super.init(coder: aDecoder)!
print("mainscreenbutton requiredinit")
let icon = LAUILabel(frame: CGRect(origin: CGPoint(x: 100, y: 50), size: CGSize.zero))
icon.text = "icon"
icon.sizeToFit()
addSubview(icon)
let info = LAUILabel(frame: CGRect(origin: CGPoint(x: 200, y: 50), size: CGSize.zero))
info.text = "info"
info.sizeToFit()
addSubview(info)
}
override init(frame: CGRect) {
super.init(frame: frame)
print("mainscreenbutton frameinit")
}
}