0

グリッドビューで現在の位置から全画面表示に画像ビューをアニメーション化する必要があるという要件があります。画像をグリッド ビューにしました。

- (void)viewDidLoad
{
    [super viewDidLoad];

    imagesArray = [[NSMutableArray alloc] init];        
    for (int i=1; i<11; i++) {

        [imagesArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"image%d.png", i]]];
        NSLog(@"imagesArray:%@", imagesArray);               
    }

    float horizontal = 20.0;
    float vertical = 20.0;

    for(int i=0; i<[imagesArray count]; i++)
    {
        if((i%3) == 0 && i!=0)
        {
            horizontal = 20.0;
            vertical = vertical + 220.00 + 20.0;
        }

        imagesView = [[UIImageView alloc] initWithFrame:CGRectMake(horizontal, vertical, 310.0, 220.00)];
        imagesView.userInteractionEnabled = YES;
        [imagesView setImage:[imagesArray objectAtIndex:i]];
        imagesView.tag = i;

        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
        tap.numberOfTapsRequired = 1;
        tap.numberOfTouchesRequired = 1;

        [imagesView addGestureRecognizer:tap];

        [self.view addSubview:imagesView];
        horizontal = horizontal + 310.0 + 20.0;
      }

}

ここでは、10 個の画像があるように、画像を含むグリッド ビューを作成しました。3x3 グリッド ビューを作成しました。

次にタップジェスチャを追加し、タグで呼び出して画像ビューの位置を取得しています

-(void)handleTap:(UITapGestureRecognizer *)recognizer
{
        UIView *piece = recognizer.view;

        [UIView animateWithDuration:1.0 animations:^{
            piece.frame = CGRectMake(piece.frame.origin.x, piece.frame.origin.y, 1000, 700);

        } completion:^(BOOL finished) {

    }];

    } 

画像ビューをタップして、現在の位置から全画面表示にアニメーション化する方法を教えてください。

4

2 に答える 2

1

View Controller にビューを追加しているので、それがデバイスの画面全体を占有しているself.viewと想定できます。self.viewしたがって、その境界までアニメーション化できます。

[UIView animateWithDuration:1.0 animations:^{
    piece.frame = self.view.bounds;
} completion:nil];

pieceアニメーション中に内側のビューがクリップされないように、画面全体にまたがる親ビューが必要であることに注意してください。

于 2013-06-27T06:00:47.243 に答える
0

このコードは、期待しているイメージビューをズームするなどのアニメーション効果を追加するのに役立ちます。アニメーションが終了したら、フルスクリーンの画像ビューを表示するようにカスタマイズする必要があります。

-(void)addZoomAnimationToZoomViewController:(UIImageView *)zoomView
{
    CABasicAnimation *zoomAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    [zoomAnimation setDuration:0.8];
    [zoomAnimation setRepeatCount:1];
    [zoomAnimation setFromValue: [NSNumber numberWithFloat:0.1]];
    [zoomAnimation setToValue: [NSNumber numberWithFloat:5.0] ];
    [zoomAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
    [[zoomView layer] addAnimation:zoomAnimation forKey:@"zoom"];
}
于 2013-06-27T06:12:26.403 に答える