UINavigationbar 提示与屏幕内容重叠

Posted

技术标签:

【中文标题】UINavigationbar 提示与屏幕内容重叠【英文标题】:UINavigationbar Prompt overlaps the screen content 【发布时间】:2013-10-18 23:00:13 【问题描述】:

遇到了一个奇怪的问题。如果我在导航控制器上设置提示,导航栏会与屏幕内容重叠。处理这个问题的正确方法是什么?

    -(id)initwithsomestuff:(stuff)
    
...
    self.title = @"My Title";
    self.navigationItem.prompt = "@Prompt";
...
    

当这个视图控制器被推上时,它首先出现,然后调整它的导航栏的大小以在其中显示提示。但这有一个令人讨厌的副作用,即不调整下面屏幕内容的大小,并且涵盖了我在屏幕上实际需要的大量内容。

处理此问题的首选方法是什么?如果有帮助,布局在 xib 中。

【问题讨论】:

【参考方案1】:

您遇到的一个问题是您的 init 函数需要调用 super.按照你的例子,它看起来像这样:

- (id)initWithSomeStuff:(id)stuff

    self = [super init];
    if (self) 
        self.title = @"My Title";
        self.prompt = @"Prompt";
    
    return self;

接下来,您是在针对 ios 7 进行开发吗?默认情况下,使用导航栏覆盖内容的预期行为。如果您想抑制这种行为,请在您的视图控制器上执行以下操作:

self.edgesForExtendedLayout = UIRectEdgeNone; 
self.extendedLayoutIncludesOpaqueBars = NO; 

您也可以在故事板的视图控制器上设置这些。它们显示在“属性”选项卡的“延伸边”下。

【讨论】:

感谢 self = [super init] 的存在......为了简洁起见,我把它放在这里了。 edgesForExtendedLayout 解决了这个问题。

以上是关于UINavigationbar 提示与屏幕内容重叠的主要内容,如果未能解决你的问题,请参考以下文章

底部导航栏与 Jetpack Compose 中的屏幕内容重叠

UINavigationBar 和view 重叠覆盖问题

UINavigationBar 和 UINavigationController 的内容之间的差距

UINavigationBar 标题文本部分显示在屏幕上

使用响应式 Twitter Bootstrap 内容重叠水平表单的问题

UINavigationBar + UITabBar 的可用屏幕高度