NSLAyoutConstraints 不适用于 UICollectionViewCell 中的 UIView
NSLAyoutConstraints not applied for UIView in UICollectionViewCell
所以我试图在 UICollectionViewCell 中限制一个视图,但似乎根本没有应用这些限制
这是我的自定义单元格 class:
class MyCustomCell: UICollectionViewCell {
var message: String?
var messageView: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = .black
label.textAlignment = .left
label.numberOfLines = 0
return label
}()
var cardView: UIView = {
var cardView = UIView()
cardView.translatesAutoresizingMaskIntoConstraints = false
return UIView()
}()
override init(frame: CGRect) {
super.init(frame: frame)
self.addSubview(cardView)
cardView.addSubview(messageView)
setupCardView()
setupMessageLabel()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCardView() {
NSLayoutConstraint.activate([
cardView.topAnchor.constraint(equalTo: self.topAnchor, constant: 5),
cardView.bottomAnchor.constraint(equalTo: self.bottomAnchor),
cardView.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 10),
cardView.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -10)
])
cardView.layer.cornerRadius = 20.0
cardView.layer.shadowColor = #colorLiteral(red: 0.2549019754, green: 0.2745098174, blue: 0.3019607961, alpha: 1)
cardView.layer.shadowOffset = CGSize(width: 0.0, height: 0.0)
cardView.layer.shadowRadius = 12.0
cardView.layer.shadowOpacity = 0.7
cardView.backgroundColor = #colorLiteral(red: 0.7490196078, green: 0.3529411765, blue: 0.9490196078, alpha: 1)
}
}
约束被完全忽略,我得到一个完全白屏
注意:当我尝试添加标签时,我的自定义单元格连接正确,即使有约束也能正常工作
添加
后问题解决
cardView.translatesAutoresizingMaskIntoConstraints = false
就在我的限制之前...
但是为什么当我这样初始化我的 UIView 时它不起作用
var cardView: UIView = {
var cardView = UIView()
cardView.translatesAutoresizingMaskIntoConstraints = false
return UIView()
}()
有人知道吗?
编辑:正如您在评论中看到的,问题是我有
return UIView()
而不是
return cardView
在我的 cardView 变量中...
所以我试图在 UICollectionViewCell 中限制一个视图,但似乎根本没有应用这些限制
这是我的自定义单元格 class:
class MyCustomCell: UICollectionViewCell {
var message: String?
var messageView: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = .black
label.textAlignment = .left
label.numberOfLines = 0
return label
}()
var cardView: UIView = {
var cardView = UIView()
cardView.translatesAutoresizingMaskIntoConstraints = false
return UIView()
}()
override init(frame: CGRect) {
super.init(frame: frame)
self.addSubview(cardView)
cardView.addSubview(messageView)
setupCardView()
setupMessageLabel()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCardView() {
NSLayoutConstraint.activate([
cardView.topAnchor.constraint(equalTo: self.topAnchor, constant: 5),
cardView.bottomAnchor.constraint(equalTo: self.bottomAnchor),
cardView.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 10),
cardView.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -10)
])
cardView.layer.cornerRadius = 20.0
cardView.layer.shadowColor = #colorLiteral(red: 0.2549019754, green: 0.2745098174, blue: 0.3019607961, alpha: 1)
cardView.layer.shadowOffset = CGSize(width: 0.0, height: 0.0)
cardView.layer.shadowRadius = 12.0
cardView.layer.shadowOpacity = 0.7
cardView.backgroundColor = #colorLiteral(red: 0.7490196078, green: 0.3529411765, blue: 0.9490196078, alpha: 1)
}
}
约束被完全忽略,我得到一个完全白屏
注意:当我尝试添加标签时,我的自定义单元格连接正确,即使有约束也能正常工作
添加
后问题解决cardView.translatesAutoresizingMaskIntoConstraints = false
就在我的限制之前... 但是为什么当我这样初始化我的 UIView 时它不起作用
var cardView: UIView = {
var cardView = UIView()
cardView.translatesAutoresizingMaskIntoConstraints = false
return UIView()
}()
有人知道吗?
编辑:正如您在评论中看到的,问题是我有
return UIView()
而不是
return cardView
在我的 cardView 变量中...