How can I center an activity indicator programmatically regardless of screen orientation?
Try setting the center property of your activity view, like this:
 activity.center = CGPointMake(self.view.frame.size.width/2,self.view.frame.size.height/2);
In viewDidLoad, register for notifications for the device rotation:
- (void)viewDidLoad {
   [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
   [[NSNotificationCenter defaultCenter] addObserver:self
        selector:@selector(didRotate:)
        name:UIDeviceOrientationDidChangeNotification object:nil];
}
and implement didRotate:
-(void)didRotate:(NSNotification *)notification {   
   if (activity) {
    activity.center = CGPointMake(self.view.frame.size.width/2,self.view.frame.size.height/2);
    }
}
I suggest you use https://github.com/jdg/MBProgressHUD Which is a great library for doing all kinds of "Loading" screens.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With