【问题标题】:How do I add constraints programmatically to my UILabel如何以编程方式将约束添加到我的 UILabel
【发布时间】:2018-01-02 20:53:48
【问题描述】:

有没有办法在 swift 中有一个标签并以编程方式对其进行约束。例如,在所有设备上“固定到顶部”或“固定到右侧”,这样在所有设备上它就可以固定到正在使用的任何设备上。

这是因为我以编程方式创建了一个标签,所以我想对其进行约束。

如果您需要更多信息,请告诉我。谢谢:)

【问题讨论】:

    标签: swift


    【解决方案1】:
    override func viewDidLoad() {
         super.viewDidLoad()
            let label = UILabel()
            self.view.addSubview(label)
            label.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
            label.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
            label.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
            label.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
        }
    

    这会将项目绑定到所有边缘,使其与屏幕一样大。锚点用于指代游戏中的一个点。这是它的超级视图或与当前视图处于同一级别的某个视图。您可以像我一样使用引用 self.view.trailingAnchor,还可以添加偏移和插入 view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 8).isActive = true。或者你可以直接命名某事物的大小label.heightAnchor.constraint(equalToConstant: CGFloat).isActive = true。祝你好运

    【讨论】:

      【解决方案2】:

      您可以使用 NSLayoutConstraints 以编程方式轻松添加约束。下面是它的代码示例。我已经使用了居中约束,您可以使用高度和宽度的前导和顶部约束。

      func addLabel(){
          let newView =UILabel()
      
              self.view.addSubview(newView)
      
              newView.translatesAutoresizingMaskIntoConstraints = false
              let horizontalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.centerX, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerX, multiplier: 1, constant: 0)
              let verticalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.centerY, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerY, multiplier: 1, constant: 0)
              let widthConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100)
              let heightConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100)
              NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint, widthConstraint, heightConstraint])
          }
      

      【讨论】:

      • 所以这会将它固定到设备的所有边缘?
      【解决方案3】:

      下面的代码将在所有 d 设备上根据需要将您的标签粘贴到右上角,

      let aLabel = UILabel()
      
       self.view.addSubview(aLabel)
       aLabel.backgroundColor = UIColor.gray
       aLabel.text = " i am a label"
       aLabel.textAlignment = .center
       aLabel.translatesAutoresizingMaskIntoConstraints = false
      
       let horizontalConstraint = NSLayoutConstraint(item: aLabel, attribute: NSLayoutAttribute.trailing, relatedBy: NSLayoutRelation.equal, toItem: view, attribute:NSLayoutAttribute.trailing, multiplier: 1, constant: 0)
       let verticalConstraint = NSLayoutConstraint(item: aLabel, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.top, multiplier: 1, constant: 0)
      
       NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint])
      
       self.view.layoutIfNeeded()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-30
        • 1970-01-01
        • 2017-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多