如何防止在横向上自动调整 UINavigationBar 的大小

Posted

技术标签:

【中文标题】如何防止在横向上自动调整 UINavigationBar 的大小【英文标题】:How to prevent autoresizing UINavigationBar on Landscape 【发布时间】:2011-08-11 09:09:36 【问题描述】:

一般情况下,在横向模式下,导航控制器控制的导航栏会自动缩小尺寸。

但我想阻止自动调整大小。

首先,我将导航栏设置为隐藏,并使用了另一个不受导航控制器控制的导航栏。所以,我解决了这个问题。但我想找到在不使用不受导航控制器控制的另一个栏的情况下禁用自动调整横向导航栏的方法。

【问题讨论】:

为什么要这样做?这是标准的 ios 行为。 @nielsbot 看看横向的 iOS 7 Safari ;) 【参考方案1】:

我通过在 UINavigationBar 上创建一个类别解决了这个问题:

@implementation UINavigationBar (customHeight)

- (CGSize)sizeThatFits:(CGSize)size

    CGSize newSize = CGSizeMake(self.frame.size.width,44);
    return newSize;


@end

创建类别后,高度现在固定为 44 - 我什至不需要在任何地方导入类别。

我的应用使用情节提要,但我很确定它会以任何一种方式工作。

【讨论】:

虽然这解决了问题,但尝试使用类别来覆盖方法并不是一个好习惯。您应该在子类中执行此操作。在这里阅读更多:developer.apple.com/library/ios/documentation/Cocoa/Conceptual/… 此解决方案适用于导航栏,但它会将我的工具栏从视图底部向上移动 10px 左右... 这会导致栏中的元素不再垂直居中。有什么办法解决吗?【参考方案2】:

这适用于 iOS 8

extension UINavigationBar 
    public override func sizeThatFits(size: CGSize) -> CGSize 
        var newSize = CGSizeMake(UIScreen.mainScreen().bounds.width, 44)
        return newSize
    

【讨论】:

请通过简短的说明如何以及为什么来教育提问者和我们所有人。这样,您不仅可以希望得到 jinbruce627 的支持,还可以得到其他用户的支持。

以上是关于如何防止在横向上自动调整 UINavigationBar 的大小的主要内容,如果未能解决你的问题,请参考以下文章

当 XIB 没有时,UIImageView 在模拟器中调整大小

自动布局可以调整 UITableView 的大小以在 ipad 上纵向增长和横向缩小吗?

如何让约束自动调整大小和重新定位横向键盘键

当应用程序以横向模式启动时如何将视图调整为横向模式

如何防止在 UINavigationbar 上同时触摸按钮的双重动作?

如何防止 UIImageView 使用 Autolayout 调整大小