UICollectionViewTransitionLayout – 模仿iOS7照片集合视图布局

我在 animating changes in a collection view读苹果 guidelines,试图模仿照片应用程序.选择图像时,图像会从其位于集合视图中的区域“增长”到全尺寸视图.

Apple注意到使用UICollectionViewLayout对象但对我来说它看起来非常混乱,并且全尺寸图库中的最终图像不可见,因为动画集中在集合视图上.

我的代码如下

-(void)setHorizontalLayout:(BOOL)layout
{
    if (layout == YES)
    {


        UICollectionViewTransitionLayout *layout =[self.collectionView startInteractiveTransitionToCollectionViewLayout:[self getHorizontalPagingLayout] completion:^(BOOL completed,BOOL finish) {
            [self.collectionView setPagingEnabled:YES];
        }];

        [self.collectionView.collectionViewLayout invalidateLayout];
        layout.transitionProgress = 0.1;
        double delayInSeconds = 0.1;
        dispatch_time_t popTime = dispatch_time(disPATCH_TIME_Now,(int64_t)(delayInSeconds * NSEC_PER_SEC));
        dispatch_after(popTime,dispatch_get_main_queue(),^(void){
            [self updateLayout:layout];
            //[self.collectionView.collectionViewLayout invalidateLayout];
            //[self.collectionView finishInteractiveTransition];

        });
        [self.collectionView.collectionViewLayout invalidateLayout];
        return;
}
}

-(void)updateLayout:(UICollectionViewTransitionLayout *)layout
{
    if (layout.transitionProgress >= 1.0)
    {

        [self.collectionView finishInteractiveTransition];
        return;
    }
    double delayInSeconds = 0.05;
    dispatch_time_t popTime = dispatch_time(disPATCH_TIME_Now,(int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime,^(void){
        layout.transitionProgress += 0.005;
        [self.collectionView.collectionViewLayout invalidateLayout];
        [self updateLayout:layout];
    });

}

解决方法

如何使用自定义转换呈现带有UIImageView的UIViewController?本教程帮助了我.

http://www.teehanlax.com/blog/custom-uiviewcontroller-transitions/

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...