旋转Interface Orientation时将contentOffset保留在UICollectionView中
我正在尝试处理UICollectionViewController中的界面方向更改。我想要实现的是,我希望在界面旋转后具有相同的contentOffset。意思是,它应该根据边界变化的比例而变化。 以内容偏移量为{ bounds.size.width * 2,0}的肖像开始... …也应导致横向内容偏移量为{ bounds.size.width * 2,0}(反之亦然)。 计算新的偏移量不是问题,但不知道在何处(或何时)进行设置以获得平滑的动画。我正在做的事情是使中的布局无效willRotateToInterfaceOrientation:duration:并重置中的内容偏移didRotateFromInterfaceOrientation:: - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration; { self.scrollPositionBeforeRotation = CGPointMake(self.collectionView.contentOffset.x / self.collectionView.contentSize.width, self.collectionView.contentOffset.y / self.collectionView.contentSize.height); [self.collectionView.collectionViewLayout invalidateLayout]; } - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation; { CGPoint newContentOffset = CGPointMake(self.scrollPositionBeforeRotation.x * self.collectionView.contentSize.width, self.scrollPositionBeforeRotation.y * self.collectionView.contentSize.height); [self.collectionView newContentOffset animated:YES]; } 这将改变旋转后的内容偏移。 轮换期间如何设置?我试图在中设置新的内容偏移量willAnimateRotationToInterfaceOrientation:duration:但这导致了非常奇怪的行为。 可以在我在GitHub上的项目中找到一个示例。