Тот факт, что это не анимация, пока вы не прокрутите в представлении прокрутки, является признаком того, что ваш вызов startAnimating происходит в фоновом потоке.Вызовы UIKit должны выполняться в главном потоке.
Вы можете убедиться, что это происходит в фоновом потоке, добавив код, подобный следующему:
if ([NSThread isMainThread]) {
NSLog(@"Running on main thread.");
} else {
NSLog(@"Running on background thread.");
}
Вы хотите убедиться, что всекод, который вы указали в своем вопросе, выполняется в главном потоке.Для этого вы можете изменить свой код, чтобы он выглядел примерно так:
// this code would be wherever your existing code was
[self performSelectorOnMainThread:@selector(addActivityIndicatorToView:) withObject:mainScrollView waitUntilDone:YES];
// this would be a new method in the same class that your existing code is in
- (void) addActivityIndicatorToView:(UIView*) view {
UIActivityIndicatorView *loaderActivity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
loaderActivity.center = CGPointMake(87/2,y+56/2);
loaderActivity.tag=tag;
[view addSubview:loaderActivity];
[loaderActivity startAnimating];
[loaderActivity release];
}