2009-12-14 72 views
0

我想添加徽标视图作为iPhone应用午餐。我的代码如下为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]; 
} 

但模拟器无法显示,因为我want.just显示导航控制器的视图。 我认为原因是iPhone渲染“applicationDidFinishLaunching”后的第一个视图 有没有其他解决方案?

+2

记住,苹果公司特别建议在应用程序启动不使用闪屏。相反,你应该有一个Launch Image,它看起来像你的UI的一个简单版本。这有助于给用户一个印象,即您的应用程序可以很快启动。阅读人机界面指南了解更多信息。 – bpapa 2009-12-14 15:49:27

+0

尽管几乎每款游戏都使用Default.png作为闪屏,但情况并非如此。这完全取决于你正在开发的东西。 – 2009-12-14 18:35:23

回答

3

只需添加你想要的LOGO到您的项目名称为图像:为Default.png

它会自动成为你的应用程序的启动屏幕。

您的方法不起作用。 applicationDidFinishLaunching代表在之后运行完成所有加载。此外,延迟10秒将不准确,因为应用程序在某些设备上的加载速度可能比其他设备快。

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秒,直到它被移除,显示导航器视图。

希望这有助于

山姆