代码之家  ›  专栏  ›  技术社区  ›  bruno vignesh

以编程方式添加负约束

  •  0
  • bruno vignesh  · 技术社区  · 6 年前

    为什么我必须给我的 rigthAnchor titleLabel

    private func setupLayout() {
        view.addSubview(imageView)
        view.addSubview(titleLabel)
    
        // *** imageView ***
        if #available(iOS 11.0, *) {
            imageView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 116).isActive = true
        } else {
            imageView.topAnchor.constraint(equalTo: view.topAnchor, constant: 116).isActive = true
        }
        imageView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
        imageView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
        imageView.heightAnchor.constraint(equalToConstant: 224).isActive = true
    
        // *** titleLabel ***
        titleLabel.topAnchor.constraint(equalTo: imageView.bottomAnchor, constant: 25).isActive = true
        titleLabel.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -28).isActive = true
        titleLabel.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 28).isActive = true
    }
    
    2 回复  |  直到 6 年前
        1
  •  5
  •   Shehata Gamal    6 年前

    因为根据这个

    titlelbl.right = view.right - 28
    

    view.right = titlelbl.right + 28
    

    firstItem.anchor文件= seconfime.anchor文件*乘数+/-常数

    转化为

    titleLabel.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -28).isActive = true
    

    或者

    view.rightAnchor.constraint(equalTo: titleLabel.rightAnchor, constant: 28).isActive = true
    

    当约束为-28时的含义

    您正在告诉auto layout将titlelbl的max x值设置为等于视图的max x值减去28

    但是用+28

    |-lbl-|+28<<<视野外最大x

        2
  •  2
  •   Richard Poutier    6 年前

    我相信这和窗户的(X,Y)网格有关。