首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将UIScrollView行为更改为在> 0开始滚动?

如何将UIScrollView行为更改为在> 0开始滚动?
EN

Stack Overflow用户
提问于 2019-03-03 10:38:47
回答 1查看 70关注 0票数 0

几天来,我一直在为与UIScrollViews相关的逻辑问题而挣扎。我的目标是渲染一个温度滑块,从可变的最低温度开始,在最高温度停止。

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

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

如果我用开尔文做了整件事,或者温度从>0开始,滚动视图直到-187 K才停止滚动,这当然不应该发生:

这是我现在使用的公式:

代码语言:javascript
运行
复制
// 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)

也许有人一开始就看到了逻辑错误?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-03-03 23:44:39

我不太了解你的数学。假设每个学位分数都是10分(这就是为什么你要乘以10),你可能想要这样的东西:

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54967953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档