Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
旋转UICollectionView会丢失偏移量/索引XPath(iOS 8)_Ios_Rotation_Uicollectionview_Uicollectionviewlayout - Fatal编程技术网

旋转UICollectionView会丢失偏移量/索引XPath(iOS 8)

旋转UICollectionView会丢失偏移量/索引XPath(iOS 8),ios,rotation,uicollectionview,uicollectionviewlayout,Ios,Rotation,Uicollectionview,Uicollectionviewlayout,我的UICollectionView单元格存在允许旋转的问题 我有一个UICollectionView,我使用它作为一种媒体查看器,具有全屏和分页的图像/视频/音频。这允许用户在媒体之间滑动,就像Apple photos应用程序一样 旋转UICollectionView时,CV会丢失其偏移量,因此我在willTransition:方法中调用scroll to offset -(void)viewWillTransitionToSize:(CGSize)size withTransitionCoo

我的UICollectionView单元格存在允许旋转的问题

我有一个UICollectionView,我使用它作为一种媒体查看器,具有全屏和分页的图像/视频/音频。这允许用户在媒体之间滑动,就像Apple photos应用程序一样

旋转UICollectionView时,CV会丢失其偏移量,因此我在willTransition:方法中调用scroll to offset

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator

[coordinator animateAlongsideTransition:nil completion:^(id<UIViewControllerTransitionCoordinatorContext> context) {
        [self.collectionView setContentOffset:CGPointMake((width * currentPage), 0.0)];

    [UIView animateWithDuration:.2 animations:^{
        self.collectionView.alpha = 1;
    } completion:^(BOOL finished) {

        UICollectionViewCell *cell = [self cellInView];

        if([cell isKindOfClass:[MediaImageCell class]]){

        } else if([cell isKindOfClass:[MediaVideoCell class]]){
            [((MediaVideoCell *)cell) cellFinishedRotating];
        } else if([cell isKindOfClass:[MediaAudioCell class]]){

        }
    }];

}];
-(void)视图将转换大小:(CGSize)带有转换协调器的大小:(id)协调器
[协调员AnimateLongsideTransition:无完成:^(id上下文){
[self.collectionView setContentOffset:CGPointMake((宽度*当前页面),0.0)];
[UIView animateWithDuration:.2个动画:^{
self.collectionView.alpha=1;
}完成:^(布尔完成){
UICollectionViewCell*单元格=[self cellInView];
if([cell IsKindof类:[MediaImageCell类]]){
}else if([单元格是类的种类:[MediaVideoCell类]]){
[((MediaVideoCell*)cell)cellFinishedRotating];
}else if([cell IsKindof类:[MediaAudioCell类]]){
}
}];
}];
这导致单元格具有cellForRow:名称,这意味着我的许多单元格正在重新配置,同时也使旋转看起来很难看

我见过一些应用程序使用类似的功能,在这些应用程序中,当媒体旋转时,页面看起来很完美,比如Twitter(最新更新)、Box、DropBox

目前,我的CollectionView正在使用一个子类流布局,但我在这方面没有做什么特别的事情,只设置了sectionInset和ScrollDirection

下面是我制作的一个短片的链接,我试图在不使用旋转方法的情况下详细说明这个问题