如何更改UIScrollView行为以从> 0开始滚动?

时间:2019-03-03 10:38:47

标签: ios swift uiscrollview

几天来,我一直在努力解决与UIScrollViews有关的逻辑问题。我的目标是渲染一个从可变的最低温度开始到最高温度停止的温度滑块。

为此,我每十个点画一条线,该线应代表一个度数。我希望滑块从0摄氏度或273开氏度开始,并位于屏幕中间。因此,我计算 273 * 10 并获得所需的UIScrollview起点。另外,我减去屏幕上的一半点,然后在那儿滚动。当指定的最低温度为<= 0时,它可以正常工作。

这是当温度从<= 0开始并呈现时的结果:

slider beginning under zero

如果我用开尔文(Kelvin)进行整个操作,或者摄氏温度从> 0开始,则Scrollview直到约-187 K才停止滚动,这当然不应该发生:

enter image description here

这是我现在使用的公式:

Rational operator + (const Rational & lhs, const Rational & rhs)
{
    Rational r((lhs.numerator() * rhs.denominator()) + (lhs.denominator() * rhs.numerator()), lhs.denominator() * rhs.denominator());
    return r;
}

也许有人马上就发现了逻辑错误?谢谢!

1 个答案:

答案 0 :(得分: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)