[Swift通天遁地]六、智能布局-(6)其他几种约束关系:父视图/Corner/Edge/AnchorAndFillEdge
作者:互联网
本文将演示其他几种约束关系。
首先确保在项目中已经安装了所需的第三方库。
点击【Podfile】,查看安装配置文件。
1 platform :ios, ‘12.0’ 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'Neon' 7 end
根据配置文件中的相关配置,安装第三方库。
然后点击打开【DemoApp.xcworkspace】项目文件。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
1 import UIKit 2 //在当前的类文件中,引入已经安装的第三方类库 3 import Neon 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 fillingSuperview() 12 //用于将视图对象,约束在父视图的某个角落 13 cornerExample() 14 //用于将视图对象,约束在父视图的四个边缘 15 edgeExample() 16 //用于将视图对象,约束并填充父视图的边缘 17 fillingAnEdge() 18 } 19 20 //添加一个方法 21 //用于父视图的填充约束 22 func fillingSuperview() 23 { 24 //初始化一个显示区域 25 let frame = CGRect(x: 0, y: 0, width: 100, height: 100) 26 //创建一个指定显示区域的视图对象 27 let neonView = UIView(frame: frame) 28 //设置视图的背景颜色为橙色 29 neonView.backgroundColor = UIColor.orange 30 //将视图对象添加到根视图 31 self.view.addSubview(neonView) 32 33 //初始化一个浮点常量,作为视图的间距 34 let padding = CGFloat(40) 35 //将视图对象填充父视图, 36 //并设置父子视图在填充方向上的间距 37 neonView.fillSuperview(left: padding, right: padding, top: padding, bottom: padding) 38 } 39 40 //添加一个方法 41 //用于将视图对象,约束在父视图的某个角落 42 func cornerExample() 43 { 44 //初始化一个颜色数组,作为四个视图的背景颜色 45 let colors = [UIColor.purple, UIColor.green, UIColor.orange, UIColor.blue] 46 //初始化一个角落位置数组,作为四个数组在父视图中的约束位置 47 let corners = [Corner.topLeft, Corner.topRight, Corner.bottomLeft, Corner.bottomRight] 48 49 //初始化两个浮点类型的数字, 50 //表示间距和尺寸 51 let pad = CGFloat(20) 52 let size = CGFloat(100) 53 //通过一个四次的循环语句,依次创建四个视图对象 54 for i in 0...3 55 { 56 //初始化一个视图对象 57 let view = UIView() 58 //根据循环的索引, 59 //从颜色数组中,获得对应的元素,作为视图的背景颜色 60 view.backgroundColor = colors[i] 61 //并将视图对象添加到父视图 62 self.view.addSubview(view) 63 64 //根据循环的索引,从约束数组中,获得对应的元素。 65 //作为视图对象的角落约束, 66 //将视图对象约束在父视图的指定位置, 67 //并设置父子视图在四个方向上的间距。 68 view.anchorInCorner(corners[i], xPad: pad, yPad: pad, width: size, height: size) 69 } 70 } 71 72 //添加一个方法 73 //用于将视图对象,约束在父视图的四个边缘 74 func edgeExample() 75 { 76 //初始化一个指定显示区域的视图对象, 77 //作为其他自定义视图对象的父视图。 78 let viewParent = UIView(frame: CGRect(x: 0, y: 80, width: 320, height: 320)) 79 //设置视图对象的背景颜色为黑色 80 viewParent.backgroundColor = UIColor.black 81 //将视图对象添加到根视图 82 self.view.addSubview(viewParent) 83 84 //初始化一个颜色数组,作为四个视图的背景颜色 85 let colors = [UIColor.purple, UIColor.green, UIColor.orange, UIColor.blue] 86 //初始化一个边缘位置数组,作为四个视图在父视图中的边缘位置 87 let edges = [Edge.top, Edge.left, Edge.bottom, Edge.right] 88 89 //初始化两个浮点类型的数字, 90 //表示间距和尺寸 91 let pad = CGFloat(20) 92 let size = CGFloat(60) 93 //通过一个四次的循环语句,依次创建四个视图对象 94 for i in 0...3 95 { 96 //初始化一个视图对象 97 let view = UIView() 98 //根据循环的索引, 99 //从颜色数组中,获得对应的元素,作为视图的背景颜色 100 view.backgroundColor = colors[i] 101 //并将视图对象添加到父视图 102 viewParent.addSubview(view) 103 104 //根据循环的索引,从约束数组中,获得对应的元素。 105 //作为视图对象的边缘约束, 106 //将视图对象约束在父视图的指定位置, 107 //并设置父子视图在四个方向上的间距。 108 view.anchorToEdge(edges[i], padding: pad, width: size, height: size) 109 } 110 } 111 112 //添加一个方法 113 //用于将视图对象,约束并填充父视图的边缘 114 func fillingAnEdge() 115 { 116 //初始化一个指定显示区域的视图对象, 117 //作为其他自定义视图对象的父视图。 118 let colors = [UIColor.purple, UIColor.green, UIColor.orange, UIColor.blue] 119 //初始化一个边缘位置数组,作为四个视图在父视图中的边缘位置 120 let edges = [Edge.top, Edge.bottom, Edge.left, Edge.right] 121 //初始化两个浮点类型的数字, 122 //表示间距和尺寸 123 let pad = CGFloat(10) 124 let size = CGFloat(40) 125 126 //初始化一个指定显示区域的视图对象, 127 //作为其他自定义视图对象的父视图。 128 let viewParent1 = UIView(frame: CGRect(x: 50, y: 50, width: 220, height: 220)) 129 //设置视图对象的背景颜色为浅灰色 130 viewParent1.backgroundColor = UIColor.lightGray 131 //将父视图对象添加到根视图 132 self.view.addSubview(viewParent1) 133 134 //通过一个两次的循环语句,依次创建两个视图对象 135 for i in 0...1 136 { 137 //初始化一个视图对象 138 let view = UIView() 139 //根据循环的索引, 140 //从颜色数组中,获得对应的元素,作为视图的背景颜色 141 view.backgroundColor = colors[i] 142 //并将视图对象添加到父视图 143 viewParent1.addSubview(view) 144 145 //根据循环的索引,从约束数组中,获得对应的元素。 146 //作为视图对象的边缘约束, 147 //将视图对象约束并填充在父视图的指定位置, 148 //并设置父子视图在四个方向上的间距。 149 view.anchorAndFillEdge(edges[i], xPad: pad, yPad: pad, otherSize: size) 150 } 151 152 //初始化一个指定显示区域的视图对象, 153 //作为其他两个自定义视图对象的父视图。 154 let viewParent2 = UIView(frame: CGRect(x: 50, y: 300, width: 220, height: 220)) 155 //设置视图对象的背景颜色为浅灰色 156 viewParent2.backgroundColor = UIColor.lightGray 157 //将视图对象添加到根视图 158 self.view.addSubview(viewParent2) 159 160 //通过两次的循环语句,依次创建两个视图对象 161 for i in 2...3 162 { 163 //初始化一个视图对象 164 let view = UIView() 165 //根据循环的索引, 166 //从颜色数组中,获得对应的元素,作为视图的背景颜色 167 view.backgroundColor = colors[i] 168 //并将视图对象添加到父视图 169 viewParent2.addSubview(view) 170 171 //根据循环的索引,从约束数组中,获得对应的元素。 172 //作为视图对象的边缘约束, 173 //将视图对象约束并填充在父视图的指定位置, 174 //并设置父子视图在四个方向上的间距。 175 view.anchorAndFillEdge(edges[i], xPad: pad, yPad: pad, otherSize: size) 176 } 177 } 178 179 override func viewWillLayoutSubviews() { 180 181 } 182 183 override func didReceiveMemoryWarning() { 184 super.didReceiveMemoryWarning() 185 // Dispose of any resources that can be recreated. 186 } 187 }
标签:视图,AnchorAndFillEdge,Edge,视图,let,view,对象,UIColor 来源: https://www.cnblogs.com/strengthen/p/10270062.html