我有一个包含常规UIView和UIScrollView的视图。 UIView位于UIScrollView屏幕上方。 UIScrollView通常占据整个屏幕。 (应该注意的是,我没有使用Autolayout)。当用户滚动到scrollview内容的顶部时,我希望UIView开始出现在屏幕上。当它达到某个阈值时,UIView会卡入到位并占据屏幕。
我最初的想法是使用UIScrollView委托方法,并在scrollview contentOffset.y值为负时调整superview.frame.orgin.y值。
func scrollViewDidScroll(scrollView: UIScrollView) {
pullDownInProgress = scrollView.contentOffset.y <= 0.0
if pullDownInProgress {
self.view. = (-self.view.height / 2) - scrollView.contentOffset.y
}
}
但是,由于scrollview弹跳设置,这会在UIView和UIScrollView之间创建拉伸。如果我关闭反弹设置,那么scrollview.contentOffset永远不会小于零,因此我的超级视图帧永远不会被调整。
有关如何完成此任务的任何建议?
答案 0 :(得分:0)
您不需要更改superview.frame,而是将屏幕外视图的高度向下移动,以便它可以显示,并且滚动视图的任何弹跳效果都可能被该视图隐藏。或者您甚至可以使用屏幕外视图的高度移动滚动视图和屏幕外视图。这取决于你的屏幕外视图是否透明