Replace window.rootViewController with animation works partially
So after a long search I found the problem was in the [UIView transitionWithView:...]
Searching a bit more in stackoverflow I found Swapping rootViewController with animation
Using [UIView transitionFromView:..]
works perfectly.
The new code -
[UIView transitionFromView:self.window.rootViewController.view
toView:self.centerViewController.view
duration:0.5
options:UIViewAnimationOptionTransitionCurlUp
completion:^(BOOL finished)
{
self.window.rootViewController = self.centerViewController;
}];