UIScrollView 求当前页数的算法求解!


看到网上很多都是这样写的:


 CGFloat pageWidth = self.scrollView.frame.size.width;
int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;

但是我这样也可以:


 self.scrollView.contentOffset.x/pageWidth

请问我这样直接除下来和上面有什么不同的? 第一个算法是什么意思呢?

ios uiscrollview objective-c

用户名只是浮云 10 years, 9 months ago

举个例子吧
一页的width为320
用方法1的结果
情况1:
contentoffset小于320+160,即在第二页的左半部分,(self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth的结果是0.xxxx,floor结果为0,计算结果为1,即会回到第一页
情况2:
contentoffset大于320+160,即在第二页的右半部分,(self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth的结果是1.xxxx,floor结果为1,page计算结果为2,即会进入第二页

用方法2的结果
self.scrollView.contentOffset.x/pageWidth计算结果都为1.xxx
而page是int类型,系统根据四舍五入自动强制转型

以上为个人理解。。。

深蓝色De救赎 answered 10 years, 9 months ago

Your Answer