iOS 11在推送视图控制器时导航栏出现黑色条纹

22

我在iOS 11中遇到了一个奇怪的bug,在较低版本的iOS中一切正常。 问题是每当推送到一个视图控制器时,导航栏顶部会出现黑色空白区域。有其他人遇到过这个问题吗?如何解决?

Pushing


1
发布你的代码,从一张图片中找出某些东西就像是瞎猜一样。 - mlegg
@mlegg 这只是普通的pushViewController。这个bug在应用程序的任何地方都会发生,而不仅仅是一个地方。此外,在iOS10、iOS9和iOS8中,它都可以正常工作。 - Tung Vo Duc
1
你能检查一下 print(view.safeAreaInsets) 吗? - Vini App
我检查了一下,全都是零。 - Tung Vo Duc
你修复过这个问题吗?我也遇到了同样的问题。 - Tometoyou
我也遇到了同样的问题,有人找到了正确的解决方案吗? - Ravi Raja Jangid
3个回答

54

问题在于,如果您的视图大小比导航控制器视图大小要小,则在双倍速度的情况下会出现问题。

因此,在滚动视图时,内容偏移量的变化会导致视图框架发生变化,并且它的速度也会加倍。
那就可以解释这种行为了。请尝试以下步骤来解决问题。

extendedLayoutIncludesOpaqueBars = true

您应该将此行添加到您的UIViewControllerUITableViewControllerUICollectionViewController中。


2
救星 :) 完美运作 - Ankit Kumar Gupta
2
优秀的解决方案 - Tushar Korde
2
使用UICollectionViewController和UISearchController非常顺畅。非常感谢! - RuslanDev
1
这仍然是最佳方法。 - Milander

6
您可以为iOS 11的搜索栏添加高度44的约束。
if #available(iOS 11.0, *) {
    searchBar.heightAnchor.constraint(equalToConstant: 44).isActive = true
}

这个解决方案将减小 iPhone X 中搜索栏的高度。 - Bill Chan

1
我有相同的问题,并通过在视图消失期间从父控制器中删除以下代码来解决它: self.navigationController?.setNavigationBarHidden(true, animated: animated)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接