Swift 实现类似于选择电影票的效果,并且实现无限/自动轮播

效果图


horizontal.gif
vertical.gif

实现了什么功能?

  • 1.类似于选择电影票的效果
  • 2.自动轮播
  • 3.无限轮播
  • 4.非当前显示view具有缩放和透明的特效
  • 5.页面滚动的方向分为横向和纵向

仿照UITableView使用代理实现传值

protocol PageFlowViewDelegate : NSObjectProtocol{
    func sizeForPageInFlowView(flowView : PageFlowView) -> CGSize
    /// 滚动到了某一列
    func didScrollToPage(pageNumber : Int,inFlowView flowView : PageFlowView)
    
    /// 点击了第几个cell
    ///
    /// - Parameters:
    ///   - subView: 点击的控件
    ///   - subIndex: 点击控件的index
    func didSelectCell(subView : IndexBannerSubiew,subViewIndex subIndex : Int)
}

protocol PageFlowViewDataSource : NSObjectProtocol{
    /// 返回显示View的个数
    func numberOfPagesInFlowView(flowView : PageFlowView) -> Int
    
    /// 给某一列设置属性
    ///
    /// - Parameters:
    ///   - flowView: <#flowView description#>
    ///   - index: <#index description#>
    /// - Returns: <#return value description#>
    func cellForPageAtIndex(flowView : PageFlowView,atIndex index : Int) -> IndexBannerSubiew
}

使用示例

// 模拟器原因,底部会有残影,真机测试没有
let pageFlowView = PageFlowView.init(frame: CGRect.init(x: 0, y: 72, width: kScreenW, height: kScreenW*9/16))
pageFlowView.backgroundColor = UIColor.white

pageFlowView.delegate = self
pageFlowView.dataSource = self
pageFlowView.minimumPageAlpha = 0.1
pageFlowView.isCarousel = true
pageFlowView.orientation = .vertical
pageFlowView.isOpenAutoScroll = true

//初始化pageControl
let pageControl = UIPageControl.init(frame: CGRect.init(x: 0, y: pageFlowView.bounds.height-32, width: kScreenW, height: 8))
pageFlowView.pageControl = pageControl
pageFlowView.addSubview(pageControl)
pageFlowView.reloadData()
view.addSubview(pageFlowView)

Objective-C版本下载
Swift版本下载

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,032评论 3 119
  • 今天晚上我去我奶奶家吃饭,我刚到奶奶家,就看到爷爷在搬酒。我也上去帮忙,我妈妈跟我奶奶也一起搬了起来,当时...
    碎片幻影阅读 312评论 0 0
  • 2003年初冬的早晨,薄雾笼罩的大街上灰蒙蒙的,黑暗还没有褪净,大街上远远传来 唰唰的扫地声,和自行车链条嘀嘀嘀的...
    a6bd20cc07cc阅读 278评论 0 0
  • 简书开通有一段时间了,想写点什么,却不知道写点什么。 回想以前的QQ空间,是90后在没有微信时代的发泄口,那时候你...
    赋笛声阅读 365评论 2 4
  • { "cmd": ["/System/Library/Frameworks/JavaScriptCore.fram...
    liu_bo阅读 298评论 0 1