我有20个用户可以选择的项目。现在我想创建一个启用了分页的UIScrollView,它允许永久滚动。如果到达结尾,则附加开始,依此类推。
做这样的事情最简单的方法是什么?我担心当我达到y = 10000.0f的偏移时,它可能会影响记忆。不确定。
同样顺畅的“永久滚动体验”非常重要。因此,当达到结束时将偏移设置为0/0很可能无法正常工作......我记得我在一年前尝试过这种情况,并且UIScrollView将整个事情向后调整(错误的方向,从头到尾)偏移被设置为其他东西。
答案 0 :(得分:3)
大偏移不会消耗额外的内存;它只需要CoreAnimation处理大量数据。这很好,除了......
CGFloat是设备上的浮动(IIRC,它是Mac OS X上的双倍)。这意味着它可以表示高达约2 24 (约1670万)的整数,因此半整数高达约800万(并且“视网膜显示”具有半尺寸像素)。如果用户滚动很远,那么你将失去准确性。我不确定这究竟发生在哪里。您可以尝试将contentSize和contentOffset设置为非常大的值并查看会发生什么。
如果你真的需要UIDatePicker风格的“永远”滚动,你有几个选择:
scrollViewDidEndDragging:willDecelerate:
(但仅限于decelerate == NO
)scrollViewDidEndDecelerating:
scrollViewDidEndScrollingAnimation:
scrollViewDidScrollToTop:
(可能;我不确定它是否也会发送scrollViewDidEndScrollingAnimation)。这意味着如果用户尝试非常努力(一百万iPhone“点”约为160米),用户可以达到最终并弹跳。哦,好吧。