[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 }

 

上一篇:bom-对话框


下一篇:2021Android通用流行框架大全,直击优秀开源框架灵魂