iOS 10 中的自动布局增加高度并使 Y 位置为负
Posted
技术标签:
【中文标题】iOS 10 中的自动布局增加高度并使 Y 位置为负【英文标题】:Autolayout in iOS 10 increases height and makes Y position negative 【发布时间】:2016-09-16 21:47:12 【问题描述】:我在 ios 10 和过去可以工作的自动布局的东西上玩得很开心(类似于其他人发布的关于如何设置延迟帧的内容)。
我已经解决了所有这些问题,但仍然存在一个问题。
我有一个非常复杂的视图,一个视图包含在另一个视图中,所有 4 个侧面都有约束以匹配其父视图。当所有东西都布置好后,superview 的 Y 值为 141.5,高度为 200(应该是这样)。
不幸的是,其中的视图应该有一个 Y 为 0 的 Y 值为 -141.5,高度为 341.5。这意味着内部视图太高了,并且在其上方的视图之上进行渲染。
我已经尝试了所有方法,包括设置明确的高度限制,但都被忽略了。
为什么它不留在它所属的地方?这一切都在 iOS 9 中完美运行。
【问题讨论】:
在设置约束 ***.com/a/39548367/1045672 后尝试通过[self.view layoutIfNeeded]
强制布局
实际上,您需要将滚动视图侧面的内容限制在 iOS 10 中的滚动视图中,这与我的直觉相反。一旦我开始这样做,一切都很好。为什么你需要这样做?不知道。
在滚动视图上支持自动布局时,您不应该默认这样做吗?据我所知,这不是 iOS10 特有的。
是的,这就是文档所说的,但同样,这对我来说似乎违反直觉,并且它曾经在没有这些限制的情况下工作。对我来说,既然滚动视图的内容应该比滚动视图本身大,你怎么能约束所有的边缘?
【参考方案1】:
虽然我不能确切地说为什么会解决这个问题,但现在很好。我所做的是将一些视图和约束创建从 viewDidLayoutSubviews 移动到 viewDidLoad(只有一次带有标志)。似乎新版本的布局引擎对在游戏后期添加视图和约束不满意。
【讨论】:
以上是关于iOS 10 中的自动布局增加高度并使 Y 位置为负的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewCell 高度自动布局在 iOS 10 上不起作用