снимок экрана Я создал представление, в котором разместил изображение и представление. Я программно добавил ограничения к обоим своим представлениям, чтобы они были идеально центрированы на каждом выбранном экране, но когда я запускаю приложение на iPhone XSMax, внизу появляется белая полоса. Итак, я думаю, что делаю ошибку с моим верхним ограничением, как мне справиться с верхними ограничениями, когда у меня есть панель навигации?
func imageAndColorView() {
view.addSubview(imageView)
view.addSubview(colorView)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
imageView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
imageView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
imageView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
colorView.translatesAutoresizingMaskIntoConstraints = false
colorView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
colorView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
colorView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
colorView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
imageView.image = UIImage(named: BackgroundImageKey)
view.sendSubviewToBack(imageView)
view.insertSubview(colorView, aboveSubview: imageView)
}
Да, я назвал это на мой взглядDidLoad.
Не могли бы вы попробовать вызвать эту функцию в viewDidAppear.
@RajeshKumarR сделано
@ManojRlogical, почему это сработает? В моем коде есть проблема
Дело в том, что использование вашего кода в новом проекте, установка цвета bg для colorView и запуск на XSMax в iOS12 дает результат, отличный от вашего снимка экрана (он полностью заполняет представление сверху вниз). Какова ваша установка?
Кстати, вы можете просто поменять местами две первые строки, чтобы избежать переупорядочения в последних двух (хотя у вас уже есть правильный порядок, поэтому последние две строки в вашем коде сейчас избыточны)
Для iphoneX выше вы должны использовать safeAreaLayoutGuide в верхний якорь и нижний якорь.
func imageAndColorView() {
view.addSubview(imageView)
view.addSubview(colorView)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
imageView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
imageView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
imageView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
colorView.translatesAutoresizingMaskIntoConstraints = false
colorView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
colorView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true
colorView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
colorView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
imageView.image = UIImage(named: BackgroundImageKey)
view.sendSubviewToBack(imageView)
view.insertSubview(colorView, aboveSubview: imageView)
}
просто замените свою функцию этим кодом, он будет выглядеть так, и я надеюсь, что ваша проблема будет решена.
На самом деле все наоборот... ОП хочет избегать (то есть не использовать) безопасные области и заполнять все представление.
тогда не давайте safeAreaLayoutGuide в bottomAnchor
У меня есть еще один вопрос, могу ли я установить некоторые ограничения программно, а другие в раскадровке?
Добавьте скриншот с вашей проблемой