ios - 如何从我的 iOS View 访问导航 Controller 导航栏大小?

标签 ios swift xcode navigationbar navigationcontroller

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

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

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

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

如何从我的 View 类访问它?执行此操作的最佳方法是什么?

谢谢。

最佳答案

如果你想要顶栏(导航栏+状态栏)的精确高度,试试这个:

objective-C

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

swift 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)
    }
}

swift 3

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

关于ios - 如何从我的 iOS View 访问导航 Controller 导航栏大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35610785/

相关文章:

objective-c - Xcode 4.5.2 (Mountain Lion) 中的命令行选项

ios - 在 UITableview 上滑动删除而不确认

android - 代号一 - 从 FormulA 到 Form 再到 Form C 的过渡

ios - 从 NSString iOS 转换为 double 后我想要相同的值

ios - 圆形 UITableViewCell 仅底部或顶部角,但它不适用于 Swift iOS 10

ios - AWS S3 iOS 开发工具包 : How to resume upload after connection is interrupted?

javascript - 修改WKWebView中不存在的DOM元素

html - Xcode 发现字符串中 HTML 代码的语法错误

ios - 自动布局 UITextfield

ios - SKStoreReviewController requestReview() 如果用户对应用进行评分,系统将永远不会提示他对我们进行评分吗?