Мне нужен был ответ на этот вопрос, и я не нашел ни одного, приведенного здесь, удовлетворительным.Я построил быстрый тест, который поместил небольшое подпредставление вроде этого:
- (void)viewDidLoad {
[super viewDidLoad];
self.testView = [[UIView alloc] initWithFrame:CGRectMake(0,0,40,40)];
self.testView.backgroundColor = [UIColor redColor];
[self.view addSubview:self.testView];
}
, а затем предоставил две альтернативные анимации, подобные этой:
- (void)animateWithSimpleBlock {
[UIView animateWithDuration:2 animations:^{
self.testView.frame = CGRectMake(200,200,40,40);
self.testView.frame = CGRectMake( 0,300,40,40);
}];
}
- (void)animateWithQualifiedBlock {
[UIView animateWithDuration:2 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
self.testView.frame = CGRectMake(200,200,40,40);
self.testView.frame = CGRectMake( 0,300,40,40);
}];
}
Вот что происходит: на animateWithSimpleBlock
,testView перемещается в одном кадре (без анимации) из начальной позиции 0,0 в промежуточную позицию 200 200.Оттуда он анимируется в течение 2 секунд до конечной позиции 0,300.
Но animateWithQualifiedBlock
плавно анимирует testView от его начальной позиции 0,0 до конечной позиции 0,300.Это то поведение, которое мне нужно (т.к. я создаю новые позиции вида с помощью циклических методов, вызываемых в блоке анимации).