锚点在集合视图单元格布局中不起作用
anchor does not work in collection view cell layout
我想在我的 CustomCollectionViewController 的单元格中添加一个 collectionView,在前导和尾随位置都使用常量 space,我尝试了锚点类型和虚拟格式类型,但锚点似乎不起作用我想。尾随 space 丢失。
这是我的代码:
class CategoryCell: UICollectionViewCell, UICollectionViewDelegateFlowLayout {
override init(frame: CGRect) {
super.init(frame: frame)
setupViews()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
let appView:UICollectionView = {
let layout = UICollectionViewFlowLayout()
let view = UICollectionView(frame: .zero, collectionViewLayout: layout)
view.translatesAutoresizingMaskIntoConstraints = false
view.backgroundColor = UIColor.blue
return view
}()
func setupViews() {
contentView.addSubview(appView)
let layoutGuide = contentView.layoutMarginsGuide
appView.leadingAnchor.constraint(equalTo: layoutGuide.leadingAnchor, constant: 8).isActive = true
appView.trailingAnchor.constraint(equalTo: layoutGuide.trailingAnchor, constant: 8).isActive = true
appView.topAnchor.constraint(equalTo: layoutGuide.topAnchor).isActive = true
appView.bottomAnchor.constraint(equalTo: layoutGuide.bottomAnchor).isActive = true
// addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-8-[v0]-8-|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": appView]))
// addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": appView]))
}
}
layout with Anchor
但如果你使用旧的虚拟格式样式,它工作正常,这让我感到困惑
layout with virtual format string
trailingAnchor.constraint 的常量值需要为 -8 而不是 8。
appView.trailingAnchor.constraint(equalTo: layoutGuide.trailingAnchor, constant: -8).isActive = true
我想在我的 CustomCollectionViewController 的单元格中添加一个 collectionView,在前导和尾随位置都使用常量 space,我尝试了锚点类型和虚拟格式类型,但锚点似乎不起作用我想。尾随 space 丢失。
这是我的代码:
class CategoryCell: UICollectionViewCell, UICollectionViewDelegateFlowLayout {
override init(frame: CGRect) {
super.init(frame: frame)
setupViews()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
let appView:UICollectionView = {
let layout = UICollectionViewFlowLayout()
let view = UICollectionView(frame: .zero, collectionViewLayout: layout)
view.translatesAutoresizingMaskIntoConstraints = false
view.backgroundColor = UIColor.blue
return view
}()
func setupViews() {
contentView.addSubview(appView)
let layoutGuide = contentView.layoutMarginsGuide
appView.leadingAnchor.constraint(equalTo: layoutGuide.leadingAnchor, constant: 8).isActive = true
appView.trailingAnchor.constraint(equalTo: layoutGuide.trailingAnchor, constant: 8).isActive = true
appView.topAnchor.constraint(equalTo: layoutGuide.topAnchor).isActive = true
appView.bottomAnchor.constraint(equalTo: layoutGuide.bottomAnchor).isActive = true
// addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-8-[v0]-8-|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": appView]))
// addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": appView]))
}
}
layout with Anchor
但如果你使用旧的虚拟格式样式,它工作正常,这让我感到困惑
layout with virtual format string
trailingAnchor.constraint 的常量值需要为 -8 而不是 8。
appView.trailingAnchor.constraint(equalTo: layoutGuide.trailingAnchor, constant: -8).isActive = true