MHTabView - 基于swift实现的顶部滚动标签栏

上班期间闲来无事,想摸鱼看番但是又害怕项目经理的制裁,那不如给自己找点事情做。
于是开始封装了自己的第一个组件。

简介

一个简单的基于swift实现的ios顶部滚动标签栏,提供了四种不同的样式选择。

安装

可以直接通过我的github项目地址下载源码导入工程,也可以通过 CocoaPods进行安装。cocoapods的安装方法:

在你的podfile文件里加入pod 'MHTabView',然后执行pod install指令就可以开始愉快的使用了。

使用

通过以下两种方式初始化你的tabview
注意titles和views数组长度需要相同

  1. convenience init
let tabview = MHTabView.init(withTitles: titles, pageViews: views)
  1. init and set titles and pageviews
let tabview = MHTabView.init()
tabview.setTitlesAndPageViews(titles: titles, pageViews: views)

示例

可以去我的github项目地址查看示例源码并下载

  • unscrollable

tabview.titleStyle = .unscrollable
unscrollable
  • scrollable

tabview.titleStyle = .scrollable
scrollable
  • autoscrollable

tabview.titleStyle = .autoScrollable
autoscrollable
  • autoUnscrollable

tabview.titleStyle = .autoUnscrollable
autoUnscrollable
  • other

  1. change color
tabview.defaultColor = .blue
tabview.selectedColor = .red
  1. change width for scrollable style
tabview.style = .scrollable
tabview.tabWidth = 150
  1. usage of delegate
protocol MHTabViewDelegate {
  /**停止滚动后的回调函数(index, scrollview) -> (当前滚动到的位置, scrollView属性 )*/
  func MHTabViewDidEndDecelerating(_ index: Int, _ scrollview: UIScrollView)
}
delegate
  1. other APIs
setSelectedFont(_ font: UIFont)//修改选中按钮的字体

setUnSelectedFont(_ font: UIFont)//修改未选中按钮的字体

setIndicatorHeight(_ height: CGFloat)//修改指示器高度

setIndicatorWidth(_ width: CGFloat)//修改指示器宽度
 
setDefaultPage(withIndex index: Int)//设置默认选中的页面

setAnimateDuration(_ duration: TimeInterval)//设置动画过渡时间

尾声

一开始看上去觉得很简单的一个小组件,没想到自己实现起来遇到了挺多困难,也许这就是一个无名小程序员的悲伤吧,成长之路还很长啊!
尽管一路跌跌撞撞,最终还是完成了,成就感爆棚 感觉要开始膨胀了 。哈哈,程序员道路弯又长,还是要戒骄戒躁继续前进。
欢迎各位大佬们提出问题和建议,也可以到github项目地址里发issue和pull request,我会及时查看并吸取意见。

作者信息

邮箱: 739296759@qq.com
github首页: https://github.com/feaskters/
欢迎交流技术知识

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

推荐阅读更多精彩内容

  • 要解除循环依赖,引入包管理技术cocoapods会让我们更有效率。pod不允许组件间有循环依赖,若有pod ins...
    cs_mark阅读 6,411评论 0 1
  • 原文地址: 点击直达 pod install 在项目中第一次使用CocoaPods, 进行安装的时候使用这个命令....
    zedxpp阅读 17,119评论 1 18
  • 首先为什么需要组件化? 下面我列举了一些比较常见的问题 业务模块划分不清楚,各模块之间耦合度很大,难以维护例如我们...
    CrystalZhu阅读 4,649评论 0 2
  • 阅读书籍——静待花开 做“幸福树下的幸福人,享受欣赏教育带来的幸福”是我们不懈的追求!做“累并快乐着”的实践者!这...
    绿地王萌萌阅读 4,743评论 0 0
  • 近恐年华如水了,其实怯畏身疏渺。 常思曾爱寐常来,今忆犹能心炙烤。 可恨当年惊惧极,失君已去月清皎。 诗词轻易说十...
    纸才阅读 962评论 0 1