2010-08-09 4 views
2

Этот код выполняется в методе с привязкой к подклассу uiview, однако он не анимируется, он просто мгновенно меняет цвет фона. Что не так?iPhone UIView Animation Продолжительность работает только мгновенно

self.backgroundColor = [UIColor blackColor]; 
    [UIView beginAnimations:nil context:NULL]; 

    [UIView setAnimationDuration:20]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
    if (score < .40) { 
     self.backgroundColor = [UIColor redColor]; 
    } else { 
     self.backgroundColor = [UIColor greenColor]; 
    } 
    [UIView commitAnimations]; 
+0

Работает ли при вызове его из другое место, в подклассе или даже вне подкласса? – mvds

+1

меняет цвет действительно анимационный ??? – lukya

+0

Возможно, хотя и маловероятно, что «20» интерпретируется, а не бросается как поплавок. Попробуйте дать ему 20.0. Кроме того, дважды проверьте, что цвет является «анимационным свойством» в документах разработчика Apple. – mtrc

ответ

1

Метод [UIView commitAnimations] не блокирует - так что если вы называете его, он начнет анимировать, но он будет выполнять код после этого момента мгновенно. Если у вас есть код ниже, который меняет цвет фона, он разбивает ваши анимации.

Если это не сработает, попробуйте оживить другое свойство - я знаю, что в верхней части моей позиции & alpha являются анимированными, но я не уверен в цвете. (Alpha только значение float, и центр просто CGPoint, оба из которых являются примитивы, но UIColor является тип ссылки и UIView не может знать, как анимировать указатель.)