向地图视图添加约束

时间:2017-01-10 18:58:02

标签: ios xcode layout constraints mapkit

我有问题设置Map Kit View的约束。

这是我当前约束的屏幕截图:

enter image description here

但是,当我切换到另一个屏幕尺寸时,MKMapView不会相应地调整大小,尽管具有完全相同约束的标签的行为与预期相同:

enter image description here

你能告诉我我做错了什么吗?

这是Xcode项目:

https://dl.dropboxusercontent.com/u/18149046/Test.zip

1 个答案:

答案 0 :(得分:0)

我无法打开你的故事板 - 它只是给了我一个旋转的死亡沙滩球,所以我写了自己的。与Autolayout一样,有多种方法可以实现最终结果,但每种方法都解决了以下基本问题:

  1. MKMapViewUITableView都没有内在大小(标签确实有内在大小)。
  2. 您需要为height指定MKMapView才能修复y positionheight的{​​{1}}和UITableView
  3. 所以我展示了两种方法。

    方法1(我的首选方法:使用MKMapView):

    1. UIStackViewMKMapView嵌入垂直UITableView
    2. UIStackView固定到Superview的布局指南/边缘
    3. 将属性 - >分发设置为UIStackView
    4. 这样做的好处是,您可以直接在IB中自定义不同大小类的布局,并且没有“魔术”数字,因此它适用于所有大小类而无需更改

      Example 1: Main Layout Window

      Example 1: StackView Utility Window Settings

      方法2(将高度硬编码到Fill Equally的容器视图中):

      1. 添加MKMapView并将UIView置于其中
      2. 将尺寸检验器中的MKMapView自动调整弹簧设置为红色为箭头(如果设置则取消阻止I-Bars);见下图
      3. 设置包含MKMapView的{​​{1}}的高度;在我的例子中,我硬编码UIView
      4. 将包含MKMapView的{​​{1}}固定到领先,尾随,顶部布局指南/超级视图边缘
      5. 将包含300的{​​{1}}固定在UIView
      6. 的顶部
      7. MKMapView固定到前导,尾随,底部布局指南/ Superview边缘
      8. Example 2: Main Layout Window Example 2: MKMapView Size Inspector

        这样做的一个缺点是,您可能需要根据iDevices的不同大小调整UIView高度约束(尽管您可以将约束更新为MKMapView的一部分;我没有检查过)

        在我的两个示例中,我向UITableView提供UITableView,然后定义MKMapView的{​​{1}}和SuperView

        如果您正在寻找详细解释Autolayout的教程(如果文档没有明确说明一切),那么我建议height MKMapView,但互联网上有大量的数字。< / p>