向地图视图添加约束
Adding constraints to Map View
我在为 Map Kit View 设置约束时遇到问题。
这是我当前约束的屏幕截图:
然而,当我切换到另一个屏幕尺寸时,MKMapView 不会相应地调整大小,尽管具有完全相同约束的标签的行为符合预期:
你能告诉我我做错了什么吗?
这里是 Xcode 项目:
我打不开你的情节提要 - 它让我感到死亡的旋转沙滩球,所以我自己写了一个。与 Autolayout 一样,有多种方法可以实现最终结果,但每种方法都解决了根本问题:
MKMapView
和 UITableView
都没有固有尺寸(标签确实有固有尺寸)。
- 您需要为
MKMapView
指定 height
以修复 UITableView
和 [=10 的 y position
和 height
=]
所以我展示了两种方法。
方法 1(我的首选方法:使用 UIStackView
):
- 在垂直
UIStackView
中嵌入 MKMapView
和 UITableView
- 将
UIStackView
固定到您的超级视图的布局指南/边缘
- 将属性->分布设置为
Fill Equally
这样做的好处是您可以直接在 IB 中自定义不同尺寸 类 的布局,并且没有 "magic" 数字,因此它适用于所有尺寸 类 而无需更改
方法 2(将高度硬编码到 MKMapView
的容器视图中):
- 添加
UIView
并将 MKMapView
放入其中
- 将大小检查器中的
MKMapView
自动调整大小弹簧设置为箭头的纯红色(如果已设置,则取消阻止 I-Bars);见下图
- 为包含
MKMapView
的 UIView
设置高度;在我的示例中,我硬编码 300
- 将包含
MKMapView
的 UIView
固定到前导、尾随、顶部布局参考线/超级视图边缘
- 将包含
MKMapView
的 UIView
固定到 UITableView
的顶部
- 将
UITableView
固定到前导、尾随、底部布局参考线/超级视图边缘
这有一个缺点,您可能需要根据不同尺寸的 iDevices 调整 MKMapView
高度限制(尽管您可以将限制更新为 SuperView
; 我没查过)
在我的两个示例中,我都给 MKMapView
一个 height
,然后定义 UITableView
的 y position
和 height
。
如果您正在寻找详细解释 Autolayout 的教程(如果文档没有把所有内容都说清楚),那么我建议 Developing iOS 9 Apps with Swift
在 iTunesU
上,但 Internet 上有很多.
我在为 Map Kit View 设置约束时遇到问题。
这是我当前约束的屏幕截图:
然而,当我切换到另一个屏幕尺寸时,MKMapView 不会相应地调整大小,尽管具有完全相同约束的标签的行为符合预期:
你能告诉我我做错了什么吗?
这里是 Xcode 项目:
我打不开你的情节提要 - 它让我感到死亡的旋转沙滩球,所以我自己写了一个。与 Autolayout 一样,有多种方法可以实现最终结果,但每种方法都解决了根本问题:
MKMapView
和UITableView
都没有固有尺寸(标签确实有固有尺寸)。- 您需要为
MKMapView
指定height
以修复UITableView
和 [=10 的y position
和height
=]
所以我展示了两种方法。
方法 1(我的首选方法:使用 UIStackView
):
- 在垂直
UIStackView
中嵌入 - 将
UIStackView
固定到您的超级视图的布局指南/边缘 - 将属性->分布设置为
Fill Equally
MKMapView
和 UITableView
这样做的好处是您可以直接在 IB 中自定义不同尺寸 类 的布局,并且没有 "magic" 数字,因此它适用于所有尺寸 类 而无需更改
方法 2(将高度硬编码到 MKMapView
的容器视图中):
- 添加
UIView
并将MKMapView
放入其中 - 将大小检查器中的
MKMapView
自动调整大小弹簧设置为箭头的纯红色(如果已设置,则取消阻止 I-Bars);见下图 - 为包含
MKMapView
的UIView
设置高度;在我的示例中,我硬编码300
- 将包含
MKMapView
的UIView
固定到前导、尾随、顶部布局参考线/超级视图边缘 - 将包含
MKMapView
的UIView
固定到UITableView
的顶部
- 将
UITableView
固定到前导、尾随、底部布局参考线/超级视图边缘
这有一个缺点,您可能需要根据不同尺寸的 iDevices 调整 MKMapView
高度限制(尽管您可以将限制更新为 SuperView
; 我没查过)
在我的两个示例中,我都给 MKMapView
一个 height
,然后定义 UITableView
的 y position
和 height
。
如果您正在寻找详细解释 Autolayout 的教程(如果文档没有把所有内容都说清楚),那么我建议 Developing iOS 9 Apps with Swift
在 iTunesU
上,但 Internet 上有很多.