我已经使我的集合视图单元格以编程方式计算,并且我使用sizeForItemAtIndexPath
方法设置单元格的大小。
但是当屏幕旋转时,我需要重新计算尺寸并为细胞设置它们。那么,如何在屏幕旋转后再次调用该函数?
顺便说一句,我知道didRotateFromInterfaceOrientation
方法,我遇到的唯一问题是我不知道应该如何调用再次设置单元格的大小。
谢谢
答案 0 :(得分:3)
使用更新的UIViewController方法的另一种方法
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)
{
} completion:^(id<UIViewControllerTransitionCoordinatorContext> context)
{
[self.collectionView.collectionViewLayout invalidateLayout];
}];
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}
答案 1 :(得分:1)
您可以使用此方法重新加载集合视图:当设备更改其方向时,将调用此方法。重新加载collectionview将调用sizeForItemAtIndexPath。
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[collectionView reloadData]; // change collectionView with your collection view
}
答案 2 :(得分:0)
计算细胞的动态可以用自动计算代替。
+---+-----+-----+
| | | |
| | | |
| | +=====+
+---+ | | |
| | | | |
| +-+ +=====+
| | | | |
| | +-+ | |
| | | | |
| | +-+ |
| | |_____|
| | | |
+---+-----+-----+
答案 3 :(得分:0)
试试这个
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[collectionView reloadInputViews];
}