setNavigationBar 半透明将视图向下推

setNavigationBar translucent pushes view down

我有一个透明的视图 UINavigationBar 和一个 UITableView 在它下面大约 10px。有一个 UIImageView 背景中有一个很酷的多边形图像,我正在以 parallax-y 方式为视图转换设置动画。

这是透明导航栏的代码:

self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];

我根本没有为这个项目使用故事板

我在右下角还有一个浮动操作按钮。我添加到 titleView 的导航栏标题 UILabel 被替换为 UITextField,用于点击右侧导航按钮的搜索功能。发生这种情况时,我设置

self.navigationController.navigationBar.translucent = YES;

这一切都很好,除了通过设置 translucent = NO 视图将所有内容向下推导航栏的高度。

我可以拼凑一些框架更改来弥补这一点,但我想知道是否有更多标准做法解决方案。

你要设置的 属性 是 extendedLayoutIncludesOpaqueBars,如果这个 属性 设置为 YES 那么你的视图布局将与导航栏是半透明的一样。

您提到您没有使用故事板,但对于其他使用故事板的人,可以在 'Extend Edges' 部分下的视图控制器的属性检查器中设置,方法是勾选标题为 'Under Opaque Bars' 的复选框.