Предположение: необходимо выполнить несколько шагов анимации (то есть положение не изменяется линейно с размером кадра).
Это невозможно с одной «стандартной» анимацией UIView. Зачем? Рамка / границы устанавливаются только один раз.
Базовая анимация имеет три "дерева слоев":
- Дерево моделей - это то, где ваше приложение думает о вещах.
- Дерево презентаций - это примерно то, что отображается на экране.
- Дерево визуализации - это примерно то, что Core Animation создает.
UIView - это (несколько тонкая) оболочка вокруг слоя модели. Во время анимации UIView Core Animation обновляет дерево представления / рендеринга & mdash; дерево модели представляет конечную точку анимации. В результате ваш код может (по большей части) обрабатывать анимацию как мгновенную & mdash; перемещение вида из А в В мгновенно перемещает его в В; Изменения как раз анимированы для пользователя.
Существуют более сложные вещи, которые вы можете сделать непосредственно с помощью CALayer / CAAnimation, но я не очень много исследовал.
Вы можете связать несколько анимаций вместе, используя - [UIView setAnimationDidStopSelector:]. (Вы также можете попробовать использовать несколько анимаций вместе с setAnimationDelay :, но я не уверен, что происходит с несколькими анимациями в одном и том же свойстве; вам может повезти с setAnimationBeginsFromCurrentState:.)
Если вы хотите действительно детальное управление, CADisplayLink (OS 3.1+) - это таймер, который срабатывает после каждого обновления экрана. Резервным вариантом (для поддержки 3.0) является использование NSTimer с частотой 30/60 Гц или около того.