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

时间:2018-05-03 19:19:50

标签: swift uitableview storyboard constraints ibdesignable

我一直在转动轮子几天。我找不到@IBDesignable的程序化约束的任何演示。

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

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

  3. 问题:如何使用@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
    
        }
    }
    

1 个答案:

答案 0 :(得分:0)

尝试再次添加

 imgv.translatesAutoresizingMaskIntoConstraints = false

之后

addSubview(lab)

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

它应该工作。