14748


CollectionViewCellをタップした時に、iPhoneデフォルトの写真アプリでCellをタップした時みたいな、画像位置から全画面サイズに拡大する画面の実装を組みたいです。

例えば以下のようにしてUICollectionViewのcellにImageViewを乗せて画像を表示させるとして

[code]

    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
    {
        return 4;
    }
    
    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
     {
        UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
        UIImage *image1 = [UIImage imageNamed:@"image1"];
        UIImage *image2 = [UIImage imageNamed:@"image2"];
        UIImage *image3 = [UIImage imageNamed:@"image3"];
        UIImage *image4 = [UIImage imageNamed:@"image4"];
    
        NSMutableArray *images = @[image1,image2,image3,image4];
        UIImage *image = [images objectAtIndex:indexPath.row];
    
        UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
        [cell addSubview:imageView];
        imageView.contentMode = UIViewContentModeScaleAspectFill;
        // Configure the cell
    
        return cell;
    }
    
    - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
    {
      //ここで処理をすると思うのですが…
    }
    
[/code]

上のcellタップ時のメソッドでなんらかの処理をすると思うのですが、さっぱり分かりません。

どんな情報でもお持ちの方教えて頂けるとありがたいです。


CC BY-SA 3.0
2015-08-22T14:54:05.020
14737
2015-08-23T05:03:16.823
2015-08-23T04:05:27.063
5337
8320
question
ios objective-c uicollectionview uiimage uicollectionviewcell
UICollectionViewをタップしてデフォルトの写真アプリのような拡大表示


方法としては、いくらでもあります。

  1. 本来の`animated`を`NO`にして独自でアニメーションを書く方法
  2. カスタムセグエを使う方法（iOS5〜）
  3. `UIViewController`のカスタム画面遷移を使う方法（iOS7〜）

いまから実装するのであれば、3でやるのがオススメです。

ただし、いわゆるモーダルで表示する場合と、`UINavigationController`や`UITabbarController`の遷移を変更したい場合で記述が変わったり、インタラクティブ画面遷移を実装しようとするとちょっと大変かもしれません。

* * *

[片道UIViewControllerTransition](https://gist.github.com/glayash/fb00ac792e6b3625cf12)

`StoryBoard`がないので解りにくいかもしれませんが（特に複雑なことはやってないです）、`UICollectionView`の画像を拡大して次の`UIViewController`にシームレスに表示するようなコードサンプル（`UINavigationController`使用時）です。


CC BY-SA 3.0
2015-08-23T04:12:39.440
14748
2015-08-23T05:03:16.823
2015-08-23T05:03:16.823
5337
5337
14737
answer