Как не повторять этот код при анимации против не анимации? - PullRequest
1 голос
/ 05 октября 2011

Соблюдайте этот код:

- (void)hideRectangleWithAnimation:(BOOL)animate completion:(void (^)(void))completionBlock
{
    if (animate)
    {
        // Hide rectangle
        [UIView animateWithDuration:0.3 animations:^{ rect.alpha = 0; } completion:^(BOOL finished){
            completionBlock();
        }
    }
    else
    {
        rect.alpha = 0;
    }
}

Есть ли способ не повторять изменение свойства: rect.alpha = 0; дважды?

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

Ответы [ 2 ]

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

Я думаю, что только что нашел ответ.Я могу поместить rect.alpha = 0; в переменную блока и использовать ее вместо этого.

void (^animationBlock)(void) = ^{
    rect.alpha = 0;
};

if (animate)
{
    [UIView animateWithDuration:0.3 animations:animationBlock completion:^(BOOL finished){
        completionBlock();
    }];
}
else
{
    animationBlock();
}
0 голосов
/ 05 октября 2011

Я полагаю, что это будет работать

[UIView setAnimationsEnabled:animate];
[UIView animationWithDuration:...];
[UIView setAnimationsEnabled:YES];

Я не уверен, будет ли он запускать блок завершения в любом случае или нет.

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