Я знаю, что вы используете ignoresSafeArea()
в SwiftUI, чтобы некоторые элементы пользовательского интерфейса пропускали безопасную область. Однако при использовании UIKit я не знаю, как это сделать. Я хочу разместить UILabel прямо под реальным экраном, но не вижу его, потому что он скрыт за безопасной областью.
import UIKit
class SignInViewController: UIViewController {
private let headline = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
addLabel()
view.backgroundColor = .black
}
func addLabel() {
headline.text = "SmashPass"
headline.textColor = UIColor.red
headline.frame = CGRect(x: 0 , y: 0 , width: 243, height: 29)
headline.textAlignment = .center
// alignment
headline.center.x = view.center.x
headline.center.y = view.frame.minY - 10
view.addSubview(headline)
}
}
Узнайте, как использовать Auto-Layout...
Вот ваш код с изменениями для использования Constraints и Auto-Layout для размещения метки в нижней части представления:
class SignInViewController: UIViewController {
private let headline = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
addLabel()
view.backgroundColor = .black
}
func addLabel() {
headline.text = "SmashPass"
headline.textColor = UIColor.red
headline.textAlignment = .center
// -- use Auto-Layout!
// alignment
//headline.frame = CGRect(x: 0 , y: 0 , width: 243, height: 29)
//headline.center.x = view.center.x
//headline.center.y = view.frame.minY - 10
view.addSubview(headline)
headline.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
// label uses full-width
headline.leadingAnchor.constraint(equalTo: view.leadingAnchor),
headline.trailingAnchor.constraint(equalTo: view.trailingAnchor),
// constrain the label bottom to the view bottom
headline.bottomAnchor.constraint(equalTo: view.bottomAnchor),
// label height is 29-points
headline.heightAnchor.constraint(equalToConstant: 29.0),
])
}
}
Примечание: в общем, мы хотим ограничивать элементы с учетом безопасной зоны...
Используя этот код, мы получим это на iPhone 12 Pro (например):
и, если мы установим headline.backgroundColor = .yellow
, чтобы мы могли видеть рамку метки:
Спасибо! Проблема заключалась в том, что я не поставил файл экрана запуска в начале, поэтому весь вид не принимал ничего, что попадало в безопасную зону, и все как-то увеличивалось. Тем не менее спасибо за быстрый ответ ;) @DonMag