在滚动视图滚动时更改标签位置
Change a label position while scrollview is scrolling
我在滚动视图之外有一个标签。我想在 scrollview 向上滚动时将标签从屏幕的左侧移动到右侧,反之亦然,并且 down.I 编写了这段代码,当 scrollview 以正常速度滚动并且滚动速度非常快时标签 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
}
所以,问题是滚动得越快,"gap" 进入 scrollViewDidScroll 事件之间的范围就越大。
您可能应该考虑使用 UIView.animate 来移动您的标签...这将创建更一致的体验,因为动画始终具有相同的速度。
这样您就可以使用 CGAffineTransform(translationX: , y: ) 应用动画
取决于你的 contentOffset.y 是否超过给定的阈值,每当该标签应该出现或消失时。
我在滚动视图之外有一个标签。我想在 scrollview 向上滚动时将标签从屏幕的左侧移动到右侧,反之亦然,并且 down.I 编写了这段代码,当 scrollview 以正常速度滚动并且滚动速度非常快时标签 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
}
所以,问题是滚动得越快,"gap" 进入 scrollViewDidScroll 事件之间的范围就越大。
您可能应该考虑使用 UIView.animate 来移动您的标签...这将创建更一致的体验,因为动画始终具有相同的速度。 这样您就可以使用 CGAffineTransform(translationX: , y: ) 应用动画 取决于你的 contentOffset.y 是否超过给定的阈值,每当该标签应该出现或消失时。