[Swift通天遁地]九、拔剑吧-(4)使用开源类库创建可滑动的Segment分段控件
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10355638.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
本文将演示创建多种自定义Segment分段样式的控件。
首先确保已经安装了所需的第三方类库。双击查看安装配置文件【Podfile】
1 platform :ios, ‘12.0’ 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'TwicketSegmentedControl' 7 end
根据配置文件中的相关设置,安装第三方类库。
安装完成之后,双击打开项目文件【DemoApp.xcodeproj】
在左侧的项目导航区,打开视图控制器的代码文件【ViewController.swift】
现在开始编写代码,创建一个可滑动的分段控件。
1 import UIKit 2 //引入已经安装的第三方类库 3 import TwicketSegmentedControl 4 5 //使当前的类遵守第三方协议,用来监听分段控件的切换事件。 6 class ViewController: UIViewController, TwicketSegmentedControlDelegate { 7 8 var imageView : UIImageView! 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 // Do any additional setup after loading the view, typically from a nib. 12 13 //初始化一个图像视图,作为每个分段所显示的内容 14 self.imageView = UIImageView(frame: CGRect(x: 0, y: 100, width: 320, height: 160)) 15 //从项目中读取一张图片,作为图片视图的显示内容。 16 self.imageView.image = UIImage(named: "chart") 17 //将图像视图添加到根视图 18 self.view.addSubview(self.imageView) 19 20 //初始化一个字符串数组,作为三个分段的标题文字 21 let titles = ["Daily", "Weekly", "Monthly"] 22 //初始化一个矩形区域,作为分段控件的显示区域 23 let frame = CGRect(x: 5, y: 40, width: view.frame.width - 10, height: 40) 24 25 //初始化一个指定显示区域的分段控件。 26 let segmentedControl = TwicketSegmentedControl(frame: frame) 27 //设置分段控件的各个分段的标题文字 28 segmentedControl.setSegmentItems(titles) 29 30 //设置分段控件的字体颜色为灰色 31 segmentedControl.defaultTextColor = .gray 32 //设置处于焦点状态的分段的字体颜色为白色 33 segmentedControl.highlightTextColor = .white 34 //设置画滑块的背景颜色为橙色 35 segmentedControl.sliderBackgroundColor = .orange 36 //通过分段控件的移动方法,使第二个分段处于焦点状态。 37 segmentedControl.move(to: 1) 38 39 //设置分段控件的代理对象,位当前的视图控制器对象。 40 //即使用当前控制器对象的方法,监听分段控件的切换事件。 41 segmentedControl.delegate = self 42 43 //最后将分段控件添加到根视图。 44 view.addSubview(segmentedControl) 45 } 46 47 //添加一个方法,用来监听分段控件的切换事件。 48 func didSelect(_ segmentIndex: Int) 49 { 50 //当选择第一个分段时 51 if segmentIndex == 0 52 { 53 //修改图像视图的显示区域 54 self.imageView.frame = CGRect(x: 0, y: 80, width: 320, height: 160) 55 //修改图像视图的显示内容 56 self.imageView.image = UIImage(named: "chart") 57 } 58 //当选择第二个分段时 59 else if segmentIndex == 1 60 { 61 //修改图像视图的显示区域 62 self.imageView.frame = CGRect(x: 0, y: 80, width: 320, height: 340) 63 //修改图像视图的显示内容,使图像视图显示另一张图片。 64 self.imageView.image = UIImage(named: "data") 65 } 66 //当选择第三个分段时的情况 67 else if segmentIndex == 2 68 { 69 //修改图像视图的显示区域 70 self.imageView.frame = CGRect(x: 0, y: 80, width: 320, height: 500) 71 //修改图像视图的显示内容,使图像视图显示另一张图片。 72 self.imageView.image = UIImage(named: "total") 73 } 74 } 75 76 override func didReceiveMemoryWarning() { 77 super.didReceiveMemoryWarning() 78 // Dispose of any resources that can be recreated. 79 } 80 }