Swift:如何在不添加工具栏的情况下更改导航控制器的高度

时间:2015-07-16 01:09:53

标签: ios swift uinavigationcontroller uisegmentedcontrol uinavigationitem

如何在不添加工具栏的情况下更改导航控制器的高度? 这是我想要构建的苹果iBooks应用程序的示例。 我有一个解决方案,但并不完美(在导航控制器下面添加一个工具栏,但它非常难看)

ibook Nav Controller is perfect

I added a toolbar below the nav controller

1 个答案:

答案 0 :(得分:2)

我认为这就是你想要的, 截图

您无法更改导航栏高度,但可以在其下放置一个视图,并使用自动布局和阴影使其看起来像导航栏的一部分。将其设置为您创建的类<​​/ p>

  1. 编写视图以充当扩展栏

    class ExtendNavView:UIView{
        override func willMoveToWindow(newWindow: UIWindow?) {
           let scale = UIScreen.mainScreen().scale
           self.layer.shadowOffset = CGSizeMake(0, 1.0/scale)
    
           self.layer.shadowRadius = 0;
           self.layer.shadowColor = UIColor.blackColor().CGColor
           self.layer.shadowOpacity = 0.25
         }
     }
    
  2. 拖动UIView并将其放在navBar下,然后设置autolayout以使其始终位于导航栏下 enter image description here

  3. 更改viewController中的navBar属性

    class ViewController: UIViewController {
        override func viewDidLoad() {
            self.navigationController?.navigationBar.translucent = false
            self.navigationController?.navigationBar.shadowImage = UIImage(named: "TransparentPixel")
         self.navigationController?.navigationBar.setBackgroundImage(UIImage(named:"Pixel"), forBarMetrics:UIBarMetrics.Default)
    
          }
      }
    
  4. 此处使用的两个图像(注意:它们是半透明的

    像素

    url =“http://i.stack.imgur.com/gFwyN.png

    TransparentPixel

    url =“http://i.stack.imgur.com/zpQw4.png

    您还可以查看Apple示例项目,也可以在那里找到两个图像 https://developer.apple.com/library/ios/samplecode/NavBar/Introduction/Intro.html