2013-06-27 2 views
0

У меня есть требование: мне нужно обновить изображение с текущей позиции до полного экрана в режиме сетки. Я сделал изображения в режиме Grid.UIView Animation для ImageView в ios

- (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) { 

    }]; 

    } 

Можете ли вы сказать мне, как сделать вид изображения одушевленных с текущей позиции на весь экран, нажав на Это.

ответ

1

Поскольку вы добавляете представления к self.view вашего контроллера, вы можете предположить, что self.view занимает весь экран устройства. Таким образом, вы можете оживить его пределами:

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

Обратите внимание, что если piece должен иметь родительский вид, растянутый на весь экран так, чтобы ваш внутренний вид не будет обрезаться во время анимации.

+0

как применять набивка сказать 100px вокруг изображения со всех сторон –

+0

Вы можете использовать 'CGRectInset':' piece.frame = CGRectInset (self.view.bounds, 100, 100); ' – StatusReport

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"]; 
}