[Swift通天遁地]五、高级扩展-(7)UIView(视图类型)的各种扩展方法

[Swift通天遁地]五、高级扩展-(7)UIView(视图类型)的各种扩展方法,第1张

概述本文将演示视图类型(UIView)在frame/约束/旋转/缩放/圆角/各种手势等一些实用扩展方法。 首先确保在项目中已经安装了所需的第三方库。 点击【Podfile】,查看安装配置文件。 1 platform :ios, ‘12.0‘2 use_frameworks!3 4 target ‘DemoApp‘ do5 source ‘https://github.com/C

本文将演示视图类型(UIVIEw)在frame/约束/旋转/缩放/圆角/各种手势等一些实用扩展方法。

首先确保在项目中已经安装了所需的第三方库。

点击【Podfile】,查看安装配置文件。

1 platform :ios,12.02 use_frameworks!3 4 target DemoApp do5     source https://github.com/CocoaPods/Specs.git6     pod EZSwiftExtensions7 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(视图类型)的各种扩展方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1021071.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存