快速更新,因为我看到很多人对此感兴趣,因为iOS 10已经上线了。我最终开了一个TSI,Apple今天回复说明我应该为此打开一个bug。他们没有为解决方法提供任何进一步的信息或建议,这意味着这里有一些问题。
与此同时,我还在寻找一种解决方法。我将整个布局从StackView中拉出来并替换为自动布局约束,只是遇到了同样的问题。问题可能出在MapView上。
我有一个问题,在垂直StackView中放置一些标签和MapView。此视图与iOS 10 / Xc8的行为不一致。
在6 / S模拟器上,它可以正确渲染。在SE上,MapView
实际上看起来比它在6上更大,它掩盖了标签。旋转后解决(在故事板预览中显示正常)
我用非常简单的项目证明了这种行为。它包含一个Storyboard视图,其中包含一个垂直StackView,如下所示:
StackView使用“填充”对齐和“填充”分布。没有间距。
每个标签的内容拥抱优先级为251,抗压缩性为750。
MapView
内容拥抱250,压缩750。
我试过玩这些数字,但它从未奏效。从理论上讲,MapView
具有最低的拥抱优先级,因此它应该使用Fill分布来消耗所有额外的空间。
相反,这就是我所看到的(在SE SIM上)
如果我旋转设备并返回 - 它看起来很好。所以看起来布局有一些时间问题。但是,我在这里没有做任何代码 - 标签文本在storyboard
中是硬编码的。我不会在代码中做任何事情。
如上所述,它在iPhone6上看起来很好。如果我随意调整标签的高度,它看起来也很好。我注意到当标签完全相同fontsize
时,它很好。所以我想知道它是否使用初始标签fontsize
计算内在contentsize
或类似的东西。
iPad Air sim也存在问题。事实上,整个地图最初都是由地图覆盖的,我根本看不到标签(直到旋转)。
我不确定ScrollViews
是否应与StackViews
很好地配合。也就是说,我确实尝试将MapView
拉出来并将其固定在StackView
autolayout
下方。令人惊讶的是,我有相同的最终结果。
最后的注意事项 - 我没有使用示例项目对此进行测试,但在我的原始项目中(表现出相同的行为),这发生在Xcode 8中,而不是在Xcode 7中。