2015-03-22 2 views
0

Как название, я начинаю, поэтому у меня нет идеи его решить.Как настроить анимацию увеличения UIImageView при изменении фотографии

В моем коде, это просто масштабирования анимация, когда я перехожу на эмуляторе первый раз,

Я хочу иметь трансфокатор анимацию при каждом изменении фото,

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    NSArray *animationImages = [NSArray arrayWithObjects:[UIImage imageNamed:@"1.jpg"], 
           [UIImage imageNamed:@"2.jpg"], 
           [UIImage imageNamed:@"3.jpg"], 
           [UIImage imageNamed:@"4.jpg"],nil]; 

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10,10,300,300)]; 
    imageView.animationImages = animationImages ; 
    imageView.animationRepeatCount = 0; 
    imageView.animationDuration= 12.0; 
    [imageView startAnimating]; 
    [self.view addSubview:imageView]; 

    imageView.frame = CGRectMake(150, 150, 20, 20); 
    CGPoint center = imageView.center; 
    [UIView animateWithDuration: 1.0f animations:^{ 
     imageView.frame = CGRectMake(10, 10, 300, 300); 
     imageView.center = center; 
    }]; 
} 

Спасибо заранее любую помощь, которая может быть предоставлена ​​здесь.

ответ

0

Это не самый чистый код для использования animationImages, если вы хотите анимацию масштабирования для каждого перехода изображения. Я бы создал свой собственный класс UIView для обработки переходов, чтобы анимации могли быть тесно синхронизированы с каждым переходом. Но, чтобы ответить на ваш вопрос быстрым ненадежным взломом, я буду использовать таймер для запуска анимации примерно на той же частоте, что и переходы между изображениями. Таймеры становятся менее точными с течением времени, поэтому в конечном итоге эффект масштабирования больше не выравнивается с переходами изображений.

@interface NameOfYourViewController() 

@property(nonatomic, strong) UIImageView* imageView; 
@property(nonatomic, strong) NSTimer* imageTransitionTimer; 
@property(nonatomic, assign) CGFloat imageScale; 
- (void)animateImage; 

@end 

@implementation NameOfYourViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    NSArray *animationImages = [NSArray arrayWithObjects:[UIImage imageNamed:@"1.jpg"], 
           [UIImage imageNamed:@"2.jpg"], 
           [UIImage imageNamed:@"3.jpg"], 
           [UIImage imageNamed:@"4.jpg"],nil]; 

    self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10,10,300,300)]; 
    selfimageView.animationImages = animationImages ; 
    self.imageView.animationRepeatCount = 0; 
    self.imageView.animationDuration= 12.0; 
    [self.imageView startAnimating]; 
    [self.view addSubview:self.imageView]; 

    self.imageScale = 1.0f; 
    self.imageTransitionTimer = [NSTimer scheduledTimerWithTimeInterval:imageView.animationDuration target:self selector:@selector(animateImage) userInfo:nil repeats:YES]; 
    [self.imageTransitionTimer fire]; 
} 

- (void)animateImage 
{ 
    [UIView 
    animateWithDuration:1.0 
    delay:0.0 
    options:0 
    animations:^void() { 
     self.imageView.transform = CGAffineTransformMakeScale(
     self.imageScale, 
     self.imageScale 
     ); 
    } 
    completion:^void(BOOL finished) { 
     self.imageScale += 0.3f; 
    } 
    }]; 
} 

@end 
+0

спасибо за ваш комментарий, но функция animateImage не может передать компилятор, я интересно, как ее решить – hungwei0331

+0

@ hungwei0331 Я никогда не проверял свой код в Xcode. Я просто набрал все это на StackOverflow. Я сделал для вас всю тяжелую работу. Вам просто нужно сделать легкую работу по ее компиляции. Вероятно, это орфографическая ошибка или непревзойденная)]}. – JoJo

+0

Большое спасибо, я попробую еще раз – hungwei0331

Смежные вопросы