2011-12-19 2 views
17

В TwUI существует метод, называемый redraw на TUIView. Это заставляет просмотр перерисовываться, но он также содержит свободную затухающую анимацию между старым и новым состоянием представления.Перерисовать UIView с анимацией затухания?

Мне интересно, возможно ли что-то подобное в обычном UIView. В принципе, как я могу перерисовать вид (setNeedsDisplay) с затухающей анимацией между старым и новым состояниями?

+0

Этот вопрос похож, но не совсем то, что я ищу: http://stackoverflow.com/questions/4730110/i-want-to-animate-in-fact-fade-within-drawrect –

+0

Что вам нужно, чтобы отличаться от этого другого вопроса? –

+0

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

ответ

38

Использование +[UIView transitionWithView:duration:options:animations:completion:] с опцией UIViewAnimationOptionTransitionCrossDissolve, и внутри блока анимации, заставить слой мнение, чтобы немедленно перерисовывать его содержимое.

[myView setNeedsDisplay]; 
[UIView transitionWithView:myView duration:1 
    options:UIViewAnimationOptionTransitionCrossDissolve 
    animations:^{ 
     [myView.layer displayIfNeeded]; 
    } completion:nil]; 
+1

Ты мужчина! Работала отлично. Я действительно должен разобраться в своей основной анимации, не так ли? –

+0

Ха-ха, может быть. Я узнал * много * из * [Основные характеристики анимации] (https://developer.apple.com/videos/wwdc/2011/#core-animation-essentials) * видео с WWDC 2011. Но для вашего вопроса я также пришлось написать небольшую пробную программу, которая изменила свойство содержимого созданного кодом CALayer и посмотрела, какую анимацию он приложил. –

+0

Спасибо за эту ссылку, я когда-нибудь посмотрю. Я также купил книгу * Core Animation * от Zarra & Long, но мне стыдно сказать, что я ее еще не читал. Пора отдохнуть! :) –

1

Как насчет использования перекрестного разрешения перехода UIView?

[UIView transitionWithView:aView 
        duration:TIME_INTERVAL 
        options:UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 
        // Change the view's state 
       } 
       completion:^(BOOL finished) { 
        // Completion block 
       }]; 
Смежные вопросы