我有一个使用 aUICollectionView
和 a的照片库视图UICollectionViewFlowLayout
,它具有pagingEnabled
并水平滚动,一次只显示一个视图。
在我尝试旋转它之前效果很好......
当我旋转设备时,willRotateToInterfaceOrientation:duration:
我更新了它,collectionView.contentOffset
所以它停留在正确的项目上,我调整了 currentCell 的大小,让它动画到新的维度。 问题出在两个状态之间的动画中,“先前”方向从左上角开始动画,并进入其他单元格的视图。 我做错了什么使得屏幕上的动画视图是FUBAR?
下面是它在行动中的样子:
http://www.smugmug.com/gallery/n-3F9kD/i-BwzRzRf/A(忽略断断续续的视频,那是 Quicktime 的错:p)
这是我的willAnimateRotationToInterfaceOrientation:duration
:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
// Update the flowLayout's size to the new orientation's size
UICollectionViewFlowLayout *flow = (UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout;
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
flow.itemSize = CGSizeMake(self.collectionView.frame.size.width, self.collectionView.frame.size.height);
} else {
flow.itemSize = CGSizeMake(self.collectionView.frame.size.width, self.collectionView.frame.size.height);
}
self.collectionView.collectionViewLayout = flow;
[self.collectionView.collectionViewLayout invalidateLayout];
// Get the currently visible cell
PreviewCellView *currentCell = (PreviewCellView*)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow:_currentIndex inSection:0]];
// Resize the currently index to the new flow's itemSize
CGRect frame = currentCell.frame;
frame.size = flow.itemSize;
currentCell.frame = frame;
// Keep the collection view centered by updating the content offset
CGPoint newContentOffset = CGPointMake(_currentIndex * frame.size.width, 0);
self.collectionView.contentOffset = newContentOffset;
}
据我所知,我在任何地方都找不到任何示例代码来说明如何制作优雅旋转的“照片库”风格的收藏视图。