Swift无限循环滚动,自定义pageControl,flowlayout流水布局

扯淡篇

各位辕友们,大家好!距离上次在简书写文章已经过去两年多了,这两年里也经历了许多,技术方面只能说是在慢慢进步,真的是很羡慕那些记性好的同学,我这记性现在经常忘东西,导致学习起来也比较吃力,无论怎么样,不抛弃,不放弃,才能有更好的生活,更好的技术!以兹共勉--致一个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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容