【问题标题】:How to access NavigationController's navigation bar size from my View in iOS?如何从我的 iOS 视图中访问导航控制器导航栏的大小?
【发布时间】:2016-02-24 19:02:30
【问题描述】:

我以编程方式做所有事情,并且没有情节提要。我正在使用 Swift2.0,我是初学者。我的应用结构很简单:

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

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

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

如何从我的 View 类中访问它?最好的方法是什么?

谢谢。

【问题讨论】:

  • "所以现在我在 myView 类" 到底在哪里?你是什​​么方法?这对你能做什么有很大的影响。
  • 现在,在我的 init 方法中,我正在调用一个方法来完成视图的所有布局(添加所有按钮和约束)

标签: ios swift xcode navigationbar navigationcontroller


【解决方案1】:

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

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    相关资源
    最近更新 更多