在app delegate中添加子视图启动图像

时间:2014-07-22 02:05:50

标签: ios objective-c delegates

我理想的做法是在应用程序委托内以编程方式更改启动图像。但是,在线阅读让我相信没有可能以编程方式以编程方式更改Default.png图像。但我有一个想法。如果我以编程方式将UIImageView添加到应用程序委托窗口并将视图置于前面会发生什么?这是我到目前为止的代码。但是,当我启动应用程序委托时,它不会添加。在日志语句中,我看到了图像,但它没有在实际屏幕上添加。有人可以请仔细检查我的代码,看看我在做错了什么?

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];

    NSURL *url = [NSURL URLWithString:
                  @"some website that returns an image"];

    UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]];
    //UImage is not null, and prints to the screen
    NSLog(@"%@",image);
    //Allocates a UIIMageview to be placed on the window.
    UIImageView * splashView = [[[UIImageView alloc]initWithFrame:CGRectMake(0,0, 320, 480)]autorelease];

    //Sets the imageview image.
    splashView.image = image;
    //Is this right? Adding  the UIImageView to the window?
    [self.window addSubview:splashView];
    //Am I doing this right? Setting the image view at "index 0"?

    [self.window bringSubviewToFront:splashView];
}  

注意:我意识到这是违反Apple的人机界面指南,但这是我的要求的一部分。希望我对每个人都很清楚。

2 个答案:

答案 0 :(得分:0)

你做不到。在应用程序启动之前iOS显示Default.png图像...

对于您的代码,请不要这样做......如果用户处于边缘模式,您的应用程序可能需要一段时间才能启动(加载图像的时间)甚至崩溃(30秒后超时)

最好预先加载图片并在didFinishLaunchingWithOptions中显示:if if。

对于您的初始问题(图片不显示),请尝试将代码放在AFTER

之后

[self.window makeKeyAndVisible];

但请记住:不要那样做! ;)

答案 1 :(得分:0)

无法以任何方式更改启动图像,您可以在启动图像转换后直接加载另一个图像。这些被称为启动画面,但在iOS世界中通常不受欢迎。请仔细阅读Apple Human Interface GuidelinesiOS App Programming Guide。您需要了解有关发布图像的所有信息。

  

人们经常说人们花费不到一两分钟来评估一个新的应用程序。当您通过立即展示有用的内容来充分利用这个短暂的时期时,您会激起新用户的兴趣并为所有用户提供卓越的体验。

     

尽可能避免显示启动画面或其他启动体验。用户可以立即开始使用您的应用程序,这是最好的。

您现在可能只是放弃尝试将图像添加到启动图像,除非您在photoshop中执行此操作,然后将其添加为新的Default.png图像,否则这是不可能的。