子类视图的uiimage未显示为IBDesignable

时间:2019-04-26 06:36:18

标签: ios swift ibdesignable

我已经建立了一个子类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) {

    }

}

背景颜色改变,但是嵌入的图像没有更新。为什么不呢?

1 个答案:

答案 0 :(得分:1)

来自prepareForInterfaceBuilder()的{​​{3}}:

  

Interface Builder等待,直到创建了图形中的所有对象   并在调用此方法之前进行了初始化。因此,如果您的对象是   运行时配置依赖于子视图或父视图,   对象在该方法被调用时应该已经存在。

表示子视图应在调用此方法之前存在。我不确定,但是请在调用之前尝试添加图像视图。另外,还必须记住,prepareForInterfaceBuilder()由接口构建器独立调用。阅读文档以获取更多信息。祝你好运!