使用编程约束和@IBDesignable 时设计时崩溃

Design time crash while using programmatic constraints and @IBDesignable

我已经为此绞尽脑汁好几天了。我找不到任何关于 @IBDesignable 的编程约束的演示。

  1. 如果我尝试 imgv.translatesAutoresizingMaskIntoConstraints = false。然后设置了一个明显的无限循环,我实际上必须退出 Xcode,重新打开它并在设计时间发生之前快速删除它。

  2. 正如目前所写的那样,我有限制将 imgv 大小更改为 200 宽度和高度,但将值更改为 300 对故事板没有影响。所以好像约束没有效果。

问题:如何使用@IBDesignable?##标题##

创建将显示在故事板上的编程约束
import UIKit

@IBDesignable
class tryTVCellTableViewCell: UITableViewCell {

    override func prepareForInterfaceBuilder() {
        setProperties()
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        setProperties()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setProperties()
    }

    public override func layoutSubviews() {
        super.layoutSubviews()
        setProperties()
    }

    func setProperties() {
        backgroundColor = .blue
        let imgv = UIImageView(frame: CGRect(x: 10, y: 20, width: 50, height: 50))
        let bundle = Bundle(for: type(of: self))
        let img = UIImage(named: "mountain", in: bundle, compatibleWith: traitCollection)
        assert(img != nil)
        imgv.image = img
        imgv.backgroundColor = .green
        let lab = UILabel(frame: CGRect(x: 100, y: 10, width: 300, height: 300))
        lab.text = "hkjlkjlkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;lkj;l;lkjk;j;i"
        addSubview(imgv)
        addSubview(lab)


        imgv.widthAnchor.constraint(equalToConstant: 200).isActive = true
        imgv.heightAnchor.constraint(equalToConstant: 200).isActive = true
        imgv.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true

    }
}

再试试添加

 imgv.translatesAutoresizingMaskIntoConstraints = false

之后
addSubview(lab)

之前

imgv.widthAnchor.constraint(equalToConstant: 200).isActive = true

应该可以。