example constraint ios uilabel swift3 nslayoutconstraint programmatically-created

ios - example - swift 4 constraint



Swift 3 Cree UILabel mediante programaciĆ³n y agregue NSLayoutConstraints (3)

Vea el código a continuación como un ejemplo

let lblNew = UILabel() lblNew.backgroundColor = UIColor.blue lblNew.text = "Test" lblNew.textColor = UIColor.white lblNew.translatesAutoresizingMaskIntoConstraints = false view.addSubview(lblNew) let widthConstraint = NSLayoutConstraint(item: lblNew, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 300) let heightConstraint = NSLayoutConstraint(item: lblNew, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 200) var constraints = NSLayoutConstraint.constraints( withVisualFormat: "V:[superview]-(<=1)-[label]", options: NSLayoutFormatOptions.alignAllCenterX, metrics: nil, views: ["superview":view, "label":lblNew]) view.addConstraints(constraints) // Center vertically constraints = NSLayoutConstraint.constraints( withVisualFormat: "H:[superview]-(<=1)-[label]", options: NSLayoutFormatOptions.alignAllCenterY, metrics: nil, views: ["superview":view, "label":lblNew]) view.addConstraints(constraints) view.addConstraints([ widthConstraint, heightConstraint])

Hola, estoy intentando crear una etiqueta mediante programación y agregar NSLayoutConstraints para que esté centrada en la supervista, independientemente del tamaño de la pantalla y la orientación, etc. He buscado pero no puedo encontrar un ejemplo a seguir. Esto es lo que tengo:

let codedLabel:UILabel = UILabel() codedLabel.frame = CGRect(x: 100, y: 100, width: 200, height: 200) codedLabel.textAlignment = .center codedLabel.text = alertText codedLabel.numberOfLines=1 codedLabel.textColor=UIColor.red codedLabel.font=UIFont.systemFont(ofSize: 22) codedLabel.backgroundColor=UIColor.lightGray let heightConstraint:NSLayoutConstraint = NSLayoutConstraint(item: codedLabel, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 200) let widthConstraint:NSLayoutConstraint = NSLayoutConstraint(item: codedLabel, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 200) codedLabel.addConstraints([heightConstraint, widthConstraint]) let verticalConstraint:NSLayoutConstraint = NSLayoutConstraint(item: codedLabel, attribute: NSLayoutAttribute.centerY, relatedBy: NSLayoutRelation.equal, toItem: self.contentView, attribute: NSLayoutAttribute.centerY, multiplier: 1, constant: 0) let horizontalConstraint:NSLayoutConstraint = NSLayoutConstraint(item: codedLabel, attribute: NSLayoutAttribute.centerX, relatedBy: NSLayoutRelation.equal, toItem: self.contentView, attribute: NSLayoutAttribute.centerX, multiplier: 1, constant: 0) self.contentView.addConstraints([verticalConstraint, horizontalConstraint]) self.contentView.addSubview(codedLabel)


NSLayoutAnchor era nuevo en iOS 9 y limpia en gran medida la sintaxis de restricciones.

let codedLabel:UILabel = UILabel() codedLabel.frame = CGRect(x: 100, y: 100, width: 200, height: 200) codedLabel.textAlignment = .center codedLabel.text = alertText codedLabel.numberOfLines=1 codedLabel.textColor=UIColor.red codedLabel.font=UIFont.systemFont(ofSize: 22) codedLabel.backgroundColor=UIColor.lightGray self.contentView.addSubview(codedLabel) codedLabel.translatesAutoresizingMaskIntoConstraints = false codedLabel.heightAnchor.constraint(equalToConstant: 200).isActive = true codedLabel.widthAnchor.constraint(equalToConstant: 200).isActive = true codedLabel.centerXAnchor.constraint(equalTo: codedLabel.superview!.centerXAnchor).isActive = true codedLabel.centerYAnchor.constraint(equalTo: codedLabel.superview!.centerYAnchor).isActive = true


let myLabel: UILabel = { let lb = UILabel() lb.translatesAutoresizingMaskIntoConstraints = false lb.textAlignment = .center lb.numberOfLines = 1 lb.textColor = UIColor.black lb.font=UIFont.systemFont(ofSize: 22) lb.backgroundColor = UIColor.grey return lb }()

En el método super.viewDidLoad() , debe agregar etiquetas a su vista y agregar restricciones para la etiqueta:

override func viewDidLoad() { super.viewDidLoad() self.view.addSubView(myLabel) setUpMyLabel() } func setUpMyLabel() { NSLayoutConstraint.activate([ myLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor), myLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor), myLabel.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.7), myLabel.heightAnchor.constraint(equalToConstant: 50)]) }

Espero que mi código pueda ayudarte.