Ios 未应用自定义UIView约束
我有以下自定义UIView:Ios 未应用自定义UIView约束,ios,swift,uiview,constraints,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 =
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
时,我会得到unsatifiableconstraints
错误。当我在视图控制器中为它们添加颜色时,它们就会出现,但我已经在自定义UIView类中这样做了,所以它是多余的,并且会覆盖我所做的
我该怎么办?我希望能够创建自定义类的对象,并使它们看起来都一样,但是,我在
CustomView
类中创建的约束或自定义视图似乎没有任何作用。我认为您需要为t
设置contView
约束,并且您还需要为contView
设置约束,我认为您不需要cv.layoutifneed()
在您的contView
声明中,这样做会给我UIViewAlertforUnsatifiableConstraints
,就像我说的那样。那又怎样?请解释一下。我给出了三个建议,您尝试删除了cv.layoutifneed()
并添加了cardView.widthAnchor.constraint(equalTo:self.widthAnchor,常量:-24)。isActive=true
这会产生错误请应用其他建议,然后我认为您的代码会工作,对t
和contView
应用约束我认为您需要对t
设置height
和width
约束,并且您还需要为contView
设置约束,我认为您不需要cv.layoutifneed()
在您的contView
声明中,这样做会给我UIViewAlertforUnsatifiableConstraints
,就像我说的那样。那又怎样?请解释一下。我给出了三个建议,您尝试删除了cv.layoutifneed()
并添加了cardView.widthAnchor.constraint(equalTo:self.widthAnchor,常量:-24)。isActive=true
这会产生错误请应用其他建议,然后我认为您的代码会工作,对t
和contView