Swift4: Как установить ограничение сверху, когда у вас есть контроллер навигации? - PullRequest
1 голос
/ 10 апреля 2019

снимок экрана Я создал вид, куда я помещаю вид изображения и вид.Я программно добавил ограничения к обоим видам, чтобы они идеально центрировались на каждом выбранном мной экране, но при запуске приложения на 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)
}

Да, я назвал это в моем viewDidLoad.

1 Ответ

2 голосов
/ 10 апреля 2019

Для iphoneX выше вы должны использовать safeAreaLayoutGuide в topAnchor и bottomAnchor .enter image description here

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)
    }

просто замените вашу функцию этим кодом, это будет выглядеть так, и я надеюсь, что ваша проблема будет решена.

...