Swift31:AutoLayout
前言
Apple提供的API有两套:
一套是iOS9之前用的使用
NSLayoutConstraint
,Apple可能是因为发现了使用NSLayoutConstraint代码过长的问题在iOS9推出了
NSLayoutAnchor
,不仅让约束声明更加清晰明了,而且还通过静态类型检查以确保约束能够正常工作。
关闭autoresizing布局方式
AutoLayout
又名自动布局
。使用AutoLayout
可以轻易写出目前主流的所有页面布局.在
iOS
中默认使用autoresizing
布局方式,做了相对父控件大小的伸缩,使用不方便。关闭
aotoresizing
布局,translatesAutoresizingMaskIntoConstraints = false
,可以开启自动布局
NSLayoutConstraint
只需要创建一个 NSLayoutConstraint
,然后激活,添加到对应的view即可。不过,是每一个约束都要创建,所以代码较长。创建一个NSLayoutConstraint只需要一个方法,为了方便,我们对每一个参数进行注释:
1 | NSLayoutConstraint.init(item: Any, //要约束的目标(比如 redView) |
举例添加一个view到界面上,距上距左各20,宽200,高100.
1 | // 创建一个红色的view添加到界面上 |
NSLayoutAnchor
iOS9.0之后,Apple推出了 NSLayoutAnchor
。
使用方式有两种:
- 第一种方式
- 创建
UIImageView
视图,闭包初始化
1 | let imgV: UIImageView = { |
- 添加到 ViewController 中
1 | view.addSubview(imgV) |
- 添加一个约束
1 | // 第一种写法:激活,数组 |
- 第二种方式
- 在
imgV
下方创建一个文本
1 | let lab: UILabel = { |
- 添加 lab 到 ViewController 上
1 | view.addSubview(lab) |
- 添加约束
1 | // 另一种写法:需要激活 |
- Post title:Swift31:AutoLayout
- Post author:张建
- Create time:2023-04-19 16:12:59
- Post link:https://redefine.ohevan.com/2023/04/19/Swift/Swift学习31:AutoLayout/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.