UIScrollView和PanGestureRecognizer

时间:2016-02-03 23:57:54

标签: ios uiview uiscrollview uigesturerecognizer

我有一个包含常规UIView和UIScrollView的视图。 UIView位于UIScrollView屏幕上方。 UIScrollView通常占据整个屏幕。 (应该注意的是,我没有使用Autolayout)。当用户滚动到scrollview内容的顶部时,我希望UIView开始出现在屏幕上。当它达到某个阈值时,UIView会卡入到位并占据屏幕。

enter image description here

我最初的想法是使用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永远不会小于零,因此我的超级视图帧永远不会被调整。

有关如何完成此任务的任何建议?

1 个答案:

答案 0 :(得分:0)

您不需要更改superview.frame,而是将屏幕外视图的高度向下移动,以便它可以显示,并且滚动视图的任何弹跳效果都可能被该视图隐藏。或者您甚至可以使用屏幕外视图的高度移动滚动视图和屏幕外视图。这取决于你的屏幕外视图是否透明