我的UIViewControllers的配置如下:
我有一个带有UICollectionView的UIViewController,它有以下约束:top,leading,trailing和bottom设置为0及其superview(superview是我的UIViewController的UIView).
当我点击一个单元格时,我在UINavigationController中推送另一个UIViewController,它是单元格的详细viewController.简单.
当我在第一个视图控制器中更改设备方向时,正确设置了UICollectionView边界.
这是我的问题:
如果我在UICollectionView中选择一个单元格,则会显示第二个详细信息viewController.然后,如果在第二个ViewController中我改变了设备方向,然后我回到第一个viewController,我的UIViewController的视图还没有被旋转.我不知道为什么,我尝试了这个没有成功:
我的firstViewController的viewDidAppear()中的self.view.layoutIfNeeded()根据当前方向更新约束,它不起作用.这没用,因为我注意到一件事:
我的第一个viewController的框架视图仍然与前一个方向相同,它没有改变……但是如果我再次旋转设备,UIViewController会检测方向变化,并正确设置视图边界.
所以我的问题是:当我在第二个视图控制器中,并且我正在旋转设备,然后我回到上一个视图控制器时,之前的控制器没有检测到我刚刚在第二个视图控制器.
GIF演示:
之后,我从纵向模式旋转到横向模式,视图不会更改,因为调试视图层次结构工具显示如下:
UIView仍处于纵向状态,因此无法使用新方向更新UICollectionView约束…
有任何想法吗?