私はApple guidelinesをanimating changes in a collection viewに読み込んでいて、写真アプリを真似しようとしています。イメージを選択すると、イメージはコレクションビューにある領域からフルサイズのビューに「拡大」します。UICollectionViewTransitionLayout - iOS7の写真コレクションビューのレイアウトを模倣する
AppleノートではUICollectionViewLayout
オブジェクトを使用していますが、私にとっては非常に乱雑に見えますが、アニメーションがコレクションビューの中央に表示されるため、フルサイズギャラリーの最終イメージも表示されません。カスタムトランジションを使用してUIImageViewでのUIViewControllerを提示について
-(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];
});
}