以编程方式设置rootViewController时出现了奇怪的行为。我只使用xib,这里是我已经尝试过的场景。 当我使用这段代码时,在正确加载VC之前会出现一小段黑屏。
- (void)setRootVC:(UIViewController *)viewController {
UIWindow *window = [[[UIApplication sharedApplication] delegate] window];
[UIView transitionWithView:window
duration:0.0
options:UIViewAnimationOptionTransitionNone
animations:^{ window.rootViewController = viewController; }];
}
当我使用不同的功能时,它会消除眨眼,但还有另一种奇怪的行为。我在新VC中获得了大量文本字段,我在becomeFirstResponder
方法中将其中一个设置为viewDidLoad
,但是当VC加载时,textFieldDidEndEditing
被调用,这是完全奇怪的。这是代码。
- (void)setRootVC:(UIViewController *)viewController {
UIWindow *window = [[[UIApplication sharedApplication] delegate] window];
[UIView transitionFromView:window.rootViewController.view
toView:viewController.view
duration:0.0
options:UIViewAnimationOptionTransitionNone
completion:^(BOOL finished){
window.rootViewController = viewController;
}];
}
我受到Objective-C的限制,所以快速的解决方案将无济于事。谢谢你的回复。
答案 0 :(得分:0)
闪烁的原因是你设置了rootViewController,它应该在动画块中,所以下面的代码可能对你有所帮助..
[UIView transitionWithView:self.window
duration:0.5
options:UIViewAnimationOptionTransitionNone
animations:^{ self.window.rootViewController = viewController; }
completion:nil];
您可能希望添加一些过渡效果,而不是使用UIViewAnimationOptionTransitionNone
,您可以使用UIViewAnimationOptionTransitionCrossDissolve
代替它,它可能看起来更好......
希望它有所帮助。
干杯。