iOS 10中的自动布局会增加高度并使Y位置变为负数。

3

我在iOS 10上遇到了一些问题,与自动布局相关的内容(类似于其他人发布的有关如何设置延迟框架的帖子)。

我已经解决了所有这些问题,但仍有一个问题存在。

我有一个相当复杂的视图,其中一个视图位于另一个视图内部,并具有与其父视图匹配的四个方向的约束。当所有布局都完成时,父视图的Y值为141.5,高度为200(正是应该的)。

不幸的是,其中的视图,应该有一个Y值为0,但其Y值为-141.5,高度为341.5。这意味着内部视图太高了,它正在顶部渲染视图。

我已经尝试了所有方法,包括设置显式高度约束,但所有方法都被忽略。

为什么它不能停留在原处? 在iOS 9中,这一切都运行得非常完美。


在设置约束后,尝试通过 [self.view layoutIfNeeded] 强制进行布局 https://dev59.com/ZFkS5IYBdhLWcg3wvI20#39548367 - Teffi
实际上,在iOS 10中,你需要将scrollview的边缘内容限制在scrollview内部,这与我的直觉相反。一旦我开始这样做,一切都没问题了。为什么需要这样做?我不知道。 - Ken A
当支持ScrollView上的自动布局时,你不是默认应该这样做吗?据我所知,这并不是iOS10特有的。 - Teffi
是的,文档确实这么说,但对我来说似乎很不合理,而且在没有这些限制的情况下也可以工作。对我来说,既然滚动视图的内容应该比滚动视图本身大,那么如何约束所有边缘呢? - Ken A
1个回答

0
虽然我不能确定为什么问题已经解决,但现在它已经好了。我所做的是将一些视图和约束创建从viewDidLayoutSubviews移动到viewDidLoad(只有一次,使用标志)。似乎新版本的布局引擎不喜欢在游戏晚期添加视图和约束。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接