2010-11-01 34 views
1

因此,UISlider很适合改变/选择价值观,但它看起来并不好看。我想要实现的更像是一个水平旋转的表盘。我已经拥有了所有需要的图形,并且我已经实现了滚动视图来左右滑动我的图像。如何使用UIScrollView更改值,就像UISlider一样?

现在的问题是在UISlider中unlick,我可以简单地调用slider.value来获取它的值,我不知道如何设置一个范围值(最大值和最小值)以及如何获取特定值UIScrollView的滚动。

回答

3

我不得不承认如何将scrollview用作滑块,但是您可以使用contentOffset属性来获取“内容视图的原点偏离原点的点滚动视图“。

你需要做一些数学来把它变成你想要的值,但它很简单。假设你的滚动视图是水平的,并且可以滚动到400px。也就是说,如果contentOffset为0,那么你就开始了,如果contentOffset是400px,那么你就是最后一个。你如何使用scrollview将决定你是如何工作的,如果你绝望,那么你可以通过编程方式打印contentOffset的值,并凭经验观察范围。

在这种情况下,你可以得到的距离的跨越只需在像滚动视图比例:

CGFloat proportionOffset = scrollView.contentOffset/400.0f; 

然后,如果您想的范围内进行建模[startx的,endX]然后就摸出:

CGFloat offset = startX + proportionOffset * (endX - startX); 

proportionOffset范围为0结束了1,则在0时contentOffset是0和1时contentOffset是400。如果,比如说,是STARTX 15和endX是35然后endX - STARTX是20。如果您将范围为0到1的数字乘以20,那么您会得到范围为0到20的数字你想要的范围有多远。但是你的范围不一定从0开始,所以你需要添加startX的值。

对于效率条款,将自己设置为scrollview的委托并仅当您收到scrollViewDidScroll时才检查新的contentOffset是明智的:。否则,你会进行大量的轮询,而这绝对不是必要的,并且绝对最坏的情况是严重阻碍了CPU的睡眠能力(从而减少热量并节省电池)。

+0

谢谢,我会给你一个镜头,但它看起来像我所需要的 – cgossain 2010-11-02 05:42:27