我实现了从ViewController A(嵌入在UINavigationController中)到ViewController B的自定义转换。
过渡"幻灯片" VC B从底部直到占用垂直屏幕大小的1/2 - 使用自定义UIViewControllerAnimatedTransitioning
对象。自定义演示文稿还会移动呈现的VC A,以便使用animateAlongsideTransition(in:animation:compeltion)
在presentationWillBegin()
覆盖自定义UIPresentationContorller
时调用传入的VC B。认为分屏是顶部呈现VC的下半部分和底部呈现的VC。
除了一个我似乎无法解决的唠叨案例外,一切都按预期工作:
我理解这个问题在某种程度上取决于顶部布局指南在返回前台时重新校准,但在显示视图之前无法弄清楚如何修复它。
一种方法是将子视图的约束设置为" superview top"而不是"顶部布局指南"但是,那就是自动布局作为NavC的一部分。
viewWillAppear/viewWillDisappear
永远不会被调用(因为VC A&#39}的视图从未被完全解雇过。)containerViewWillLayoutSubviews/containerViewDidLayoutSubviews
的UIPresentationController
在此情况下未被调用任何想法都非常感激。
iOS 10,Xcode 8.3
答案 0 :(得分:0)
使用Xcode 9进行编译并在iOS 11上运行似乎已经解决了这个问题。 参考我上面的描述,在Xcode 9 / iOS 11中:
当VC B被解除时,VC A的按钮会自动重新定位在VC A的顶部。重新定位不是动画的,看起来很奇怪但是它按预期工作并且遵循顶部布局指南的自动布局约束。