S B
S B

Reputation: 8384

UIActivityIndicator does not animate

- (void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    self.connectionIndicator = [[[UIActivityIndicatorView alloc]
                                initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease];
    [self.view addSubview:connectionIndicator];

    [self.connectionIndicator setCenter:CGPointMake(self.view.frame.size.width/2, 15)];
    [connectionIndicator startAnimating];
}

The spinner shows up frozen, and does not start animating.

Edit: Okay I figured out the cause but yet to find a solution.

This view controller is pushed into navigation controller stack through a page curl-up transition:

ServerHandshakeViewController *shvc = [[ServerHandshakeViewController alloc] initWithHost:h];
[UIView  beginAnimations:nil context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];
[self.navigationController pushViewController:shvc animated:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.navigationController.view cache:NO];
[UIView commitAnimations];
[shvc release];

Removing the above curl-up transition like below solves the spinner freeze problem.

ServerHandshakeViewController *shvc = [[ServerHandshakeViewController alloc] initWithHost:h];
[self.navigationController pushViewController:shvc animated:NO];
[shvc release];

But then, what if I want to retain my curl-up page transition?

Upvotes: 1

Views: 206

Answers (1)

thako
thako

Reputation: 11

You could try using the block method where you can specify animation options. UIViewAnimationOptionAllowAnimatedContent is the option which should free up the spinner.

[UIView transitionWithView:self.navigationController.view 
                          duration:1.0 
                           options:UIViewAnimationOptionAllowAnimatedContent | UIViewAnimationTransitionCurlUp | UIViewAnimationOptionCurveEaseInOut 
                        animations:^{[self.navigationController pushViewController:shvc animated:NO];}
                        completion:nil];

Upvotes: 1

Related Questions