Ant*_*nyR 4 orientation ios autolayout swift
我正在创建一个可以在横向和纵向模式下使用iPad的应用程序.我的UIViewControllers的配置如下:
我有一个UIViewController具有UICollectionView以下约束的a:top,leading,trailing和bottom设置为0及其superview(superview是UIView我的UIViewController).
当我点击一个细胞,我推另一个UIViewController在UINavigationController其是所述细胞的细节的viewController.简单.
当我在第一个视图控制器中更改设备方向时,UICollectionView正确设置边界.
这是我的问题:
如果我在中选择一个单元格,UICollectionView则会显示第二个详细信息viewController.然后,如果在第二个ViewController中我改变了设备方向然后我回到第一个viewController,我的视图UIViewController还没有被旋转.我不知道为什么,我尝试了这个没有成功:
self.view.layoutIfNeeded()在viewDidAppear()我的firstViewController中根据当前方向更新约束,它不起作用.这没用,因为我注意到一件事:
我的第一个viewController的框架视图仍然与前一个方向相同,它没有改变......但是如果我再次旋转设备,UIViewController检测方向会改变,并且视图边界设置正确.
所以我的问题是:当我在第二个视图控制器中,并且我正在旋转设备,然后我回到前一个视图控制器时,之前的控制器没有检测到我刚刚在第二个视图控制器.
GIF演示:
之后,我从纵向模式旋转到横向模式,视图 不会更改,因为调试视图层次结构工具显示如下:
在UIView仍处于肖像,因此UICollectionView约束的无法与新的方向进行更新...
有任何想法吗?
通过在viewWillAppear方法中使用屏幕边界重置第一个viewController中的视图框架来解决:
public override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
self.view.frame = UIScreen.main.bounds
self.view.layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)
就像我的viewController的主要UIView有正确的框架,当我调用layoutIfNeeded()我的UIView 时,约束可以自动更新.
| 归档时间: |
|
| 查看次数: |
1557 次 |
| 最近记录: |