uiview over uinavigationcontroller - PullRequest
0 голосов
/ 05 марта 2020

У меня проблема при добавлении uiview под контроллером навигации. почему мой пользовательский интерфейс находится над контроллером uinavigation, я хочу добавить свой пользовательский интерфейс в навигационный контроллер. navc это мой код.

let slideView = UIView()

view.backgroundColor = .white
        navigationItem.title = "Absensi"
        navigationController?.navigationBar.prefersLargeTitles = true
        navigationController?.navigationBar.barTintColor = .white
        navigationController?.navigationBar.shadowImage  = UIImage()
        navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "NunitoSans-SemiBold", size: 20)]
        navigationItem.leftBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "ic-back-line").withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(handleBack))


view.addSubview(slideView)
        slideView.backgroundColor = .red
        slideView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            slideView.topAnchor.constraint(equalTo: view.topAnchor),
            slideView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            slideView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            slideView.heightAnchor.constraint(equalToConstant: 80)
        ])

Ответы [ 3 ]

1 голос
/ 05 марта 2020

Установите ограничения относительно безопасной зоны.

1 голос
/ 05 марта 2020

Вы должны добавить топор в безопасную область -> view.safeAreaLayoutGuide.topAnchor

NSLayoutConstraint.activate([
    slideView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
    slideView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
    slideView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
    slideView.heightAnchor.constraint(equalToConstant: 80)
])
0 голосов
/ 05 марта 2020

просто попробуйте использовать фрейм вместо ограничения .. этот код должен работать

  override func viewDidAppear(_ animated: Bool) {
        let slideView = UIView(frame: CGRect(x: 0, y:
            navigationController?.navigationBar.frame.height ?? 0 + 20 ,width: UIScreen.main.bounds.width, height: 80))

        slideView.backgroundColor = .red
        slideView.translatesAutoresizingMaskIntoConstraints = false

        view.backgroundColor = .white
        navigationItem.title = "Absensi"
        navigationController?.navigationBar.prefersLargeTitles = true
        navigationController?.navigationBar.barTintColor = .white
        navigationController?.navigationBar.shadowImage  = UIImage()
        navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "NunitoSans-SemiBold", size: 20)]
        navigationItem.leftBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "ic-back-line").withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(handleBack))

        view.addSubview(slideView)            
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...