Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Como criar e gerenciar NSLayoutConstraint no iOS

O NSLayoutConstraint é uma classe fundamental no desenvolvimento de interfaces gráficas em iOS, parte do UIKit. Ele permite que desenvolvedores definam regras de layout para posicionar e dimensionar views de maneira dinâmica e responsiva. Com o advento de diferentes tamanhos de tela e orientações, o uso de constraints se tornou essencial para criar interfaces adaptáveis e robustas. Este artigo irá explorar como criar e gerenciar NSLayoutConstraint programaticamente no ambiente Apple, fornecendo exemplos práticos para ilustrar seu uso.

Exemplos:

Exemplo 1: Criando uma NSLayoutConstraint Programaticamente

Vamos começar com um exemplo simples onde criamos uma UIView e adicionamos constraints para centralizá-la na tela e definir seu tamanho.

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Criação da UIView
        let myView = UIView()
        myView.translatesAutoresizingMaskIntoConstraints = false
        myView.backgroundColor = .red
        self.view.addSubview(myView)

        // Definindo constraints
        let centerXConstraint = myView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor)
        let centerYConstraint = myView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor)
        let widthConstraint = myView.widthAnchor.constraint(equalToConstant: 100)
        let heightConstraint = myView.heightAnchor.constraint(equalToConstant: 100)

        // Ativando constraints
        NSLayoutConstraint.activate([centerXConstraint, centerYConstraint, widthConstraint, heightConstraint])
    }
}

Neste exemplo, criamos uma UIView vermelha e a centralizamos na tela com um tamanho fixo de 100x100 pontos.

Exemplo 2: Atualizando Constraints Dinamicamente

Às vezes, é necessário atualizar as constraints dinamicamente, por exemplo, ao responder a uma interação do usuário.

import UIKit

class ViewController: UIViewController {

    var widthConstraint: NSLayoutConstraint!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Criação da UIView
        let myView = UIView()
        myView.translatesAutoresizingMaskIntoConstraints = false
        myView.backgroundColor = .blue
        self.view.addSubview(myView)

        // Definindo constraints
        myView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
        myView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true
        widthConstraint = myView.widthAnchor.constraint(equalToConstant: 100)
        widthConstraint.isActive = true
        myView.heightAnchor.constraint(equalToConstant: 100).isActive = true

        // Adicionando um botão para atualizar a constraint
        let button = UIButton(type: .system)
        button.translatesAutoresizingMaskIntoConstraints = false
        button.setTitle("Expandir", for: .normal)
        button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
        self.view.addSubview(button)

        button.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
        button.topAnchor.constraint(equalTo: myView.bottomAnchor, constant: 20).isActive = true
    }

    @objc func buttonTapped() {
        widthConstraint.constant = 200
        UIView.animate(withDuration: 0.3) {
            self.view.layoutIfNeeded()
        }
    }
}

Neste exemplo, criamos um botão que, ao ser pressionado, expande a largura da UIView azul de 100 para 200 pontos.

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.