Кнопка не видна при размещении UIView перед Nav Bar - PullRequest
0 голосов
/ 22 июня 2019

У меня есть UIView, у которого есть кнопка, я добавил круглую рамку вокруг кнопки, используя UIView, кнопка работает и отлично позиционируется, и я хочу UIView перед панелью навигации, но как только я добавляю UIViewперед панелью навигации кнопка исчезает, но перед панелью навигации появляется UIVew.

let viewBar = UIView()

let userProfileView = UIView()
let userProfileButton = UIButton(type: .custom)

override func viewDidLoad() {
    super.viewDidLoad()

    view.backgroundColor = .red
    setupNextButton()
    setupViewBar()
    setupUserProfileButton()
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    // To Bring the viewBar in front of the navigation bar        
    self.navigationController?.view.addSubview(viewBar)
}

func setupViewBar() {

    viewBar.backgroundColor = UIColor.init(red: 0, green: 0, blue: 0, alpha: 0.5)

    view.addSubview(viewBar)
    addNavigationBarConstraints()
}

func setupUserProfileButton() {

    userProfileButton.setImage(#imageLiteral(resourceName: "profilePictureSmall.png"), for: .normal)
    userProfileButton.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
    userProfileButton.addTarget(self, action: #selector(profilePictureTapped), for: .touchUpInside)

    userProfileView.layer.cornerRadius = 20
    userProfileView.layer.borderWidth = 1.5
    userProfileView.clipsToBounds = true
    userProfileView.layer.borderColor = UIColor.black.cgColor

    userProfileView.addSubview(userProfileButton)

    //viewBar.addSubview(userProfileView)
    view.addSubview(userProfileView)
    addUserProfileButtonConstraints()

}

Ниже приведены ограничения для кнопки профиля пользователя и панели просмотра

func addViewBarConstraints() {

    viewBar.translatesAutoresizingMaskIntoConstraints = false
    viewBar.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    viewBar.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    viewBar.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    viewBar.heightAnchor.constraint(equalToConstant: 100).isActive = true

}

func addUserProfileButtonConstraints() {

    userProfileView.translatesAutoresizingMaskIntoConstraints = false
    userProfileView.topAnchor.constraint(equalTo: viewBar.safeAreaLayoutGuide.topAnchor, constant: 5).isActive = true
    userProfileView.trailingAnchor.constraint(equalTo: viewBar.safeAreaLayoutGuide.trailingAnchor, constant: -15).isActive = true
    userProfileView.widthAnchor.constraint(equalToConstant: 40).isActive = true
    userProfileView.heightAnchor.constraint(equalToConstant: 40).isActive = true

}
* 1006.* Как я могу заставить кнопку появляться?Я также добавил несколько изображений.

UIView without navigation bar

UIView with (In front of) navigation bar

1 Ответ

0 голосов
/ 22 июня 2019

Панель навигации располагается сверху стека представлений, поэтому она скрывает ваш красный UIView. Поэтому, по сути, вам нужно добавить кнопку на панель навигации вместо того, чтобы добавить ее в UIView:

    let barButton = UIBarButtonItem(customView: userProfileButton)
    self.navigationItem.rightBarButtonItem = barButton
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...