如何防止在Landscape上自动调整UINavigationBar

时间:2011-08-11 09:09:36

标签: iphone uinavigationbar landscape

通常,在横向模式下,导航控制器控制的导航栏会自动缩小其尺寸。

但我想阻止这种自动化。

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

2 个答案:

答案 0 :(得分:5)

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

@implementation UINavigationBar (customHeight)

- (CGSize)sizeThatFits:(CGSize)size
{
    CGSize newSize = CGSizeMake(self.frame.size.width,44);
    return newSize;
}

@end

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

我的应用程序使用故事板,但我很确定它会以任何方式工作。

答案 1 :(得分:2)

这适用于iOS 8

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