我正在尝试在 iOS 屏幕上出现 View 后立即制作一个对用户可见的动画。我本以为我可以把它放在 viewDidAppear 中;该文档听起来像是在 View 可见后立即调用此函数。然而,情况似乎并非如此——viewDidAppear 是在 View 实际可见之前被调用的。该 View 是以编程方式创建的,而不是从 nib 中创建的。这是一个抽象示例:
sampleviewcontroller.m
@implementation sampleViewController
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
// setup a generic view
self.view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
self.view.backgroundColor = [UIColor blueColor];
}
// View should be shown by now?
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
return; // set breakpoint here, but view is NOT visible in simulator at this point
}
这将创建一个纯蓝色 View 。但是,如果我在 viewDidAppear 的返回行处设置断点,则到达断点时蓝色 View 不可见。稍后它就会变得可见。
这是预期的吗? View 何时真正对用户可见?应用程序委托(delegate)代码是库存预生成的东西:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after app launch
[window addSubview:viewController.view];
[window makeKeyAndVisible];
return YES;
}
如果这很重要的话,我正在使用较旧的 SDK(在 Snow Leopard 上)...
最佳答案
我认为这都是关于应用程序循环的,当您位于该断点时,您将无法看到 View 。确实,当 View 可见时会调用 viewDidAppear,但当您将其与代码刹车点一起使用时则不会。
关于ios - viewDidAppear 调用之前 View 未显示? View 何时显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13556114/