如何在 iOS 7 中将 UINavigationBar 高度的高度从 64 点更改为 44 点?

Posted

技术标签:

【中文标题】如何在 iOS 7 中将 UINavigationBar 高度的高度从 64 点更改为 44 点?【英文标题】:How can I change the height of a UINavigationBar height from 64 to 44 points in iOS 7? 【发布时间】:2014-01-06 20:04:26 【问题描述】:

ios 7 中,UINavigationBarUINavigationController 中的高度扩展到 64 磅,这样它就可以在状态栏下方重叠。如何将高度更改为 44 点?

这是目前的样子:

【问题讨论】:

你可以设置y位置 【参考方案1】:

换句话说:如何防止UINavigationBar 覆盖状态栏?

正如 Jared Sinclair 在blog post 中所述(参见第 4 点):

UINavigationController 将根据一组相当奇怪且未记录的约束将其 UINavigationBar 的高度更改为 44 点或 64 点。如果 UINavigationController 检测到其视图框架的顶部与其 UIWindow 的顶部在视觉上是连续的,则它会绘制高度为 64 磅的导航栏。如果其视图的顶部与 UIWindow 的顶部不连续(即使仅相差一个点),则它以“传统”方式绘制其导航栏,高度为 44 点。这个逻辑由 UINavigationController 执行,即使它是应用程序的视图控制器层次结构中的几个子级。没有办法阻止这种行为。

使用自动布局,通过最初设置UINavigationController 的视图框架使其不与窗口的最佳。下面是一些示例代码:

- (void)viewDidLoad 

    UIViewController *viewController = [[UIViewController alloc] init];
    viewController.view.backgroundColor = [UIColor whiteColor];

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
    navigationController.view.frameHeight = [UIApplication sharedApplication].keyWindow.frameHeight - 20;
    navigationController.view.frameY = 20;

    [self addnavigationController:navigationController];
    [self.view addSubview:navigationController.view];
    [navigationController didMoveToParentViewController:self];

    // Set the frame initially so that the top of the UINavigationController's view doesn't line up with the top of the UIWindow's view
    navigationController.view.frame = (CGRect) 
        .origin.x = navigationController.view.frame.origin.x,
        .origin.y = 20,
        .size.width = navigationController.view.frame.size.width,
        .size.height = [UIApplication sharedApplication].keyWindow.frameHeight - 20
    ;


- (void)updateViewConstraints

    // Set your actual constraints here

这是结果的样子(注意UINavigationBar 的高度是 44 磅):

【讨论】:

以上是关于如何在 iOS 7 中将 UINavigationBar 高度的高度从 64 点更改为 44 点?的主要内容,如果未能解决你的问题,请参考以下文章

如何将按钮添加到 UINavigation 项?

如何在 iOS 7 中将 UITableView 添加到 UIAlertView

如何在 iOS 7 中将 UINavigationBar 高度的高度从 64 点更改为 44 点?

应用程序的 ios 11 颜色(uinavigation)

如何在 iOS 7 中将 CSV 文件关联到我的应用程序

如何在iOS中将字符串转换为xml? (目标 C,xcode 7.2)