ios 扑克牌效果轮播_iOS 封装跑马灯和轮播效果

本文介绍如何使用UICollectionView实现一个支持水平和垂直方向分页、渐进循环轮播的WSL_RollView控件。通过自定义UICollectionViewFlowLayout解决分页宽度和循环滚动问题,提供高度自定义分页视图的功能。
摘要由CSDN通过智能技术生成

功能概述和预览

功能描述:WSL_RollView 是基于UICollectionView实现的支持水平和垂直两个方向上的的分页和渐进循环轮播效果,可以设置时间间隔、渐进速率、是否循环、分页宽度和间隔,还支持高度自定义分页视图的控件。

一、实现方法

1.1、 首先用UICollectionView和计时器实现一个基本的水平滚动效果,如下图,这个太简单就不在此详述。

1.2、对比上面的效果图,我们还需要解决分页的宽度和循环滚动的问题。

自定义分页宽度:默认的分页宽度是UICollectionView的宽度,所以当分页宽度的不等于UICollectionView的宽度或分页间隔不等于0时会出现错误,这时就需要我们通过自定义UICollectionViewFlowLayout来实现效果。

/** 返回值决定了collectionView停止滚动时的偏移量 手指松开后执行

* proposedContentOffset:原本情况下,collectionView停止滚动时最终的偏移量

* velocity 滚动速率,通过这个参数可以了解滚动的方向

*/

- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity{

if (_scrollStyle == WSLRollViewScrollStylePage) {

CGSize size = self.collectionView.frame.size;

// 计算可见区域的面积

CGRect rect = CGRectMake(proposedContentOffset.x, proposedContentOffset.y, size.width, size.height);

NSArray *array = [super layoutAttributesForElementsInRect:rect];

// 标记 cell 的中点与 UICollectionView 中点最小的间距

CGFloat minDetal = MAXFLOAT;

if (self.scrollDirection == UICollectionViewScrollDirectionHorizontal){

// 计算 CollectionView 中点值

CGFloat centerX = proposedContentOffset.x + self.collectionView.frame.size.width * 0.5;

for (UICollectionViewLayoutAttributes *attrs in array){

if (ABS(minDetal) > ABS(centerX - attrs.center.x)){

minDe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值