当视图控制器( VC )发生大小变化时(例如,在设备旋转时),我们都知道这个方法被调用:
- (无效)viewWillTransitionToSize:(CGSize)大小 withTransitionCoordinator:(ID)协调
size
参数是视图控制器在大小更改后的视图的大小。
对于自定义容器视图控制器( ContainerVC )的子视图控制器( ChildVC ),默认情况下由size
参数给出该方法是 ContainerVC 的大小。
这一切都有效,直到 ChildVC 的视图小于 ContainerVC 的视图。在这种情况下, ContainerVC 需要实现此方法:
- (CGSize)sizeForChildContentContainer:(id)container withParentContainerSize:(CGSize)parentSize
问题:如何在该方法中扣除 ChildVC 视图的大小?
在大小/特征集合甚至发生变化之前,过早地调用该方法 - >调用[self.vc layoutIfNeeded];
来更新约束不起作用(约束尚未更新以响应特征变化)。
我当时唯一的线索是方法的parentSize
参数,这确实是未来的大小。
我正在努力完成的视觉示例。
编辑:我对这个问题的答案仍然非常感兴趣!但是我开始认为这个问题可能无法用AutoLayout解决,需要手工完成。
Edit2:这是Apple描述的事件流。我认为这表明我们需要提前知道ChildViewController的大小。这可能表明这种逻辑可能需要手工完成......
答案 0 :(得分:0)
我现在相信使用自动布局无法实现这一点。我向 Apple 开了一张支持票,但很遗憾,他们未能给我一个满意的答复。