ios - 容器 View Controller 如何在 sizeForChildContentContainer 中查找和提供 subview Controller 的大小

标签 ios autolayout uicontainerview

当 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 的大小。

我正在尝试完成的视觉示例。
  • 绿色:ContainerVC
  • 紫色:ChildVC
  • 蓝色:
  • 之间的约束

    iPhone Portrait
    iPhone Landscape

    编辑:我仍然非常有兴趣回答这个问题!但是我开始想,这个问题可能是AutoLayout无法解决的,需要手工完成。

    Edit2:这是Apple描述的事件流。我认为这表明我们需要提前知道 ChildViewController 的大小。这可能表明这个逻辑可能需要手工完成......

    Updating a view controller’s traits and view size

    最佳答案

    我现在相信使用自动布局无法实现这一点。我向 Apple 开了一张支持票,但不幸的是,他们无法为我提供满意的答复。

    关于ios - 容器 View Controller 如何在 sizeForChildContentContainer 中查找和提供 subview Controller 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45496887/

    相关文章:

    ios - 自动布局不起作用?

    iOS UITableViewController 单元格在第一次更改时调整单元格高度后跳出位置

    ios - Autolayout center X constraints flips in RTL in iOS 9

    ios - 容器 View 中的数据仅传递给子 VC 一次

    ios - 如何使用 UIContainerView 在 iPad 上隐藏 UISplitViewController master 上嵌入的辅助 UITableViewController 的 DetailView

    ios - 如何动态更新约束?

    ios - 为什么当我返回时我的主视图 Controller 不更新?

    iphone - 无法以编程方式将正确大小的图像添加到 UIBarButtonItem

    iphone - iPhone开发中如何访问不同类栈中的对象?

    ios - Swift 4 中的布局 anchor