如何从我在iOS中的视图访问导航控制器导航栏大小?

问题描述 投票:2回答:1

我正在以编程方式执行所有操作,并且没有故事板。我正在使用Swift2.0而且我是初学者。我的app结构非常简单:

在我的AppDelegate中,我正在初始化一个UINavigationController和一个ViewController,并将我的ViewController添加到我的navigationController中。

在我的ViewController,loadView()方法中,我初始化了我的视图:self.view = myView()

所以现在我在myView类中,我正在尝试构建我的视图(制作4个按钮,添加约束)。现在当我想制作我的按钮时,我需要知道navigationController的navigationBar尺寸(高度)。

如何从我的View类访问它?做这个的最好方式是什么?

谢谢。

ios swift xcode navigationbar navigationcontroller
1个回答
0
投票

如果您想要顶部条的精确高度(导航栏+状态栏),请尝试此操作:

Objective-C的

CGFloat topbarHeight = ([UIApplication sharedApplication].statusBarFrame.size.height +
       (self.navigationController.navigationBar.frame.size.height ?: 0.0));

斯威夫特4

let topBarHeight = UIApplication.shared.statusBarFrame.size.height +
        (self.navigationController?.navigationBar.frame.height ?? 0.0)

为方便起见,请尝试使用此UIViewController扩展

extension UIViewController {

    /**
     *  Height of status bar + navigation bar (if navigation bar exist)
     */

    var topbarHeight: CGFloat {
        return UIApplication.shared.statusBarFrame.size.height +
            (self.navigationController?.navigationBar.frame.height ?? 0.0)
    }
}

斯威夫特3

let topBarHeight = UIApplication.sharedApplication().statusBarFrame.size.height +
(self.navigationController?.navigationBar.frame.height ?? 0.0)
© www.soinside.com 2019 - 2024. All rights reserved.