Как добавить / уменьшить прямоугольник или текст? - PullRequest
5 голосов
/ 21 декабря 2009

Я хочу добиться эффекта постепенного появления / исчезновения прямоугольника или текста. Я вызываю CGContextFillRect или CGContextShowText в методе drawRect: моего UIVIew. Интересно, есть ли способ добиться анимации без использования поддержки UIView (например, [UIView beginAnimations ::]. Желаемый эффект, которого я хочу достичь, аналогичен тому, что в движке bing serach от Microsoft, как эти маленькие черные квадраты исчезают в / исчезать при перемещении по веб-странице. Заранее спасибо!

1 Ответ

23 голосов
/ 21 декабря 2009

Почему вы не хотите использовать анимационные блоки UIView? Анимация изменения непрозрачности вида (UILabel или иным образом) с этим довольно проста. Например, следующий код будет затенять данный вид в течение 0,5 секунд:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5f];

viewToFadeOut.alpha = 0.0f;

[UIView commitAnimations];  

Чтобы добавить, просто замените альфа-значение 0.0f на 1.0f.

Вы можете сделать то же самое, используя CABasicAnimation, созданный вручную, манипулируя слоем UIView:

CABasicAnimation *fadeOutAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeOutAnimation.duration = 0.5f;
fadeOutAnimation.removedOnCompletion = NO;
fadeOutAnimation.fillMode = kCAFillModeForwards;
fadeOutAnimation.toValue = [NSNumber numberWithFloat:0.0f];
[viewToFadeOut.layer addAnimation:fadeOutAnimation forKey:@"animateOpacity"];

Если все, что вы хотите сделать, это добавить / уменьшить границу вокруг вида, попробуйте анимировать свойство borderColor слоя UIView (аналогично CABasicAnimation выше, заменив opacity только на borderColor и toValue на CGColor приведен к id).

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