Swift无限循环滚动,自己设置pageControl,flowlayout流水布局

作者 : 开心源码 本文共3166个字,预计阅读时间需要8分钟 发布时间: 2022-05-14 共242人阅读

扯淡篇

各位辕友们,大家好!距离上次在简书写文章已经过去两年多了,这两年里也经历了许多,技术方面只能说是在慢慢进步,真的是很羡慕那些记性好的同学,我这记性现在经常忘东西,导致学习起来也比较费劲,无论怎样样,不抛弃,不放弃,才能有更好的生活,更好的技术!以兹共勉–致一个30+程序员!今天我来给大家推荐我的一个小组件XBSwiftCoreModule,目前已经提交至github大家可以去github下载试用,也欢迎大家给出反馈,以期更好的优化小组件供大家使用!好了废话也不多说了,下面就开始进入正题吧

正篇

一、我的第一个小组件 XBListViewManager

这个组件的主要功能是优化tableview以及collectionview的datasource以及delegate方法,可以省去你写代理商以及数据源方法的时间,同时,无需你再关心cell的register问题,我这个小组件会自动帮你注册cell,这样可以在很大程度上减少你的代码量,而且对项目的污染很小,假如你想自己实现数据源与代理商方法,只要实现系统的数据源代理商方法就可!下面说下我的思路:
1、采用协议的方式实现cell的动态类型,动态高度
2、自己设置模型遵循协议就可控制cell的类型和高度(XBDataModelProtocol)
3、会给协议的属性赋有默认值,所以不需要你再重复的写属性协议(使用结构体 XBDataModelComponents 给协议属性增加默认值)
4、cell(XBCellDataProtocol)和section(XBSectionViewDataProtocol)也需要遵循协议才可以进行赋值,假如你实现了cell和section的代理商方法,就会调用代理商方法,无需你再写任何有关于代理商的代码
4、支持流水布局

eg:

//Model:

    var dataComponents: XBDataModelComponents = XBDataModelComponents()        var movieUrl: String = ""    var movieName: String = ""}class SectionModel: XBSectionModelProtocol {    var dataComponents: XBSectionModelComponents = XBSectionModelComponents()        var title = "headerFooter"}

//Views:

class XBMovieCell: UITableViewCell, XBCellDataProtocol {    deinit {        print(#function,classForCoder)    }    func configureData<T>(item: T) {        guard let item = item as? DataModel else { return }        self.textLabel?.text = item.movieName    }}class XBMovieSecView: UITableViewHeaderFooterView, XBSectionViewDataProtocol {    deinit {        print(#function,classForCoder)    }    func configureData<T>(item: T) {        guard let item = item as? SectionModel else { return }        textLabel?.text = item.title    }}

//初始化

lazy var listManager: XBTableManager = {        let m = XBTableManager()        m.delegate = self        return m    }()

//configureModel

for (key, value) in data {            var movie = DataModel()            movie.movieName = key as! String            movie.movieUrl = value as! String            movie.cellClass = NSStringFromClass(XBMovieCell.self)            movie.cellSize = CGSize(width: 0, height: 60)            movies.append(movie)        }        var sec1 = SectionModel()        sec1.isClose = true        sec1.items.append(contentsOf: movies)        sec1.headerClass = NSStringFromClass(XBMovieSecView.self)        sec1.footerClass = NSStringFromClass(XBMovieSecView.self)        sec1.footerSize = CGSize(width: 0, height: 60)        sec1.headerSize = CGSize(width: 0, height: 60)        self.listManager.sectionArray = [sec,sec1]        self.listManager.reloadData()

现在即可以显示自己设置多种类型的cell的tableView了
对于collectionView,我这个库也支持流水布局,并且可以支持横竖滚动,这里不再多说,后面我会做demo演示

二、我的第二个小组件 XBCircleScroll无限循环滚动

这个组件的主要功能是实现无限循环滚动,支持自己设置滚动视图,只要实现代理商方法就可,支持滚动视图的点击事件,并且使用calayer的方式自己设置了pageControl,支持点击pagecontrol切换页面,同时pagecontrol支持6种模式,后面会做6种模式的演示,我们先看代码部分
//初始化

cirview = XBCircleScrollView(circleViewType: UILabel.self, isUseTimer: true)        cirview.delegate = self        cirview.pageControlRightOffSet = 30.0        view.addSubview(cirview)        cirview.pageCount = 0

//代理商方法

func XBCircleView(circleView: UIView, configureDataWithIndex index: Int) {        if let view = circleView as? UILabel {            view.text = "\(index+1)"            view.font = UIFont.systemFont(ofSize: 72, weight: .semibold)            view.textColor = UIColor.orange            view.textAlignment = .center        }    }

三、我的第三个小组件 XBMenuView无限循环滚动

这个组件的功能也比较简单,就是一个带有下划线的选项卡,目的也就是
方便大家,废话也不多说,以下是代码部分
//初始化

let meneview = XBTopMenuView(titles: ["centerFlow","waterFlow", "leftFlow"], contentSizeType: .equalToSuper, buttonComponents: coms)

//事件解决

meneview.clickHandle = { [weak self] tag in         switch tag {           case 0:            case 1:           default:          }     }

demo演示

Simulator Screen Shot – iPhone 11 – 2020-12-30 at 11.38.56.png
Simulator Screen Shot – iPhone 11 – 2020-12-30 at 11.41.22.png
XBSwiftCoreModuleDemo.gif

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Swift无限循环滚动,自己设置pageControl,flowlayout流水布局

发表回复