★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(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 }