用collectionView完成的图片滚动

本文介绍了如何通过UICollectionView实现图片的滚动展示,并结合scrollViewWillEndDragging代理方法实现平滑分页效果。当用户滑动时,同时更新分页控制器pageControl的当前页数。在分页控制器的值变化时,通过定时器和全局变量调整显示的图片,并利用scrollToItemAtIndexPath代理方法滚动到相应位置。附带了代码示例和实际效果截图。
摘要由CSDN通过智能技术生成

大体思路:首先,创建collectionView,和collectionViewCell,布局的itemSize的大小,和collectionView的frame一致,这样cell就可以覆盖整个collectionView。
其次,利用scrollViewWillEndDragging代理方法,实现分页效果,这样可以保证每次滑动时,一张图片显示在窗口,而不是两张图片。这个方法,可以计算出,当前滑动到第几张图片,这样,我们就可以监听这个页码值,返回给分页控件pageControl,那么滑动图片时,pageControl的currentPage的值就可以根据该值进行改变
当pageControl的值改变时,同样的我们要改变图片的显示,这里我利用定时器,定义一个全局的变量记录pageNum,在定时器方法中,改变pageNum,然后将值赋给currentPage,这时pageControl的值改变了,将值封装成NSIndexPath类,我们再利用代理方法scrollToItemAtIndexPath:(即:滑动到指定的位置)滑动到指定的第几张图片。
看代码吧,可能说的不清楚,原谅我组织语言无能/(ㄒoㄒ)/~~

#pragma mark - 代理方法,实现滑动分页效果
- (void) scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {

    //1.获取偏移量
    CGFloat contentOffX = targetContentOffset->x;

    //2.获取item的值,这里的item大小,和页面宽度一致,所以直接给出
    CGFloat pageWidth = 325;

    //3.计算页码
    NSInteger pageNumber = (contentOffX+pageWidth/2)/pageWidth;

    //4.重新赋值
    targetContentOffset->x = pageWidth*pageNumber;

    self.pageNum = pageNumber;
}

这是在主页面上写的代码

- (void)viewDi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值