# LLSegmentViewController **Repository Path**: yanjlToSelice/LLSegmentViewController ## Basic Information - **Project Name**: LLSegmentViewController - **Description**: 可添加header的多控制器列表,主流APP分类切换滚动视图(京东,网易新闻,爱奇艺,QQ弹性小球等,可高度自定义,项目结构清晰);UIScrollView 嵌套,可做个人详情页,商品详情页,页面多tableView滑动悬停 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-07-15 - **Last Updated**: 2021-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LLSegmentViewController ## 要求 - iOS 8.0+ - Xcode 9 - Swift ## 使用CocoaPods安装 ``` pod 'LLSegmentViewController' ``` ## 特征 1、预加载控制器View ```Swift pageView.preLoadRange = 1...3 //当前控制器的左边预加载1个,右边预加载3个 ``` 2、红点设置简单,跟当前控制器绑定,不再需要写额外控制代码 ```Swift self.tabBarItem.badgeValue = "\(indexPath.row)"//红点设置为LLSegmentRedBadgeValue ``` 3、自定义性强:参考自定义样式 ## 项目中的使用 ```Swift class SimpDemoViewController: LLSegmentViewController { override func viewDidLoad() { super.viewDidLoad() loadSegmentedConfig() } } extension SimpDemoViewController{ func loadSegmentedConfig() { layoutContentView() loadCtls() setUpSegmentStyle() } func layoutContentView() { self.layoutInfo.segmentControlPositionType = .top(size: CGSize.init(width: UIScreen.main.bounds.width, height: 44),offset:0) self.relayoutSubViews() } func loadCtls() { let introCtl = UIViewController() introCtl.title = "简介" introCtl.view.backgroundColor = UIColor.yellow let catalogCtl = UIViewController() catalogCtl.title = "目录" catalogCtl.view.backgroundColor = UIColor.red let ctls = [introCtl,catalogCtl] reloadViewControllers(ctls:ctls) } func setUpSegmentStyle() { let itemStyle = LLSegmentItemTitleViewStyle() itemStyle.selectedColor = UIColor.init(red: 50/255.0, green: 50/255.0, blue: 50/255.0, alpha: 1) itemStyle.unSelectedColor = UIColor.init(red: 136/255.0, green: 136/255.0, blue: 136/255.0, alpha: 1) itemStyle.selectedTitleScale = 1 itemStyle.titleFontSize = 15 itemStyle.itemWidth = UIScreen.main.bounds.width/CGFloat(ctls.count)//如果不指定是自动适配的 //这里可以继续增加itemStyle的其他配置项... ... segmentCtlView.backgroundColor = UIColor.white segmentCtlView.separatorLineShowEnabled = true //间隔线显示,默认不显示 //还有其他配置项:颜色、宽度、上下的间隔... segmentCtlView.bottomSeparatorStyle = (1,UIColor.red) //分割线:默认透明色 segmentCtlView.indicatorView.widthChangeStyle = .stationary(baseWidth: 11)//横杆宽度:有默认值 segmentCtlView.indicatorView.centerYGradientStyle = .bottom(margin: 0)//横杆位置:有默认值 segmentCtlView.indicatorView.shapeStyle = .custom //形状样式:有默认值 var segmentedCtlStyle = LLSegmentedControlStyle() segmentedCtlStyle.segmentItemViewClass = LLSegmentItemTitleView.self //ItemView和ItemViewStyle要统一对应 segmentedCtlStyle.itemViewStyle = itemStyle segmentCtlView.reloadData(ctlViewStyle: segmentedCtlStyle) } ``` ## 自定义 只需两步就可完成自定义效果:(可参考项目内的自定义样式) - 1、继承LLSegmentBaseItemView或子类; - 2、实现LLSegmentBaseItemView以下方法(有些方法可实现可不实现) ```Swift //1、设置标题 public func titleChange(title:String) //2、滚动时会调用这个方法,percent的取值范围是0...1 public func percentChange(percent:CGFloat) //3、返回当前ItemView的宽度 public func itemWidth() ->CGFloat //4、设置Item的style样式 public func setSegmentItemViewStyle(itemViewStyle:LLSegmentItemViewStyle) ``` ## 效果预览 ### 详情页效果预览 说明 | Gif | ----|-------| 个人中心头部放大 | | 个人中心列表刷新 | | 商品详情 | | ### 指示器效果预览 说明 | Gif | ----|------| LineView固定宽度 | | LineView京东风格 | | LineView爱奇艺风格 | | LineView回旋风格 | | LineView与Item等宽 | | LineView分割线 | | LineView背景 | | LineView椭圆形 | | LineView椭圆形加阴影 | | LineView文字遮罩 | | LineView文字遮罩加背景 | | LineView文字遮罩加背景和阴影 | | LineView三角形 | | LineView小红点加数字 | | LineView点线效果 | | LineViewQQ红点 | | ### 特殊效果预览 说明 | Gif | ----|------| LineView嵌套 | | LineView足球 | | LineView插入 | | LineView混合 | | LineView图片做背景 | | LineView图片文字 | | ### 自定义Item效果预览 说明 | Gif | ----|------| LineView背景色渐变 | | LineView富文本 | | LineView网易新闻 | | ### 自定义tabbar效果预览 说明 | Gif | ----|------| LineView微信 | | LineView微博 | | LineView图片做背景 | | 邮箱:736764509@qq.com
QQ群: 142649183