[Swift通天遁地]一、超级工具-(15)使用SCLAlertView制作强大的Alert警告窗口和Input编辑窗口
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10172013.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
本文将演示如何知错一款可以采集用户数据的提示窗口。
首先确保在项目中已经安装了所需的第三方库。
1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'SCLAlertView' 7 end
点击【Podfile】,查看安装配置文件。
根据配置文件中的相关配置,安装第三方库
然后点击打开【DemoApp.xcworkspace】项目文件。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
1 import UIKit 2 //在当前的项目文件中,引入已经安装的第三方类库 3 import SCLAlertView 4 5 class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 11 //初始化一个按钮,当用户点击该按钮时,弹出一个警告窗口 12 let popup = UIButton(frame: CGRect(x: 0, y: 0, width: 320, height: 40)) 13 //将按钮控件放置在根视图的中心位置 14 popup.center = self.view.center 15 //设置按钮控件的背景颜色为橙色 16 popup.backgroundColor = UIColor.orange 17 //设置按钮控件在正常状态下的标题文字 18 popup.setTitle("Popup", for: .normal) 19 //给按钮控件绑定点击事件 20 popup.addTarget(self, action: #selector(ViewController.popUp), for: .touchUpInside) 21 22 //设置根视图的背景颜色为橙色 23 self.view.backgroundColor = UIColor.orange 24 //并将按钮添加到根视图中 25 self.view.addSubview(popup) 26 } 27 28 //添加一个方法,用来响应按钮的点击事件 29 func popUp() 30 { 31 //1.初始化一个信息类型的弹出窗口, 32 //并设置弹出窗口的标题和子标题。 33 SCLAlertView().showInfo("Important info", subTitle: "You are great") 34 35 //2.对代码进行一些修改 36 //初始化一个成功类型的弹出窗口,并设置弹出窗口的标题和子标题。 37 let alertViewResponder: SCLAlertViewResponder = SCLAlertView().showSuccess("Hello World", 38 subTitle: "This is a more descriptive text.") 39 //可以通过弹出窗口的设置标题方法,重新设置窗口的标题文字。 40 alertViewResponder.setTitle("New Title") 41 //可以通过弹出窗口的设置子标题方法,重新设置窗口的子标题文字。 42 alertViewResponder.setSubTitle("New description")*/ 43 44 //3.对代码进行一些修改 45 //弹出窗口包含多种样式。 46 //错误类型的弹出窗口,并设置弹出窗口的标题和子标题。 47 SCLAlertView().showError("Hello Error", subTitle: "This is a more descriptive error text.") 48 //通知类型的弹出窗口,并设置弹出窗口的标题和子标题。 49 SCLAlertView().showNotice("Hello Notice", subTitle: "This is a more descriptive notice text.") 50 //警告类型的弹出窗口,并设置弹出窗口的标题和子标题。 51 SCLAlertView().showWarning("Hello Warning", subTitle: "This is a more descriptive warning text.") 52 //信息类型的弹出窗口,并设置弹出窗口的标题和子标题。 53 SCLAlertView().showInfo("Hello Info", subTitle: "This is a more descriptive info text.") 54 //编辑类型的弹出窗口,并设置弹出窗口的标题和子标题。 55 SCLAlertView().showEdit("Hello Edit", subTitle: "This is a more descriptive info text.") 56 57 58 //4.对代码进行一些修改 59 //对弹出窗口的视觉样式进行了修改 60 SCLAlertView().showTitle( 61 "Congratulations",//标题 62 subTitle: "Operation successfully completed.",//子标题 63 duration: 2.0,//持续时长 64 completeText: "Done",//完成提示文字 65 style: .success,//主题样式 66 colorStyle: 0xA429FF,//窗口颜色 67 colorTextButton: 0xFFFFFF//按钮文字的颜色 68 ) 69 70 //5.对代码进行一些修改 71 //也可以初始化一个外观样式类的对象,从而进行窗口样式的设置 72 let appearance = SCLAlertView.SCLAppearance( 73 //标题字体 74 kTitleFont: UIFont(name: "HelveticaNeue", size: 20)!, 75 //内容文字字体 76 kTextFont: UIFont(name: "HelveticaNeue", size: 14)!, 77 //按钮字体 78 kButtonFont: UIFont(name: "HelveticaNeue-Bold", size: 14)!, 79 //设置不允许关闭按钮的显示 80 showCloseButton: false 81 ) 82 83 //根据上文的外观样式对象,初始化一个指定外观样式的弹出窗口。 84 let alert = SCLAlertView(appearance: appearance) 85 //调用窗口显示的通知方法,创建一个通知类型的弹出窗口。 86 alert.showNotice("Hello Notice", subTitle: "This is a more descriptive notice text.") 87 88 //6.对代码进行一些修改 89 //初始化一个警告窗口 90 let alertView = SCLAlertView() 91 //在窗口中添加第一个按钮控件,并给按钮绑定点击事件 92 alertView.addButton("First Button", target:self, selector:Selector("firstButton")) 93 //在窗口中添加第二个按钮控件,并给按钮添加一个闭包语句,以响应按钮的点击事件 94 alertView.addButton("Second Button") 95 { 96 print("Second button tapped") 97 } 98 //调用窗口的显示成功方法,创建一个成功类型的弹出窗口 99 alertView.showSuccess("Button View", subTitle: "This alert view has buttons") 100 101 //7.对代码进行一些修改,创建一个自动隐藏的弹出窗口 102 //初始化一个外观样式常量 103 let appearance = SCLAlertView.SCLAppearance( 104 //并设置在窗口中不显示关闭按钮 105 showCloseButton: false 106 ) 107 //根据外观样式,创建一个弹出窗口对象 108 let alertView = SCLAlertView(appearance: appearance) 109 //调用窗口的显示警告方法,打开一个警告类型的弹出窗口,并设置在显示三秒之后自动关闭弹出窗口 110 alertView.showWarning("No button", 111 subTitle: "Just wait for 3 seconds and I will disappear", 112 duration: 3) 113 //初始化一个外观样式常量 114 let appearance = SCLAlertView.SCLAppearance( 115 //设置在窗口中显示圆形图标 116 showCircularIcon: true 117 ) 118 //根据外观样式,创建一个弹出窗口对象 119 let alertView = SCLAlertView(appearance: appearance) 120 //从项目中读取一张图片素材 121 let alertViewIcon = UIImage(named: "Hearts") 122 //调用窗口的显示信息方法,打开一个信息类型的弹出窗口,并设置窗口顶部的圆形图标 123 alertView.showInfo("Custom icon", 124 subTitle: "This is a nice alert with a custom icon you choose", 125 circleIconImage: alertViewIcon) 126 127 //8.对代码进行一些修改,创建一个文本输入框的弹出窗口 128 //初始化一个新的弹出窗口对象 129 let alert = SCLAlertView() 130 //往弹出窗口中,添加一个文本框,并设置文本框的占位文字 131 let txt = alert.addTextField("Enter your name") 132 //往弹出窗口中添加一个按钮,后跟一个闭包语句。 133 alert.addButton("Show Name") { 134 //当点击该按钮时,在控制台输出用户在文本框中输入的内容。 135 print("Text value: \(txt.text)") 136 } 137 //调用窗口的编辑方法,打开一个编辑类型的弹出窗口 138 alert.showEdit("Edit View", subTitle: "This alert view shows a text box") 139 140 //9.对代码进行一些修改,创建一个包含自定义视图的弹出窗口 141 //初始化一个新的弹出窗口对象 142 let alert = SCLAlertView() 143 144 //创建一个指定显示区域的普通视图 145 let subview = UIView(frame: CGRect(x: 0, y: 0, width: 216, height: 70)) 146 //然后根据视图的宽度,计算即将添加的文本框的水平位置 147 let x = (subview.frame.width - 180) / 2 148 149 //初始化一个文本框,并将文本框放置在视图的中心位置 150 let textfield1 = UITextField(frame: CGRect(x: x, y: 10, width: 180, height: 25)) 151 //设置文本框边缘的颜色 152 textfield1.layer.borderColor = UIColor.green.cgColor 153 //设置文本框边缘的宽度 154 textfield1.layer.borderWidth = 1.5 155 //设置文本框的圆角半径 156 textfield1.layer.cornerRadius = 5 157 //设置文本框的占位文字 158 textfield1.placeholder = "Username" 159 //设置文本框的文字对齐方式 160 textfield1.textAlignment = NSTextAlignment.center 161 //将文本框添加到视图中 162 subview.addSubview(textfield1) 163 164 //使用相同的方式创建第二个文本框 165 let textfield2 = UITextField(frame: CGRect(x: x, y: textfield1.frame.maxY, width: 180, height: 25)) 166 //设置文本框是否为密文的显示方式 167 textfield2.isSecureTextEntry = true 168 //设置文本框边缘的颜色 169 textfield2.layer.borderColor = UIColor.blue.cgColor 170 //设置文本框边缘的宽度 171 textfield2.layer.borderWidth = 1.5 172 //设置文本框的圆角半径 173 textfield2.layer.cornerRadius = 5 174 //设置文本框的占位文字 175 textfield2.placeholder = "Password" 176 //设置文本框的文字对齐方式 177 textfield2.textAlignment = NSTextAlignment.center 178 //将文本框添加到视图中 179 subview.addSubview(textfield2) 180 181 //设置弹出窗口的自定义子视图属性 182 alert.customSubview = subview 183 //给弹出窗口设置一个交互按钮 184 alert.addButton("Login") 185 { 186 //并设置按钮被点击后的动作 187 print("Logged in") 188 } 189 190 //添加一个交互按钮 191 alert.addButton("Duration Button", //文本内容 192 backgroundColor: UIColor.brown, //背景颜色 193 textColor: UIColor.yellow, //文字颜色 194 showDurationStatus: true)//按钮的计时状态属性为真,时间到后自动关闭窗口 195 { 196 print("Duration Button tapped") 197 } 198 199 //调用窗口的显示信息方法,打开一个信息类型的弹出窗口 200 alert.showInfo("Login", subTitle: "", duration: 5) 201 } 202 203 override func didReceiveMemoryWarning() { 204 super.didReceiveMemoryWarning() 205 // Dispose of any resources that can be recreated. 206 } 207 }