本文将演示视图类型(UIVIEw)在frame/约束/旋转/缩放/圆角/各种手势等一些实用扩展方法。
首先确保在项目中已经安装了所需的第三方库。
点击【Podfile】,查看安装配置文件。
1 platform :ios,‘12.0‘2 use_frameworks!3 4 target ‘DemoApp‘ do5 source ‘https://github.com/CocoaPods/Specs.git‘6 pod ‘EZSwiftExtensions‘7 end
根据配置文件中的相关配置,安装第三方库。
然后点击打开【DemoApp.xcworkspace】项目文件。
在项目导航区,打开视图控制器的代码文件【VIEwController.swift】
现在开始编写代码,对基本类型:Int、String、Array、Dictionary、Date扩展。
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.orange103 //将视图添加到根视图104 self.vIEw.addSubvIEw(vIEw)105 106 //如果需要调整视图的坐标和尺寸,107 //只需要重新设置视图的四个属性即可。108 vIEw.x = 40109 vIEw.y = 40110 vIEw.w = 200111 vIEw.h = 300112 print(vIEw.x)113 }114 115 //添加一个方法,根据一个视图,确定另一个视图的位置和尺寸116 func accordingToOtherVIEws()117 {118 //初始化一个指定坐标和尺寸的视图对象119 let vIEw = UIVIEw(x: 40,y: 40,h: 100)120 //设置视图对象的背景颜色为灰色121 vIEw.backgroundcolor = UIcolor.gray122 //初始化另一个视图对象,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.orange131 //通过视图数组,全部添加到根视图132 self.vIEw.addSubvIEws([vIEw,vIEw2])133 }134 135 //添加一个方法,用来视图之间的对齐 *** 作136 func alginVIEws()137 {138 //初始化一个指定坐标和尺寸的视图对象139 let vIEw = UIVIEw(x: 0,w:200,h: 100)140 //设置视图对象的背景颜色为紫色141 vIEw.backgroundcolor = UIcolor.purple142 //初始化另一个视图对象,143 let vIEw2 = UIVIEw(x: 0,h: 200)144 //设置第二个视图对象的背景颜色为橙色145 vIEw2.backgroundcolor = UIcolor.orange146 //通过视图数组,全部添加到根视图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,h: 100)160 //设置视图对象的背景颜色为橙色161 mainvIEw.backgroundcolor = UIcolor.orange162 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,h: 100)177 //设置视图对象的背景颜色为橙色178 mainvIEw.backgroundcolor = UIcolor.orange179 //设置视图在水平方向上放大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,h: 200)190 mainvIEw.setCornerRadius(radius: 40)191 //设置视图对象的背景颜色为橙色192 mainvIEw.backgroundcolor = UIcolor.orange193 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,w: 240,h: 240)208 //设置视图对象的背景颜色为橙色209 mainvIEw.backgroundcolor = UIcolor.orange210 /*211 //给视图对象添加一个触摸手势212 //并设置在一个代码块中,响应触摸的事件213 mainvIEw.addTapGesture214 {215 //当视图对象被点击时216 (gesture) -> () in217 //在控制台输出相应的日志信息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,h: 240)240 //设置视图对象的背景颜色为橙色241 mainvIEw.backgroundcolor = UIcolor.orange242 243 //给视图对象添加一个轻扫手势,244 //并设置在一个代码块中,响应轻扫的事件245 mainvIEw.addSwipeGesture(direction: UISwipeGestureRecognizer.Direction.down)246 { 247 //当视图对象被轻扫时,248 //在控制台输出滑动手势的方向,以及手指的数目249 (Swiped) -> () in250 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,h: 240)262 //设置视图对象的背景颜色为橙色263 mainvIEw.backgroundcolor = UIcolor.orange264 //获得视图中心点的位置265 var originP = mainvIEw.center266 //给视图对象添加一个拖拽手势267 //并设置在一个代码块中,响应拖拽的事件268 mainvIEw.addPanGesture269 { 270 (pan) -> () in271 //当手势事件处于开始状态时, 272 if(pan.state == .began)273 {274 //获得视图此时的中心点的位置275 originP = mainvIEw.center276 }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 = result283 }284 //将视图对象添加到根视图285 self.vIEw.addSubvIEw(mainvIEw)286 }287 288 //添加一个方法,给视图添加捏合手势289 func addPinchGesture()290 {291 //初始化一个指定坐标和尺寸的视图对象292 let mainvIEw = UIVIEw(x: 40,y: 120,h: 240)293 //设置视图对象的背景颜色为橙色294 mainvIEw.backgroundcolor = UIcolor.orange295 //给视图对象添加一个捏合手势296 //并设置在一个代码块中,响应捏合的事件297 mainvIEw.addPinchGesture298 { (pinch) -> () in299 //输出捏合手势的缩放比例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,h: 240)313 //设置视图对象的背景颜色为橙色314 mainvIEw.backgroundcolor = UIcolor.orange315 //给视图对象添加一个长按手势316 //并设置在一个代码块中,响应长按的事件317 mainvIEw.addLongPressGesture318 { (long) -> () in319 //当视图长按时,使视图左右晃动三次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,w: 280,h: 50,//坐标、尺寸333 target: self,//目标334 action: #selector(VIEwController.mybuttonClicked))//动作335 //将按钮控件移动至根视图的中心位置336 mybutton.center = self.vIEw.center337 //正常状态时的背景颜色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.orange346 //并将按钮添加到根视图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 }总结
以上是内存溢出为你收集整理的[Swift通天遁地]五、高级扩展-(7)UIView(视图类型)的各种扩展方法全部内容,希望文章能够帮你解决[Swift通天遁地]五、高级扩展-(7)UIView(视图类型)的各种扩展方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)