Вы пробовали что-то вроде этого:
[UIView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
// the animation code
[myPickerView selectRow:0 inComponent:0 animated:YES];
}
completion:^(BOOL finished) {
[self performSelector:@selector(setMyLabel)];
}
];
Или вы можете просто установить метку непосредственно в блоке завершения, если это единственное, что вы хотите сделать после завершения анимации.
РЕДАКТИРОВАТЬ:
Приведенный выше код такой же, как код в другой теме, которую вы упомянули, но вместо этого используются блоки анимации.Я фактически не знал, будет ли метод selectRow: inComponent: animated: работать в том же потоке анимационного блока или у него будет свой собственный поток.Так как он не работает, это означает, что он работает в своем собственном потоке, поэтому написанный мною код не будет работать.
Существует один способ решения этой проблемы: блокировка основного потока на времянеобходим для завершения анимации.Вы можете вызвать [NSThread sleepForTimeInterval: 1.0] после вашего вызова selectRow: inComponent: animated:, и вы можете настроить интервал, пока не достигнете подходящего значения.Обратите внимание, что блокирование основного потока крайне нежелательно для Apple.Лично я заблокировал бы это, только если бы я не мог придумать другой способ достигнуть того, что я пытаюсь сделать, и если время блокировки меньше, чем 1.