未应用自定义UIView约束

时间:2017-09-17 05:10:42

标签: ios swift uiview constraints

我有以下自定义UIView:

import UIKit

class CustomView: UIView {

// container view
lazy var contView: UIView = {
    let cv = UIView()

    cv.backgroundColor = .gray      
    cv.translatesAutoresizingMaskIntoConstraints = false
    cv.layer.cornerRadius = 5     
    cv.layer.masksToBounds = true  
    cv.isUserInteractionEnabled = true

    return cv
}()

lazy var t: UIImageView = {
    let tt = UIImageView()

    tt.translatesAutoresizingMaskIntoConstraints = false
    tt.isUserInteractionEnabled = false
    tt.contentMode = .scaleAspectFill      

    tt.alpha = 0

    return tt
}()

let img: UIImageView = {
    let image = UIImageView()

    image.backgroundColor = .yellow       
    image.translatesAutoresizingMaskIntoConstraints = false
    image.contentMode = .scaleAspectFill        

    return image
}()

let ny: UITextView = {
    let info = UITextView()

    info.translatesAutoresizingMaskIntoConstraints = false
    info.backgroundColor = .blue
    info.text = "Some, Text"        
    info.textColor = .white

    return info
}()

func setupContView() {

    contView.addSubview(img)
    contView.addSubview(ny)
    img.addSubview(t)

    // UIViewAlertForUnsatisfiableConstraints error
    contView.widthAnchor.constraint(equalTo: self.widthAnchor, constant: -24).isActive = true
    contView.heightAnchor.constraint(equalTo: self.heightAnchor, constant: -200).isActive = true
    contView.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
    contView.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true


    t.centerXAnchor.constraint(equalTo: img.centerXAnchor).isActive = true
    t.centerYAnchor.constraint(equalTo: img.centerYAnchor).isActive = true

    img.centerXAnchor.constraint(equalTo: contView.centerXAnchor).isActive = true
    img.centerYAnchor.constraint(equalTo: contView.centerYAnchor).isActive = true
    img.widthAnchor.constraint(equalTo: contView.widthAnchor).isActive = true
    img.heightAnchor.constraint(equalTo: contView.heightAnchor).isActive = true

    ny.leftAnchor.constraint(equalTo: contView.leftAnchor).isActive = true
    ny.rightAnchor.constraint(equalTo: contView.rightAnchor).isActive = true
    ny.bottomAnchor.constraint(equalTo: contView.bottomAnchor).isActive = true
    ny.heightAnchor.constraint(equalToConstant: 50).isActive = true

}

override init(frame: CGRect) {
    super.init(frame: frame)

    addSubview(contView)

    setupContView()
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}
}

当我尝试在视图控制器中创建对此CustomView对象的引用时,如此...

var myCustomView = CustomView()

...没有应用任何约束,也没有出现任何约束。当我尝试在视图控制器中添加约束或CustomView到中心myCustomView时,我会收到UnsatisfiableConstraints个错误。当我在视图控制器中为它们添加颜色时,它们会出现,但我已经在自定义UIView类中执行了这样做,因此它是多余的并且覆盖了我所做的。

我该怎么办?我希望能够创建自定义类的对象并使它们看起来都一样,但我在CustomView类中创建的约束或自定义视图似乎都没有做任何事情。

0 个答案:

没有答案