【问题标题】:iOS 7 UINavigationBar - UIView layout issueiOS 7 UINavigationBar - UIView 布局问题
【发布时间】:2013-09-18 07:30:55
【问题描述】:

布局有问题。

这是它在 iOS6 上的样子:

这是在 iOS7 上的外观:

不过没关系。 就像Apple's iOS7 TransitionGuide 中描述的那样 我在- (void)viewDidLoad又写了一笔

        self.edgesForExtendedLayout = UIRectEdgeNone;

现在它看起来像这样:

有什么建议吗?我的布局有什么问题? 我想要纯蓝色 UINavigationBar。而且不知道为什么顶部是透明的。 有什么想法,为什么看起来如此奇怪?我该如何解决这个问题?

【问题讨论】:

    标签: iphone uitableview user-interface ios7 uinavigationbar


    【解决方案1】:

    试试navigationBar.translucent = NO;

    默认为YES

    来自UINavigationBar 文档:

    iOS 7 上的新行为。默认为 YES。你可以强制一个不透明的 通过将属性设置为 NO 来设置背景。如果导航栏有 自定义背景图片,默认从 alpha 推断 图像的值——如果它有任何 alpha

    【讨论】:

    • 好的,谢谢!它部分解决了问题,但现在颜色看起来完全不同。我希望,存在使navigationBar 半透明的方法,但修复tableView 的布局。你怎么看?
    • 可能包括这不能在-viewDidLoad: 中完成。我一生都无法弄清楚为什么它不起作用,这就是原因。请务必将其放在 -viewWillAppear: 中。
    【解决方案2】:

    将此行添加到您的“视图将出现”方法中(如果不存在,请键入:

    - (void)viewWillAppear:(BOOL)animated
    {
    
        [super viewWillAppear:animate];
    
    }
    

    )

    然后,在 viewWillAppear 的底部,在 [self viewWillAppear:] 行下方,添加以下代码:

    if([self respondsToSelector:@selector(edgesForExtendedLayout)])
        [self setEdgesForExtendedLayout:UIRectEdgeBottom];
    

    这将使顶部栏(导航栏)变得不透明。在 iOS 7 中,Obj-C 现在对导航栏是否设置为不透明做出不同的响应,这是一个很好的方法来证明它在 iOS 6 和 7 中都可以工作(这样做有一些问题:

    navigationBar.translucent = NO;
    

    )

    希望这会有所帮助,我在将应用程序转换为 iOS 7 时遇到了同样的问题,并且花了很长时间才找到解决方案!

    【讨论】:

    • 我相信你的意思是[super viewWillAppear:animate]。否则这是一个无限循环。
    • 这也解决了我的应用程序在设备和模拟器之间的行为不同的问题——只有设备需要 64pt 的状态/导航栏偏移量。添加 setEdges... 代码就像一个魅力。非常感谢。
    【解决方案3】:

    在 IOS7 UINavigationBar 样式默认为半透明,因此它将隐藏视图 Content Underneath,以显示您的内容

    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
    
        if([self respondsToSelector:@selector(edgesForExtendedLayout)])
            [self setEdgesForExtendedLayout:UIRectEdgeBottom];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-23
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      相关资源
      最近更新 更多