IOS: проблема с альфа - PullRequest
       2

IOS: проблема с альфа

0 голосов
/ 09 августа 2011

У меня есть этот код, где успех начинается с альфа = 0,00

- (void) startAnimation{
    //immediately
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:3];
    [successView setAlpha:1.00];
    [UIView commitAnimations];
    //in three seconds
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:3];
    [successView setAlpha:0.00];
    [UIView commitAnimations];
}

таким образом, в первой анимации (от альфа 0,00 до 1,00) это происходит не через 3 секунды, а сразу, вместо этого во второй анимации (от альфа 1,00 до альфа 0,00) это происходит за 3 секунды

если я пишу только первую анимацию:

- (void) startAnimation{
    //in three seconds
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:3];
    [successView setAlpha:1.00];
    [UIView commitAnimations];
}

это происходит за 3 секунды, почему в первом примере это не происходит?

Ответы [ 2 ]

0 голосов
/ 10 августа 2011
- (void)startAnimation
{
    [UIView beginAnimations:@"successAnimationPart1" context:nil];
    [UIView setAnimationDuration:3];
    [UIView setAnimationDelegate:self];
    [successView setAlpha:1.00];
    [UIView commitAnimations];
}

И добавьте этот метод делегата анимации:

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
    if ([animationID isEqualToString:@"successAnimationPart1"]) {
        // when first animation is done, call second
        [UIView beginAnimations:@"successAnimationPart2" context:nil];
        [UIView setAnimationDuration:3];
        [UIView setAnimationDelegate:self];
        [successView setAlpha:0.00];
        [UIView commitAnimations];
    }
}
0 голосов
/ 09 августа 2011

Вы можете попытаться установить задержку анимации для вашей второй анимации (обратите внимание, что использование этого API не рекомендуется, и вы должны использовать анимацию animateWithDuration:delay:options:animations:completion: на основе блоков, если вы нацеливаетесь на iOS4.0 +):

...
[UIView setAnimationDelay:3.0]; 
...

Но если вы просто хотите изменить альфа-представление представления на 1 и вернуть его обратно, вы можете использовать только свою первую анимацию, но сделать ее автореверсом:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:3];
[UIView setAnimationRepeatAutoreverses:YES];
[successView setAlpha:1.00];
[UIView commitAnimations];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...