★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-qqfwhhej-ky.html
➤若是连接不是山青咏芝的博客园地址,则多是爬取做者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持做者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
目录:[Swift]通天遁地Swiftios
本文将演示视图类型(UIView)在frame/约束/旋转/缩放/圆角/各类手势等一些实用扩展方法。git
首先确保在项目中已经安装了所需的第三方库。github
点击【Podfile】,查看安装配置文件。swift
1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'EZSwiftExtensions' 7 end
根据配置文件中的相关配置,安装第三方库。数组
而后点击打开【DemoApp.xcworkspace】项目文件。微信
在项目导航区,打开视图控制器的代码文件【ViewController.swift】app
如今开始编写代码,对基本类型:Int、String、Array、Dictionary、Date扩展。ide
1 import UIKit 2 //在当前的类文件中,引入已经安装的第三方类库 3 import EZSwiftExtensions 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 basicUIViewExample() 12 //快速得到视图的各个属性信息 13 viewFrameSize() 14 //根据一个视图,肯定另外一个视图的位置和尺寸 15 accordingToOtherViews() 16 //用来视图之间的对齐操做 17 alginViews() 18 //用来旋转视图 19 rotateView() 20 //缩放视图 21 scaleView() 22 //视图的圆角和边框操做 23 roundView() 24 //如何给视图快速添加触摸手势 25 addTapGesture() 26 //给视图添加手指轻扫的手势 27 addSwipeGesture() 28 //给视图添加拖拽手势 29 addPanGesture() 30 //给视图添加捏合手势 31 addPinchGesture() 32 //给视图添加长按手势 33 addLongPressGesture() 34 //对按钮类型的扩展 35 buttonExample() 36 } 37 38 //添加一个方法,用来对视图类的初始化方法的扩展 39 func basicUIViewExample() 40 { 41 //初始化一个指定坐标和尺寸的视图对象 42 let myView = UIView(x: 20, y: 20, w: 200, h: 200) 43 //设置视图对象的背景颜色为橙色 44 myView.backgroundColor = UIColor.orange 45 //将视图添加到根视图 46 self.view.addSubview(myView) 47 //在控制台输出视图的显示区域信息 48 print(myView.frame) 49 50 //设置视图对象的父视图, 51 //快速建立一个和父视图相同显示区域的子视图 52 let myView2 = UIView(superView: myView) 53 //设置视图对象的背景颜色为紫色 54 myView2.backgroundColor = UIColor.purple 55 //将视图添加到父视图中 56 myView.addSubview(myView2) 57 //在控制台输出视图的显示区域信息 58 print(myView2.frame) 59 60 //设置视图对象的父视图, 61 //快速建立一个和父视图相同显示区域的子视图 62 //另外设置父视图的内边距为20 63 let myView3 = UIView(superView: myView2, padding: 20) 64 //设置视图对象的背景颜色为洋红色 65 myView3.backgroundColor = UIColor.magenta 66 //将视图添加到父视图中 67 myView2.addSubview(myView3) 68 //在控制台输出视图的显示区域信息 69 print(myView3.frame) 70 } 71 72 //添加一个方法,快速得到视图的各个属性信息 73 func viewFrameSize() 74 { 75 //初始化一个指定坐标和尺寸的视图对象 76 let view = UIView(x: 0, y: 0, w: 100, h: 100) 77 //水平坐标 78 print(view.x) 79 //垂直坐标 80 print(view.y) 81 //宽度 82 print(view.w) 83 //高度 84 print(view.h) 85 //顶部位置 86 print(view.top) 87 //底部位置 88 print(view.bottom) 89 //左侧位置 90 print(view.left) 91 //右侧位置 92 print(view.right) 93 //原点 94 print(view.origin) 95 //中心点水平坐标 96 print(view.centerX) 97 //中心点垂直坐标 98 print(view.centerY) 99 //尺寸 100 print(view.size) 101 //背景颜色为橙色 102 view.backgroundColor = UIColor.orange 103 //将视图添加到根视图 104 self.view.addSubview(view) 105 106 //若是须要调整视图的坐标和尺寸, 107 //只须要从新设置视图的四个属性便可。 108 view.x = 40 109 view.y = 40 110 view.w = 200 111 view.h = 300 112 print(view.x) 113 } 114 115 //添加一个方法,根据一个视图,肯定另外一个视图的位置和尺寸 116 func accordingToOtherViews() 117 { 118 //初始化一个指定坐标和尺寸的视图对象 119 let view = UIView(x: 40, y: 40, w: 100, h: 100) 120 //设置视图对象的背景颜色为灰色 121 view.backgroundColor = UIColor.gray 122 //初始化另外一个视图对象, 123 //并设置该视图在水平方向上,位于上个视图右侧20点的位置。 124 //并设置该视图在垂直方向上,位于上个视图下方20点的位置。 125 let view2 = UIView(x: view.rightOffset(20), 126 y: view.bottomOffset(20), 127 w: 100, 128 h: 200) 129 //设置第二个视图对象的背景颜色为橙色 130 view2.backgroundColor = UIColor.orange 131 //经过视图数组,所有添加到根视图 132 self.view.addSubviews([view, view2]) 133 } 134 135 //添加一个方法,用来视图之间的对齐操做 136 func alginViews() 137 { 138 //初始化一个指定坐标和尺寸的视图对象 139 let view = UIView(x: 0, y: 0, w:200, h: 100) 140 //设置视图对象的背景颜色为紫色 141 view.backgroundColor = UIColor.purple 142 //初始化另外一个视图对象, 143 let view2 = UIView(x: 0, y: 0, w: 100, h: 200) 144 //设置第二个视图对象的背景颜色为橙色 145 view2.backgroundColor = UIColor.orange 146 //经过视图数组,所有添加到根视图 147 self.view.addSubviews([view, view2]) 148 149 //第一个视图和根视图保持水平居中 150 view.centerXInSuperView() 151 //第二个视图和根视图保持水平和垂直居中 152 view2.centerInSuperView() 153 } 154 155 //添加一个方法,用来旋转视图 156 func rotateView() 157 { 158 //初始化一个指定坐标和尺寸的视图对象 159 let mainview = UIView(x: 40, y: 40, w: 200, h: 100) 160 //设置视图对象的背景颜色为橙色 161 mainview.backgroundColor = UIColor.orange 162 163 //将视图对象沿着水平轴向,旋转45度 164 //mainview.setRotationX(45) 165 166 //将视图对象沿着Z轴方向,旋转45度 167 mainview.setRotationZ(45) 168 //将视图对象添加到根视图 169 self.view.addSubview(mainview) 170 } 171 172 //添加一个方法,用来缩放视图 173 func scaleView() 174 { 175 //初始化一个指定坐标和尺寸的视图对象 176 let mainview = UIView(x: 80, y: 200, w: 100, h: 100) 177 //设置视图对象的背景颜色为橙色 178 mainview.backgroundColor = UIColor.orange 179 //设置视图在水平方向上放大2倍,垂直方向上放大4倍。 180 mainview.setScale(x: 2, y: 4) 181 //将缩放后的视图对象添加到根视图。 182 self.view.addSubview(mainview) 183 } 184 185 //添加一个方法,视图的圆角和边框操做 186 func roundView() 187 { 188 //初始化一个指定坐标和尺寸的视图对象 189 let mainview = UIView(x: 40, y: 40, w: 200, h: 200) 190 mainview.setCornerRadius(radius: 40) 191 //设置视图对象的背景颜色为橙色 192 mainview.backgroundColor = UIColor.orange 193 194 //设置视图对象的宽度为6,颜色为黑色 195 //mainview.addBorder(width: 6, color: UIColor.black) 196 197 //仅给视图添加底部的边框 198 mainview.addBorderBottom(size: 20, color: UIColor.red) 199 //将视图对象添加到根视图。 200 self.view.addSubview(mainview) 201 } 202 203 //添加一个方法,如何给视图快速添加触摸手势 204 func addTapGesture() 205 { 206 //初始化一个指定坐标和尺寸的视图对象 207 let mainview = UIView(x: 40, y: 40, w: 240, h: 240) 208 //设置视图对象的背景颜色为橙色 209 mainview.backgroundColor = UIColor.orange 210 /* 211 //给视图对象添加一个触摸手势 212 //并设置在一个代码块中,响应触摸的事件 213 mainview.addTapGesture 214 { 215 //当视图对象被点击时 216 (gesture) -> () in 217 //在控制台输出相应的日志信息 218 print("view tapped") 219 } 220 */ 221 222 //使用代理方法,处理交互事件。 223 //视图的触摸事件,将由当前的视图控制器对象来处理 224 mainview.addTapGesture(target: self, action: #selector(ViewController.viewTapped)) 225 //将视图对象添加到根视图 226 self.view.addSubview(mainview) 227 } 228 229 //添加一个方法,响应视图的触摸事件 230 @objc func viewTapped() 231 { 232 print("view tapped") 233 } 234 235 //添加一个方法,给视图添加手指轻扫的手势 236 func addSwipeGesture() 237 { 238 //初始化一个指定坐标和尺寸的视图对象 239 let mainview = UIView(x: 40, y: 40, w: 240, h: 240) 240 //设置视图对象的背景颜色为橙色 241 mainview.backgroundColor = UIColor.orange 242 243 //给视图对象添加一个轻扫手势, 244 //并设置在一个代码块中,响应轻扫的事件 245 mainview.addSwipeGesture(direction: UISwipeGestureRecognizer.Direction.down) 246 { 247 //当视图对象被轻扫时, 248 //在控制台输出滑动手势的方向,以及手指的数目 249 (Swiped) -> () in 250 print(Swiped.direction) 251 print(Swiped.numberOfTouchesRequired) 252 } 253 //将视图对象添加到根视图 254 self.view.addSubview(mainview) 255 } 256 257 //添加一个方法,给视图添加拖拽手势 258 func addPanGesture() 259 { 260 //初始化一个指定坐标和尺寸的视图对象 261 let mainview = UIView(x: 40, y: 40, w: 240, h: 240) 262 //设置视图对象的背景颜色为橙色 263 mainview.backgroundColor = UIColor.orange 264 //得到视图中心点的位置 265 var originP = mainview.center 266 //给视图对象添加一个拖拽手势 267 //并设置在一个代码块中,响应拖拽的事件 268 mainview.addPanGesture 269 { 270 (pan) -> () in 271 //当手势事件处于开始状态时, 272 if(pan.state == .began) 273 { 274 //得到视图此时的中心点的位置 275 originP = mainview.center 276 } 277 //得到拖拽手势在视图中的移动距离 278 let distance = pan.translation(in: mainview) 279 //通过计算,得到视图通过拖拽以后的目标位置 280 let result = CGPoint(x: originP.x+distance.x, y: originP.y+distance.y) 281 //刷新视图中心点的坐标。从而改变视图的位置 282 mainview.center = result 283 } 284 //将视图对象添加到根视图 285 self.view.addSubview(mainview) 286 } 287 288 //添加一个方法,给视图添加捏合手势 289 func addPinchGesture() 290 { 291 //初始化一个指定坐标和尺寸的视图对象 292 let mainview = UIView(x: 40, y: 120, w: 240, h: 240) 293 //设置视图对象的背景颜色为橙色 294 mainview.backgroundColor = UIColor.orange 295 //给视图对象添加一个捏合手势 296 //并设置在一个代码块中,响应捏合的事件 297 mainview.addPinchGesture 298 { (pinch) -> () in 299 //输出捏合手势的缩放比例 300 print(pinch.scale) 301 //经过捏合手势的缩放比例,实时调整视图的显示比例 302 mainview.setScale(x: pinch.scale, y: pinch.scale) 303 } 304 //将视图对象添加到根视图 305 self.view.addSubview(mainview) 306 } 307 308 //添加一个方法,给视图添加长按手势 309 func addLongPressGesture() 310 { 311 //初始化一个指定坐标和尺寸的视图对象 312 let mainview = UIView(x: 40, y: 120, w: 240, h: 240) 313 //设置视图对象的背景颜色为橙色 314 mainview.backgroundColor = UIColor.orange 315 //给视图对象添加一个长按手势 316 //并设置在一个代码块中,响应长按的事件 317 mainview.addLongPressGesture 318 { (long) -> () in 319 //当视图长按时,使视图左右晃动三次 320 mainview.shakeViewForTimes(3) 321 //并给视图添加一个阴影 322 mainview.addShadow(offset: CGSize(width:10, height:10) , radius: 10, color: .brown, opacity: 0.75) 323 } 324 //将视图对象添加到根视图 325 self.view.addSubview(mainview) 326 } 327 328 //添加一个方法,对按钮类型的扩展 329 func buttonExample() 330 { 331 //使用扩展后的初始化语句初始化按钮,并设置相关属性 332 let myButton = UIButton(x: 20, y: 40, w: 280, h: 50,//坐标、尺寸 333 target: self, //目标 334 action: #selector(ViewController.myButtonClicked))//动做 335 //将按钮控件移动至根视图的中心位置 336 myButton.center = self.view.center 337 //正常状态时的背景颜色 338 myButton.setBackgroundColor(UIColor.orange, forState: .normal) 339 //高亮状态时的背景颜色 340 myButton.setBackgroundColor(UIColor.magenta, forState: .highlighted) 341 //正常状态下的标题文字 342 myButton.setTitle("Tap me", for: .normal) 343 344 //设置按钮的背景颜色为橙色 345 self.view.backgroundColor = UIColor.orange 346 //并将按钮添加到根视图 347 self.view.addSubview(myButton) 348 } 349 350 @objc func myButtonClicked() 351 { 352 print("buttonPressed") 353 } 354 355 override func didReceiveMemoryWarning() { 356 super.didReceiveMemoryWarning() 357 // Dispose of any resources that can be recreated. 358 } 359 }