IOS - эффекты анимации - всплывающее изображение
Я хотел бы иметь изображение в моем приложении iphone "pop-in" на экране, а не просто появляться. Под "pop-in" я подразумеваю, что он будет расти с небольшой точки до ее фактического размера. Для справки, это точно так же, как эффект "поп-анимации" в Keynote.
Я совершенно новичок в iOS-анимациях, поэтому, если кто-то может указать мне направление на эффекты анимации, которые мне нужно будет использовать, было бы очень полезно.
Спасибо
Брайан
UPDATE
Я добавил этот код из приведенных ниже предложений. Это работает, но оно уменьшает мой образ вниз, а не вверх. Я знаю, это потому, что у меня 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];
Ответы
Ответ 1
Эффект, который вы ищете, выглядит примерно так:
// 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
}];
Ответ 2
если вы хотите, чтобы что-то вроде 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", это просто произведет анимацию в качестве свойства изображения кнопки.
Надеюсь, поможет
Все лучшее.
Ответ 3
Вам нужно анимировать рамку представления, чтобы сжать ее с нуля до конечного состояния.
Это можно сделать, например, с анимацией блока UIView.
Итак, например, начните с вашего представления как свойство IBOutlet self.myView с конечным размером и положением, но установите скрытый флаг.
Затем, когда вы хотите, чтобы он появился, используйте следующее:
// 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
}];
Ответ 4
версия 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
}
Ответ 5
Для этого вам придется использовать простой 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];
}