当 View Controller ( VC ) 的大小发生变化时(例如在设备旋转时),我们都知道这个方法被调用:
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator
size
参数是该 View Controller View 的大小 后 尺寸变化。对于作为自定义容器 View Controller ( ContainerVC ) 的子级的 View Controller ( ChildVC ),则默认情况下为
size
该方法给出的参数是 ContainerVC 的大小。这一切都有效,直到 ChildVC 的 View 小于 ContainerVC 的 View 。在这种情况下,ContainerVC 需要实现这个方法:
-(CGSize)sizeForChildContentContainer:(id)container withParentContainerSize:(CGSize)parentSize
问题:我怎样才能在该方法中扣除 ChildVC View 的大小?
该方法被调用得太早,甚至在大小/特征集合发生变化之前 -> 调用
[self.vc layoutIfNeeded];
更新约束不起作用(约束尚未更新以响应特征变化)。我当时唯一的线索是该方法的
parentSize
参数确实是 future 的大小。我正在尝试完成的视觉示例。
编辑:我仍然非常有兴趣回答这个问题!但是我开始想,这个问题可能是AutoLayout无法解决的,需要手工完成。
Edit2:这是Apple描述的事件流。我认为这表明我们需要提前知道 ChildViewController 的大小。这可能表明这个逻辑可能需要手工完成......
最佳答案
我现在相信使用自动布局无法实现这一点。我向 Apple 开了一张支持票,但不幸的是,他们无法为我提供满意的答复。
关于ios - 容器 View Controller 如何在 sizeForChildContentContainer 中查找和提供 subview Controller 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45496887/