代码之家  ›  专栏  ›  技术社区  ›  vg0x00

定位在集合视图单元格布局中不起作用

  •  0
  • vg0x00  · 技术社区  · 7 年前

    我想在CustomCollectionViewController的单元格中添加一个collectionView,在前导和尾随位置都有恒定的空间,我尝试了锚点类型和虚拟格式类型,但锚点似乎不能像我想要的那样工作。缺少尾随空格。

    这是我的代码:

    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

    1 回复  |  直到 7 年前
        1
  •  2
  •   Nemanja    7 年前

    牵引锚的常数值。约束必须是-8而不是8。

    appView.trailingAnchor.constraint(equalTo: layoutGuide.trailingAnchor, constant: -8).isActive = true