gpt4 book ai didi

cocoa-touch - 添加一个 UINavigationController 作为 UIView 的 subview

转载 作者:行者123 更新时间:2023-12-03 23:27:44 25 4
gpt4 key购买 nike

我正在尝试在 UINavigationController 之上显示 UILabel。问题是当我将 UILabel 添加为 UIWindow 的 subview 时,它不会自动旋转,因为它不是 UIViewController 的 subview (UIViewController 在旋转过程中自动处理更新 subview )。

这是我使用的层次结构:

  • 界面窗口
  • UILabel
  • UINavigationController

  • 所以我想我可以使用以下层次结构:
  • 界面窗口
  • View Controller
  • 界面 View
  • UILabel
  • UINavigationController

  • 这样,标签可以显示在 UINavigationController 栏的顶部,同时也可以自动旋转,因为它是 UIViewController 的 subview 。

    问题是,当我尝试添加 UINavigationController 作为 View 的 subview 时:
    [myViewController.view addSubview:myNavigationController.view];

    它将向下显示 20 个像素。我猜这是因为它认为它需要为状态栏腾出空间。但是,由于 UINavigationController 被放置在不覆盖在状态栏顶部的 UIView 中,它错误地添加了额外的 20 个像素。换句话说,UINavigationBar 的顶部位于屏幕的 40 像素标记处,而不是 20 像素。

    有没有什么简单的方法可以将 UINavigationController 及其所有元素(例如导航栏、工具栏、根 View Controller )向上移动 20 像素?或者让它知道它不应该补偿状态栏?

    如果没有,我想我需要使用上面提到的第一个层次结构并弄清楚如何旋转标签,使其与导航栏的旋转一致。我在哪里可以找到有关如何执行此操作的更多信息?

    注意:通过“在导航栏顶部显示标签”,我的意思是它应该覆盖在导航栏的顶部......它不能简单地包裹在一个栏按钮项目中并作为导航栏。

    最佳答案

    使用此代码似乎有效:

    nav.view.frame = CGRectMake(nav.view.frame.origin.x, nav.view.frame.origin.y - 20,
    nav.view.frame.size.width, nav.view.frame.size.height);

    我在将导航 Controller 添加为 subview 之前这样做了。使用 [UIApplication sharedApplication].statusBarFrame 而不是硬编码的 20 也可能是一个好主意。

    我不确定这是否是最好的方法。

    关于cocoa-touch - 添加一个 UINavigationController 作为 UIView 的 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526990/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com