2013-09-23 2 views
8

私はApple guidelinesanimating 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]; 
    }); 

} 

答えて

0

私は写真が実際に2013年に年など(セッション218に瞬間から行くとき、私は間違っていない場合)アニメーションを実現するためにUICollectionViewControllerのナビゲーション・トランジション(useLayoutToLayoutNavigationTransitionsをレイアウトするレイアウトを使用することを知っている

あなたは、異なるデータソースを持つコレクションビュー間の遷移を作るしようとすると、物事が本当に面白く言われていること。Objc.ioの革ズボンは、この上の美しい作品を書いた。

しかし、あなたが探している場合は、オープン効果のピンチを実現することは、実際よりもはるかに簡単です。

簡単に言えば、コレクションビューのセルをアニメーション化してフルスクリーンビューコントローラーに展開したいと仮定します。その場合、フルスクリーンフォトコントローラにトランスフォームを効果的に適用して、セルのポイントから開始するカスタムビューコントローラのトランジションを実装するだけです。次に、変換をフルスクリーンにアニメーション化するだけです。

これをインタラクティブにする時間があったら、このステップのトリックは、セルを表示しないでフルスクリーンコントローラをアニメーション化したいときに、トランジションを開始するときにコレクションビューセルを非表示にすることですそれを隠さないと、セルはまだ見え、混乱して見えるでしょう)。だから、基本的にあなたの指の下に保持されているセルは、実際にはフルスクリーンのフォトコントロールです。コントローラーを拡張すると、完了とともにパーセントが更新され、ナビゲーションバーがトランジションとともに更新されます。

もっと詳しく知りたい場合は、コンピュータに接続したときに変換などを計算する方法を含めることができます。

関連する問題