Я использую код, взятый из другого answer here, но по существу ниже, что я использую. Основная проблема заключается в том, что, когда я его вызываю, для начала требуется 15 секунд, а для каждой анимации требуется 15 секунд. Я хочу, чтобы это началось сразу! Что мне здесь не хватает?Анимация задерживается перед запуском
Вызывается с помощью
-(void)viewDidLoad {
[self animationLoop: nil finished:nil context:nil];
}
Функция
-(void)animationLoop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:15];
int padding = _Circle1Container.frame.size.width/2;
// Circle 1
CGFloat x = (CGFloat) (arc4random() % (int) self.view.bounds.size.width + padding);
CGFloat y = (CGFloat) (arc4random() % (int) self.view.bounds.size.height + padding);
CGPoint squarePostion = CGPointMake(x, y);
_Circle1Container.center = squarePostion;
[UIView setAnimationDelegate:self]; // as suggested by @Carl Veazey in a comment
[UIView setAnimationDidStopSelector:@selector(animationLoop:finished:context:)];
[UIView commitAnimations];
}
Привет, спасибо за ответ, я обычно использую блоки, но я скопировал код из другого места, так что, возможно, это его ... Вскоре я попробую. Я использую прописку, чтобы мои круги могли выйти за пределы видимой области (но достаточно, чтобы скрыть только половину из них). – Chris
В другом примечании. Если я снова вызову ту же функцию в обработанном обработчике, это вызовет стоп-поток в некоторой точке во время выполнения или он «отправляется» обратно в очередь сообщений во время блока? – Chris
Хорошо ... Так что «работает», но у меня все еще есть массивная начальная задержка! – Chris