我已经建立了一个子类UIView
,并希望查看IB中的嵌入式图像-因此,我将其设置为IBDesignable
@IBDesignable
class DieView: UIView {
@IBInspectable
var dieImage : UIImage = UIImage()
override init(frame: CGRect) {
super.init(frame: frame)
updateLayout()
}
convenience init() {
self.init(frame: CGRect.zero)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
updateLayout()
}
// for IB
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
updateLayout()
}
func updateLayout() {
self.backgroundColor = .red
let profileImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: self.frame.width, height: self.frame.height))
profileImageView.image = UIImage(named: "dice1")
profileImageView.contentMode = .scaleAspectFit
profileImageView.layer.masksToBounds = false
self.addSubview(profileImageView)
}
func showNumber(number: Int) {
}
}
背景颜色改变,但是嵌入的图像没有更新。为什么不呢?
答案 0 :(得分:1)
来自prepareForInterfaceBuilder()
的{{3}}:
Interface Builder等待,直到创建了图形中的所有对象 并在调用此方法之前进行了初始化。因此,如果您的对象是 运行时配置依赖于子视图或父视图, 对象在该方法被调用时应该已经存在。
表示子视图应在调用此方法之前存在。我不确定,但是请在调用之前尝试添加图像视图。另外,还必须记住,prepareForInterfaceBuilder()
由接口构建器独立调用。阅读文档以获取更多信息。祝你好运!