увеличить и уменьшить ширину imageView за одну секунду - PullRequest
1 голос
/ 14 октября 2011

Итак, вот мой вопрос: У меня есть изображение 'image', и я хотел бы увеличить его ширину в два раза и уменьшить его на два за одну секунду с анимацией. и я хочу делать это каждую секунду. Как я могу сделать это, пожалуйста? извините за мой английский я французский: /

Ответы [ 5 ]

1 голос
/ 14 октября 2011

Привет, вы можете использовать CoreAnimation с CALayer из UIImageView, просто скопируйте этот код.

CABasicAnimation *pulseAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
pulseAnimation.duration = .5;
pulseAnimation.toValue = [NSNumber numberWithFloat:1.1];
pulseAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
pulseAnimation.autoreverses = YES;
pulseAnimation.repeatCount = FLT_MAX;

UIImageView *imgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"icon.png"] ];
[imgView setFrame:CGRectMake(0, 0, 50, 50)];
[self.view addSubview:imgView];
CALayer *layer = imgView.layer;
[layer addAnimation:pulseAnimation forKey:nil];
0 голосов
/ 29 июля 2012

Попробуйте это:

- (void)startSizeChange {

    [UIView beginAnimations:@"changeSize" context:nil];
    [UIView setAnimationCurve:
    [UIView setAnimationDuration:0.3];
    YourImageView.frame = CGRect(YourImageView x + 10 , YourImageView y + 10, YourImageView weight - 10, YourImageView height - 10);
    [UIView commitAnimations]; 

    [self endSizeChange];
 }

- (void)endSizeChange {

    [UIView beginAnimations:@"changeSize" context:nil];
    [UIView setAnimationCurve:
    [UIView setAnimationDuration:0.3];
    YourImageView.frame = CGRect(YourImageView x - 10 , YourImageView y - 10, YourImageView weight + 10, YourImageView height + 10);
    [UIView commitAnimations]; 
 }
0 голосов
/ 14 октября 2011

Хорошо начнем с создания двух float, которые имеют значение исходного вида изображения, скажем, float1 и float2.

image.imageView.bounds.size.width = float1;
image.imageView.bounds.size.height = float2;

Затем создайте целое число с именем x и внутри вашей функции ccTime увеличивайте значение x на единицу каждый раз (это приведет к тому, что x будет вызываться 60 раз в секунду), так что теперь вы можете устанавливать операторы наподобие ...

if(x > 60){
float1 = float1 + (how much bigger you want the image to be)
float2 = float2 + (how much bigger you want the image to be)
}

Если бы вы предоставили пример кода, я бы лучше ответил на ваш вопрос: /

И если вы не используете cocos2d, вам придется использовать NSTimer вместо ccTime.

0 голосов
/ 14 октября 2011
  1. Поместите его в анимационный блок
  2. Используйте селектор

    - (void)startSizeChange {
        [UIView beginAnimations:@"changeSize" context:nil];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
        [UIView setAnimationDidStopSelector:@selector(endSizeChange)];
        [UIView setAnimationDuration:0.5];
        imageview.frame.size.height = 100;
        [UIView commitAnimations]; 
     }
    
    - (void)endSizeChange {
    
        [UIView beginAnimations:@"changeSize" context:nil];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
        [UIView setAnimationDidStopSelector:@selector(startSizeChange)];
        [UIView setAnimationDuration:0.5];
        imageview.frame.size.height = 50;
        [UIView commitAnimations]; 
     }
    
0 голосов
/ 14 октября 2011
UIImage * imgOne;

imgOne.transform = CGAffineTransformMakeScale(2,1);

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelegate:self];
imgOne.transform = CGAffineTransformIdentity;
[UIView commitAnimations];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...