我想添加徽标视图作为iPhone应用程序午餐。我编码如下
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
UIImage image = [[UIImage alloc] imageWithContentsOfFile:@"1.jpg"];
UIImageView view = [[UIImageView alloc] initWithImage:image];
[window addSubViews:view];
[NSThread sleepForIntervalTime:10];
[view removeFromSubview];
[window addSubview: navigationController.view];
[window makeKeyAndVisible];
}
但是模拟器无法显示我想要的。只显示navigationController的视图。 我认为原因是iPhone渲染了“applicationDidFinishLaunching”之后的第一个视图 还有其他解决方案吗?
答案 0 :(得分:3)
只需将您想要成为LOGO的图像添加到项目中,名称为: Default.png
它将自动成为您应用程序的启动屏幕。
您的方法无效。 applicationDidFinishLaunching
代理在所有加载完成后运行。此外,将其延迟10秒将不准确,因为应用程序在某些设备上的加载速度可能比其他设备快。
答案 1 :(得分:1)
Pablo是对的 - 你可以使用Default.png。
但是,您的代码永远不会有两个原因。
1)
应用程序的主线程是UI线程 - 负责处理更新接口的线程,这是运行applicationDidFinishLaunching:
的线程。
如果您只是致电[NSThread sleepForIntervalTime:10]
,线程将会休眠。但是,这也意味着当线程处于休眠状态时,UI将不会更新。然后,当您致电[view removeFromSuperview]
时,它将移除图像并继续。你永远不会看到图像!
要使代码正常工作,您应该执行以下操作:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
[window addSubview: navigationController.view];
UIImage *image = [UIImage imageWithContentsOfFile:@"1.jpg"];
UIImageView *view = [[UIImageView alloc] initWithImage:image];
[window addSubView:view];
[view release];
[NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(removeImage:) userInfo:view repeats:NO];
[window makeKeyAndVisible];
}
- (void) removeImage:(NSTimer *)timer {
UIImageView *view = (UIImageView *)timer.userInfo;
[view removeFromSuperview];
}
此代码将显示10秒的图像,然后将其删除。但是,如果您只想在启动时使用图像,那么使用Default.png肯定是这样做的方法!
2)
您已经添加了图像前面的导航器视图 - 在上面的代码中,我已经将导航器的视图添加到UIImage之前。这意味着图像将在导航器的前方延迟10秒,直到它被移除,从而显示导航器视图。
希望这有帮助,
萨姆