swift как изменить размер панели навигации из кода

#swift #navigationbar

#swift #панель навигации

Вопрос:

Я не могу добавить панель навигации из раскадровки, но мне это нужно. Я пытался так:

 let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 44))
    self.view.addSubview(navBar);
    let navItem = UINavigationItem(title: "SomeTitle");
    let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: nil, action: "selector");
    navItem.leftBarButtonItem = doneItem;
    navBar.setItems([navItem], animated: false);
  

Но я получаю что-то вроде этого:
введите описание изображения здесь

хорошо, как установить навигационную панель по центру и зафиксировать размер, как у обычной навигационной панели в представлении?
Я пробовал даже это:

 let xConstraint = NSLayoutConstraint(item: navBar, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0)
    NSLayoutConstraint.activateConstraints([xConstraint])
    self.view.addConstraint(xConstraint)
  

это не работает

Комментарии:

1. Вы уверены, что view то, что вы вызываете, занимает всю ширину экрана?

2. попробуйте встроить свой ViewController в UINavigationController в раскадровке

3. вы можете создать NavigationController программно и нажать или представить свой контроллер с помощью этого контроллера навигации.

Ответ №1:

Вы можете создать новый NavigationController и представить желаемый контроллер. Я предполагаю, что вы включены viewController1 и хотите представить viewController2 . Итак, вы можете сделать что-то вроде приведенного ниже

 let navigationController = UINavigationController(rootViewController: viewController2())
        navigationController.navigationBar.backgroundColor = UIColor.clearColor()
        navigationController.navigationBar.tintColor = UIColor.clearColor()
        navigationController.navigationBar.translucent = true
        // customize according to your need

        self.presentViewController(navigationController, animated: true, completion: {

        })