2
2
3
3
4 创建项目

5
1
6 为了要定位 TextView在视图的位置 我们需要在

定位 Frame 定位完成 (当前的视图 大小和 位置以点为单位 ,以绝对位置呈现在,iphone 一点代表 几个像素 6p是3个像素 ,其他是2个像素)
1
运行
7
1
8
2
8 Interface Builder 简称 IB (提供了自动调整大小 和 重新定位的功能 来帮助我们)
我们在故事版中创建的视图控制器 默认允许

9.导致控制的长和 宽 是 600 600个点 (既不像iphone 也不像ipad 尺寸 ,苹果希望 人们将注意力放在 界面元素之间的关系上, 而不是关注物理真机的 分辨率 和 宽高比上)

10. 我们可以将 TextView.Center.y 设置为 父类的Center.y 就意味着 TextView总是 显示在居中的位置,而不是依赖于在哪个屏幕上运行了。
还可以 设置 TextView的宽度 是 父视图宽度的90% ,这样 TextVeiw与父视图的边缘各有5%的间隙 ,有了自动布局,可以很愉快的在任何的设备和任何方向上完美的排列界面元素,当我们的项目 使用了自动布局后,不能设置 视图 的 Frame Center bounds ,Xcode强制用 约束 代替 之前的 位置 和大小 信息。
11 首先 我们有一个
-ViewController(包含IBOutlet) 如下图
我们将会在 InterfaceBuilder 中来创建这些元素与之关联,包含了 TableView(Data Source)俩个协议方法,还有在是视图中添加一个表格视图(TableView)

-源文件 HorizaontailtemList.swift (这个类是滚动视图的子类,用于显示滚动视图列表)

导航栏

左侧大纲导引视图

工作区

对象库找到 UIView

拖拽到控制器的视图上面

更改属性

调整视图大小 使之更像导航栏

注意 我们应该让视图边缘与 控制器的 top left right 相重合 ,接下来我们需要创建约束了
- 选择当前视图 ,点击右下角


此时 添加了 三个约束到 视图里面 ,所创建的每一个约束都与 一个等于表达式 相关,比如说 顶部的约束

接着 ,为这个View 高度 添加一个 约束

此时我们已将为这个View 添加了 4个约束了,这四个约束是否可以描述这个 View的位置和 大小
如果我们想更改 高度约束 怎么做呢 ,如何编辑已经创建好的高度约束呢?

然后在这里面找到 为 View创建好的4个约束,点击Edit ,可修改
运行结果


添加Lable 到 视图上




现在 必须要满足 Label 在 View 中 居中显示



除非 位置 是 View的中央 ,否则 会 看到 橘黄色的指示线 和 虚线
当我们在 IB 中 设置用户界面的时候,拖拽的视图 可能会 破坏 约束的方程式
如果 将Label 放在 水平 和 垂直 居中 ,IB会显示蓝色的 指示线 表示Label的水平居中 和 垂直居中 。
如果出现了橘黄色,则说明 水平 和 垂直居中被破坏了
在IB中 ,橘黄色的实线代表的是 当前这个元素的实际位置, 而虚线代表应该所处的位置。
要想修复这个问题,
在这里解决 关于 约束冲突问题

里面有很多选项,我们只希望 让 元素 移动 到 约束的位置上


这样 已将将 元素对象 放到 适合 的位置上了

网友评论