我有问题设置Map Kit View的约束。
这是我当前约束的屏幕截图:
但是,当我切换到另一个屏幕尺寸时,MKMapView不会相应地调整大小,尽管具有完全相同约束的标签的行为与预期相同:
你能告诉我我做错了什么吗?
这是Xcode项目:
答案 0 :(得分:0)
我无法打开你的故事板 - 它只是给了我一个旋转的死亡沙滩球,所以我写了自己的。与Autolayout一样,有多种方法可以实现最终结果,但每种方法都解决了以下基本问题:
MKMapView
和UITableView
都没有内在大小(标签确实有内在大小)。height
指定MKMapView
才能修复y position
和height
的{{1}}和UITableView
所以我展示了两种方法。
方法1(我的首选方法:使用MKMapView
):
UIStackView
和MKMapView
嵌入垂直UITableView
UIStackView
固定到Superview的布局指南/边缘UIStackView
这样做的好处是,您可以直接在IB中自定义不同大小类的布局,并且没有“魔术”数字,因此它适用于所有大小类而无需更改
方法2(将高度硬编码到Fill Equally
的容器视图中):
MKMapView
并将UIView
置于其中MKMapView
自动调整弹簧设置为红色为箭头(如果设置则取消阻止I-Bars);见下图MKMapView
的{{1}}的高度;在我的例子中,我硬编码UIView
MKMapView
的{{1}}固定到领先,尾随,顶部布局指南/超级视图边缘300
的{{1}}固定在UIView
MKMapView
固定到前导,尾随,底部布局指南/ Superview边缘这样做的一个缺点是,您可能需要根据iDevices的不同大小调整UIView
高度约束(尽管您可以将约束更新为MKMapView
的一部分;我没有检查过)
在我的两个示例中,我向UITableView
提供UITableView
,然后定义MKMapView
的{{1}}和SuperView
。
如果您正在寻找详细解释Autolayout的教程(如果文档没有明确说明一切),那么我建议height
MKMapView
,但互联网上有大量的数字。< / p>