iOS - Анимационные эффекты - Всплывающее изображение - PullRequest
31 голосов
/ 30 марта 2012

Я бы хотел, чтобы изображение в моем приложении для iPhone отображалось на экране, а не просто появлялось.Под «всплывающим окном» я подразумеваю, что он вырастет из маленькой точки до ее фактического размера.Для справки, это точно так же, как эффект «поп» анимации в Keynote.Я совершенно новичок в анимации iOS, поэтому, если кто-то может указать мне направление анимационных эффектов, которые мне нужно будет использовать, это будет с благодарностью.*

ОБНОВЛЕНИЕ Я добавил этот код из предложений ниже.Это работает, но уменьшает мое изображение, а не увеличивает его.Я знаю, что это потому, что у меня есть 0,01 в качестве размера масштаба преобразования, но я хотел бы знать, как я могу начать с изображения размером 0,0 и масштабировать до 1. Это просто вопрос установки размера моего изображения0?Спасибо

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration: 0.2];
image.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView setAnimationDelegate:self];
[UIView commitAnimations];

Ответы [ 5 ]

79 голосов
/ 30 марта 2012

Эффект, который вы ищете, выглядит примерно так:

// instantaneously make the image view small (scaled to 1% of its actual size)
view.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
    // animate it to the identity transform (100% scale)
    view.transform = CGAffineTransformIdentity;
} completion:^(BOOL finished){
    // if you want to do something once the animation finishes, put it here
}];
4 голосов
/ 17 февраля 2016

если вы хотите что-то вроде Facebook нравится на любой пост, то используйте это

-(void)animateButton:(UIButton *)sender{
UIButton * btn = (UIButton *)sender;
[UIView animateWithDuration:0.3/1.5 animations:^{
    btn.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.4, 1.4); // scales up the view of button 
} completion:^(BOOL finished) {
    [UIView animateWithDuration:0.3/2 animations:^{
        btn.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.7, 0.7);// scales down the view of button
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:0.3/2 animations:^{
            btn.transform = CGAffineTransformIdentity; // at the end sets the original identity of the button
        }];
    }];
}];}

просто вызовите этот метод, если вы хотите анимировать представление

если у вас есть текст и изображение на кнопке, и вы просто хотите анимировать изображение кнопки, то просто замените «btn» на «btn.imageView», это просто создаст анимацию в свойстве image view кнопки. Надеюсь, поможет Всего наилучшего.

0 голосов
/ 21 сентября 2016

Для этого вам нужно будет использовать простой UIView

Добавить UIview к вашему текущему виду.

- (void) initPopUpView
 {
   popup.alpha = 0;
   popup.frame = CGRectMake (160, 240, 0, 0);
   [self.view addSubview:popup];
 }

- (void) animatePopUpShow 
 {
   [UIView beginAnimations:nil context:NULL];
   [UIView setAnimationDuration:0.3];
   [UIView setAnimationDelegate:self];
   [UIView setAnimationWillStartSelector:@selector(initPopUpView)];

   popup.alpha = 1;
   popup.frame = CGRectMake (20, 40, 300, 400);

   [UIView commitAnimations];
 }
0 голосов
/ 26 ноября 2015

Swift 2.0 версия

    view.transform = CGAffineTransformMakeScale(0.01, 0.01);

    UIView.animateWithDuration(0.2, delay: 0, options: .CurveEaseOut, animations: { () -> Void in
        // animate it to the identity transform (100% scale)
        self.view.transform = CGAffineTransformIdentity;

        }) { (finished) -> Void in
        // if you want to do something once the animation finishes, put it here
    }
0 голосов
/ 30 марта 2012

Вы должны анимировать кадр вида, чтобы уменьшить его с нуля до конечного состояния. Это можно сделать, например, с помощью анимации блока UIView.

Так, например, начните с вашего представления как свойства self.myView IBOutlet с окончательным размером и положением, но установите скрытый флаг. Затем, когда вы хотите, чтобы он появился, используйте следующее:

// Save old frame as final stater and set it to zero size for the start of the animation
// But keep the same center position, so it just grows and don't move around 
CGRect oldFrame = self.myView.frame;
CGRect oldCenter = self.myView.center;

self.myView.frame = CGRectZero;
self.myView.center = oldCenter;

self.myView.hidden = NO;

NSTimeInterval duration = 0.3;

[UIView animateWithDuration:duration delay:0.0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
                // New position and size after the animation should be the same as in Interface Builder
                self.myView.frame = oldFrame
    }
                     completion:^(BOOL finished){
                                                 // You can do some stuff here after the animation finished
                     }];
...