【问题标题】:UINavigationBar height and landscape modeUINavigationBar 高度和横向模式
【发布时间】:2011-10-20 04:03:18
【问题描述】:

如果我使用 UINavigationController 来显示我的 UINavigationBar,则此栏在横向模式下比在纵向模式下要细得多。

到目前为止一切都很好,因为我想要这种行为,但是我有一个不由 UINavigationController 处理的视图,所以我只是将 UINavigationBar 从 Interface Builder 拖放到视图中,但是这个总是相同的大小而且我看不到告诉 UINavigationBar 它应该调整大小的方法。

有人知道如何实现吗?

【问题讨论】:

    标签: iphone objective-c cocoa-touch uikit


    【解决方案1】:

    您可以在 UIView 的 layoutSubviews 方法中调整导航栏的大小,如下所示:

    - (void)layoutSubviews {
        [super layoutSubviews];
    
        // Let navBar tell us what height it would prefer at the current orientation
        CGFloat navBarHeight = [navBar sizeThatFits:self.bounds.size].height;
    
        // Resize navBar
        navBar.frame = CGRectMake(0, 0, self.bounds.size.width, navBarHeight);
    }
    

    【讨论】:

    • 那将navbar放在屏幕底部,不应该是CGRectMake(0, 0, self.bounds.size.width, navBarHeight) 吗?
    • 我在编写该代码时希望它位于底部,但通常是的。
    • 这对我不起作用。我在代码中做所有事情(而不是在 nib 中),我无法得到他的工作。有什么建议吗?
    • @BorutTomazin 该示例是针对 UIView 子类的,我怀疑您是在 UIViewController 子类中使用它,在这种情况下您应该改用 viewDidLayoutSubviews。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    相关资源
    最近更新 更多