隐藏 uitoolbar 在顶部留下空隙

Posted

技术标签:

【中文标题】隐藏 uitoolbar 在顶部留下空隙【英文标题】:hiding uitoolbar leaves gap at the top 【发布时间】:2012-04-29 21:17:26 【问题描述】:

我在一个导航堆栈中拥有三个视图控制器。第一个视图控制器不使用 uitoolbar,第二个使用,第三个不使用。

问题是,当我从第二个 UIViewController 转到第三个 UITableViewController 时,如果我隐藏工具栏,屏幕顶部会出现一个空白。

这是一张照片:

我目前有[self.navigationController setToolbarHidden:YES animated:YES]; 在第二个视图控制器的 viewWillDisappear 中,但我也把它放在了第三个视图控制器的 viewWillAppear 方法中。两者都会导致出现差距。

我该如何解决这个问题?

【问题讨论】:

什么时候隐藏工具栏?推送之前还是之后,用什么方式? 我更新了问题来回答你的问题。 【参考方案1】:

首先,我建议使用setToolbarHidden:YES animated:NO 让新的 UIViewController 出现而没有工具栏。我认为您的方法最初会显示它然后消失,对吗?如果你使用animated:NO(或者使用没有animated:的方法签名),当第三个UIViewController被推到屏幕上时,新的UIViewController应该“推”出第二个UIViewController的UIToolbar。

其次,您可能需要在 Interface Builder 中查看您的 UIViewController 视图的震动和支撑。这几乎肯定是造成这种差距的原因。您可能希望拥有固定的顶部和底部边距以及灵活的高度。

【讨论】:

表格视图的支柱连接到屏幕的顶部、底部、左侧和右侧。 你有灵活的身高吗?即上下双箭头是否被点击? 是的。这是一个 UITableViewController,它不会让我改变它。【参考方案2】:

我会回答我自己的问题,但我不会接受它,因为它很老套。

我可以通过在 viewDidLoad 的开头添加这行代码来修复它:

[self.tableView setFrame: CGRectMake(0, 0, 320, 493)];

基本上,我将 tableview 框架的高度设置为比全屏尺寸(320 x 480)大 13 像素。

【讨论】:

虽然这可能在短期内奏效,但请相信我,你最好弄清楚如何优雅地做到这一点,因为你可能需要在横向的不同应用程序中使用相同的功能,因为iPad 等。

以上是关于隐藏 uitoolbar 在顶部留下空隙的主要内容,如果未能解决你的问题,请参考以下文章

添加子视图会在子视图和导航栏之间留下空隙

隐藏 UIToolbar UIBarButtonItems

是否可以隐藏带有动画的 UIToolbar?

更改条形色调颜色使模糊区域变为黑白

ios15在隐藏导航栏时向后半滑动会留下顶部空白空间 - SwiftUI

试图用隐藏的 UINavigationBar 实现持久的 UIToolBars 似乎正在操纵未记录的 View 类