我有一个
UICollectionView
与内容,我想滚动下面的透明导航栏。我还有一个
UIView
包含
UISearchBar
用户可以通过点击导航栏上的按钮进行切换:
如上图所示,这对于没有凹口的设备很有效。我通过将内容插入顶部设置为
searchController.searchBar.frame.size.height
内容偏移到
-collectionView.contentInset.top - (navigationController?.navigationBar.frame.size.height ?? 0) - UIApplication.shared.statusBarFrame.size.height)
.
对于带有槽口的设备,当搜索栏第一次显示时,搜索栏和内容之间存在间隙。然后,当我开始搜索时,间距是正确的。如果我取消,内容不适合在屏幕上(也就是说,集合视图是可滚动的),则会出现搜索栏大小的间隙。如果内容确实适合屏幕,就没有这样的间隙。
这些约束在情节提要中设置。我唯一能找到我想要的行为的方法是将集合视图顶部约束到顶部布局指南底部-64,这当然不理想。
很明显,我的心理模型出了问题。如何在有或没有凹口的设备上获得所需的行为,并理想地避免约束中的幻数?