【发布时间】:2016-01-06 23:38:22
【问题描述】:
当屏幕旋转时,我有一个 UIViewCollection 工作得很好。一切都完美地调整了大小。
但是,当我转到模态视图控制器,然后旋转,然后关闭时,只有“一些”旋转任务完成。它不会调整单元格的大小。
我确实在我的模态视图控制器中设置了一个委托,它确实调用了父视图控制器的 didRotate...
- (void)didRotateFromInterfaceOrientationInModal:(UIInterfaceOrientation)fromInterfaceOrientation {
[self.collectionView performBatchUpdates:^{
[self.collectionView setCollectionViewLayout:self.collectionView.collectionViewLayout animated:YES];
} completion:nil];
[self.collectionView.collectionViewLayout invalidateLayout];
[self.collectionView invalidateIntrinsicContentSize];
}
- (void)willRotateToInterfaceOrientationInModal:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[self.collectionView.collectionViewLayout invalidateLayout];
[self.collectionView invalidateIntrinsicContentSize];
}
并且我已经验证了当我在模态视图控制器中旋转时它们会被触发。
再次,当我从 collectionviewcontroler 旋转时,正在重新计算单元格大小,只有在模式视图控制器中旋转时才会重新计算单元格大小。在这两种情况下都会触发完全相同的代码。
【问题讨论】:
-
您的模式是原始视图控制器的子视图控制器吗?如果不将其添加为子视图控制器,则显示它。
-
它是一个子视图控制器。父 UICollectionViewController 呈现一个模态子 UIViewController。
标签: ios objective-c uicollectionview orientation ios9