2015-02-18 2 views
0

У меня есть UIView (назовите это просмотр уведомлений) с помощью scrollView внутри (с помощью addSubView). Я хочу показать это представление как всплывающее окно с некоторой анимацией. Таким образом, в начале я сделал его высоту как 0, а в блоке анимации я установил его высоту в число желаний. Когда я хочу скрыть это представление, я установил его высоту как 0 в блоке анимации. Его работа прекрасна. Проблема в том, чтоUIView Animation With Child Views

  • Сначала открывается вид просмотра дочерних элементов, после чего окно уведомления завершает его анимацию.
  • То же самое, когда я хочу скрыть его, сначала открывается уведомление, пока анимация не будет равна height = 0, после чего потомки сразу исчезнут.

Я хочу создать эффект усадки/расширения для просмотра уведомлений. Чтобы показать всплывающее окно, я использую следующие анимации блока

[UIView animateWithDuration:1.0 
        animations:^{ 
         notificationParentView.frame = CGRectMake(50, 52, 220, 200); 
         downArrowIcon.transform = CGAffineTransformMakeRotation(M_PI); 
        }]; 

Чтобы скрыть это всплывающее окно, следующий фрагмент кода работает

[UIView animateWithDuration:1.0 
        animations:^{ 
         notificationParentView.frame = CGRectMake(50, 52, 220, 0); 
         downArrowIcon.transform = CGAffineTransformMakeRotation(0); 
        }completion:^(BOOL finished){ 
         [notificationParentView removeFromSuperview]; 
        }]; 

notificationParentView расширяется и сжимается хорошо, но его вид ребенка не расширяется/сокращение с их родительским представлением .ienotificationParentView. Есть ли что-то очевидное, что мне не хватает?

ответ

0

Вы можете использовать CGAffineTransform

//Appear animation 
notificationParentView.transform = CGAffineTransformConcat(CGAffineTransformMakeScale(0, 1), CGAffineTransformMakeRotation(M_PI)) // Set to hidden state 
[UIView animateWithDuration:1.0 
        animations:^{ 
         notificationParentView.transform = GAffineTransformIdentity;// Set back to normal, displaying state 
        }]; 
//disappear 
[UIView animateWithDuration:1.0 
        animations:^{ 
notificationParentView.transform = CGAffineTransformConcat(CGAffineTransformMakeScale(0, 1), CGAffineTransformMakeRotation(M_PI)); //Back to hidden state.       
         }]; 
+0

Так значит, я должен удалить анимацию блоков? – Ans

+0

Нет, используйте этот код внутри блока анимации. Тем не менее, вы можете захотеть установить масштабное преобразование вне блока, когда вы его покажете. – Antzi

+0

можете ли вы любезно вставить патрон кода? – Ans