我在UIViewController中有一个集合视图。视图控制器还具有另一个UIView(我们将其称为welcomeView),它位于集合视图的上方。当我滚动浏览集合视图时,我希望welcomeView随之滚动。我已经看过这个答案https://stackoverflow.com/a/43215801/5124961,几乎可以总结出ID看起来的样子,减去了粘贴在顶部的视图。该解决方案的唯一问题是我的collectionView已经有一个标头,因此将welcomeView添加为集合视图的子层会将其添加到我不想要的已经存在的标头下。
只需使用以下代码段即可:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let offset = collectionView.contentOffset.y
if(offset > 0){
self.welcomeView.frame = CGRect(x: 0, y: -offset, width: self.view.bounds.size.width, height: 100)
}else{
self.welcomeView.frame = CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: 100)
}
}
我得到这种效果:
我认为收集视图的框架必须根据偏移量而变化,但是不太确定如何在使用偏移量后实现此目的。我也看过其他一些与我类似的问题,但是这些问题是我不太熟悉的目标C。有没有人有办法解决吗?谢谢。
答案 0 :(得分:0)
如果我从您的捕获中正确猜出,则您的欢迎视图不会覆盖集合视图。
基于此猜测,解决方案将是:
contentInset
属性(contentInset
的{{1}}应该与欢迎视图的属性相同高度)。top
和委托调用,可以确保在集合视图和欢迎视图的内容之间没有重叠。