几天来,我一直在为与UIScrollViews相关的逻辑问题而挣扎。我的目标是渲染一个温度滑块,从可变的最低温度开始,在最高温度停止。
为此,我每十点画一条线,这应该代表一个程度。我希望滑块从0摄氏度或273开尔文开始,并定位在屏幕中央。因此,我计算了273*10并得到了所需的UIScrollview起点。另外,我在屏幕上减去一半的点数,然后在那里滚动。当指定的最低温度为<= 0时,它可以正常工作。
这是当温度从<= 0开始并呈现时的结果:

如果我用开尔文做了整件事,或者温度从>0开始,滚动视图直到-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)也许有人一开始就看到了逻辑错误?谢谢!
发布于 2019-03-03 23:44:39
我不太了解你的数学。假设每个学位分数都是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)https://stackoverflow.com/questions/54967953
复制相似问题