几天来我一直在努力解决与 UIScrollViews 相关的逻辑问题。我的目标是渲染一个温度 slider ,该 slider 从可变的最低温度开始并在最高温度停止。
为此,我每十个点画一条线,它应该代表一个度数。我希望 slider 从 0 摄氏度或 273 开尔文开始,并位于屏幕中间。所以我计算 273*10 并获得 UIScrollview 所需的起点。此外,我减去屏幕上一半的点,然后滚动到那里。当指定的最低温度 <= 0 时,它可以正常工作。
这是温度从 <= 0 开始并渲染时的结果:
如果我用开尔文进行整个操作,或者摄氏温度从 >0 开始, ScrollView 直到大约 -187 K 才会停止滚动,这当然不应该发生:
这是我现在使用的公式:
// CONTENT SIZE
self.universalRulerScroll.contentSize = CGSize(width: (maxTemp*10) + halfScreenWidth, height: scrollHeight)
// LEFT INSET
self.universalRulerScroll.contentInset.left = CGFloat(abs(minTemp)*10) + CGFloat(halfScreenWidth)
// SCROLL AT THE BEGINNING TO:
self.universalRulerScroll.contentOffset = CGPoint(x: -CGFloat(halfScreenWidth)+(zeroTemp*10), y: 0)
也许有人立刻就发现了逻辑错误?谢谢!
最佳答案
我不太懂你的数学。假设每个度数标记的宽度为 10 点(这就是您乘以 10 的原因),您可能需要类似以下内容:
let tempRange = maxTemp - minTemp // Width is number of degrees * 10 points
let zeroPosition = zeroTemp - minPosition // Zero position is offset by leftmost (minimum) degrees
self.universalRulerScroll.contentSize = CGSize(width: tempRange * 10, height: scrollHeight)
self.universalRulerScroll.contentOffset = CGPoint(x: zeroPosition * 10 + halfScreenWidth, y: 0)
关于ios - 如何更改 UIScrollView 行为以在 > 0 处开始滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54967953/