gpt4 book ai didi

ios - UICollectionViewTransitionLayout - 模仿 iOS7 照片 collectionview 布局

转载 作者:可可西里 更新时间:2023-11-01 03:21:22 24 4
gpt4 key购买 nike

我在读苹果 guidelinesanimating changes in a collection view ,试图模仿照片应用程序。选择图像时,图像会从它在 Collection View 中所在的区域“增长”到全尺寸 View 。

Apple 注意到使用 UICollectionViewLayout 对象,但对我来说它看起来非常困惑,而且全尺寸图库中的最终图像不可见,因为动画以 collectionview 为中心。

我的代码如下

-(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, dispatch_get_main_queue(), ^(void){
layout.transitionProgress += 0.005;
[self.collectionView.collectionViewLayout invalidateLayout];
[self updateLayout:layout];
});

}

最佳答案

如何使用自定义过渡呈现带有 UIImageView 的 UIViewController?本教程帮助了我。

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

关于ios - UICollectionViewTransitionLayout - 模仿 iOS7 照片 collectionview 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18957768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com