Auto Layout
Constraints
Auto Layout positions views with rules (constraints) like “pin to the top with 20pt”.
NSLayoutConstraint.activate([
label.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 20),
label.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 16),
label.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -16)
])
Stack views (easier layout)
let stack = UIStackView(arrangedSubviews: [titleLabel, subtitleLabel])
stack.axis = .vertical
stack.spacing = 8
stack.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(stack)
Rule: never hard-code frames/positions. Use constraints and stack views so layouts work on every iPhone and iPad, portrait or landscape.