gpt4 book ai didi

swift - UIScrollView setContentOffset 不对

转载 作者:可可西里 更新时间:2023-11-01 00:21:30 36 4
gpt4 key购买 nike

我有一个 UIScrollView,里面有一些标签。我可以使用按钮将 ScrollView 移动到另一个“页面”。但是当我推得太快时,偏移量不正确。

我将 ScrollView 移动到下一页的代码:

@IBAction func moveToRight(_ sender: Any) {
let size = Int(scrView.contentOffset.x) + Int(scrView.frame.size.width);
scrView.setContentOffset(CGPoint(x: size, y: 0), animated: true)
}

当我推得太快时,偏移量不正确。看起来当前动画停止了,将从当前(未完成)位置开始执行下一个动画。

有人对此有解决方案吗?

最佳答案

我没有时间进行测试,但我认为您对问题的主要原因的理解是正确的。由于 animated 设置为 true,我的猜测是 contentOffset.x 在动画完成之前尚未设置为其最终值。

你为什么不稍微改变你的逻辑并创建一个属性来记住你上次滚动的当前页面:

var currentPage: Int = 0

然后每次向右移动时,如果可能的话增加当前页码:

@IBAction func moveToRight(_ sender: Any) {
let maxX = scrollView.contentSize.x - scrollView.frame.width
let newX = CGFloat(currentPage + 1) * scrollView.frame.width
if newX <= maxX {
currentPage = currentPage + 1
scrollView.setContentOffset(CGPoint(x: newX, y: 0), animated: true)
}
}

关于swift - UIScrollView setContentOffset 不对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40818835/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com