在scrollview滚动时更改标签位置

时间:2019-01-15 14:56:40

标签: ios swift uiscrollview

我在滚动视图之外有一个标签。我想在滚动视图上下滚动时将标签从屏幕的左向右移动,反之亦然。我编写了这段代码,当滚动视图以正常速度滚动并且滚动速度非常快时,它的标签x位置变化非常缓慢。如何为所有scrollview滚动速度做到这一点?

func scrollViewDidScroll(_ scrollView: UIScrollView!) {

    let offset = scrollView.contentOffset.y
    let imahey = view.convert(placeImgview.frame, from:scrollview).origin.y + placeImgview.frame.width
    print(offset)
    let ratio: CGFloat = (-offset*1.0 / placeImgview.frame.height)
    topBarView.alpha =  -ratio
    if placeName.frame.origin.x < -20 {
        placeName.center = CGPoint(x: placeName.center.x - 3*ratio, y: placeName.center.y + ratio/1.5)
    }
    if (self.lastContentOffset > scrollView.contentOffset.y) {

            placeName.center = CGPoint(x: placeName.center.x + 6*ratio, y: placeName.center.y - 2*ratio)
        if offset == -20 {
            placeName.frame.origin.x = -view.frame.width/2
            placeName.frame.origin.y = 60
        }

    }

    self.lastContentOffset = scrollView.contentOffset.y
}

1 个答案:

答案 0 :(得分:1)

因此,问题在于滚动速度越快,scrollViewDidScroll事件之间的“间隙”就越大。

您可能应该考虑使用UIView.animate ...在标签周围移动,这将创建更一致的体验,因为动画始终具有相同的速度。 这样,您可以使用CGAffineTransform(translationX:,y:)应用动画 每当您的标签应显示或消失时,取决于contentOffset.y是否通过给定阈值。