Как я могу использовать этот код анимации? - PullRequest
0 голосов
/ 04 апреля 2010

Я новичок и мне нужна помощь.

Я хочу отобразить всплывающее изображение поверх данного UIView, но мне бы хотелось, чтобы оно велось как UIAlertView или как модальное всплывающее окно Facebook Connect for iPhone, поскольку оно имеет оживленную анимацию, похожую на резиновый это.

Я нашел какой-то код в сети от кого-то, кто пытался сделать что-то подобное. Он / она соединил это, но там не было демо или инструкций.

Поскольку я так новичок, я понятия не имею, как включить это в мой код.

Это процедура, в которой мне нужно, чтобы появилось бодрое изображение:

- (void) showProductDetail
{
. . .
    ////////////////////////////////////////////////////////////////////////
    // THIS IS A STRAIGHT SCALE ANIMATION RIGHT NOW. I WANT TO REPLACE THIS 
    // WITH A BOUNCY RUBBER-BAND ANIMATION
        _productDetail.transform = CGAffineTransformMakeScale(0.1,0.1);
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.5];
        _productDetail.transform = CGAffineTransformMakeScale(1,1);
        [UIView commitAnimations];      
    }
. . .
}

Это код, который я нашел:

float pulsesteps[3] = { 0.2, 1/15., 1/7.5 };
- (void) pulse {
    self.transform = CGAffineTransformMakeScale(0.6, 0.6);
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:pulsesteps[0]];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(pulseGrowAnimationDidStop:finished:context:)];
    self.transform = CGAffineTransformMakeScale(1.1, 1.1);
    [UIView commitAnimations];
}

- (void)pulseGrowAnimationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {   
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:pulsesteps[1]];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(pulseShrinkAnimationDidStop:finished:context:)];
    self.transform = CGAffineTransformMakeScale(0.9, 0.9);
    [UIView commitAnimations];
}

- (void)pulseShrinkAnimationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:pulsesteps[2]];
    self.transform = CGAffineTransformIdentity;
    [UIView commitAnimations];
}

Заранее благодарим за любую помощь, которую вы можете оказать мне.

1 Ответ

2 голосов
/ 04 апреля 2010

Все довольно просто. В вашем методе showProductDetail вы запускаете блок анимации, затем устанавливаете свойство _productDetail.transform и затем фиксируете блок. Это то, что заставляет анимацию происходить.

Код, который вы нашли, предназначен для создания цепочки таких анимаций, но изменяемое свойство имеет значение self вместо _productDetail. Если _productDetail является экземпляром класса, который вы создали сами, вы можете поместить код анимации в этот класс.

В противном случае просто переместите код внутри метода pulse в метод showProductDetail и поместите два других метода ниже этого метода. Замените self.transform на _productDetail.transform во всех трех методах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...