首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >启动画面不显示

启动画面不显示
EN

Stack Overflow用户
提问于 2010-10-27 00:11:50
回答 1查看 893关注 0票数 0

编辑1:将代码更改为:

delegate.h:

代码语言:javascript
运行
复制
#import <UIKit/UIKit.h>

@class ViewController;

@interface AppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    ViewController *viewController;
    UIImageView *splashView;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet ViewController *viewController;
@property (nonatomic, retain) IBOutlet UIImageView *splashView;

- (void)removeSplash;

@end

delegate.m:

代码语言:javascript
运行
复制
#import "AppDelegate.h"
#import "ViewController.h"

@implementation AppDelegate

@synthesize window;
@synthesize viewController;
@synthesize splashView;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    splashView.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Splash" ofType:@"png"]];
    [window addSubview:splashView];
    [window bringSubviewToFront:splashView];
    [window makeKeyAndVisible];

    [self performSelector:@selector(removeSplash) withObject:nil afterDelay:5.0];

    [window addSubview:viewController.view];

    return YES;
}

- (void)removeSplash {
    [splashView removeFromSuperview];
    [splashView release];
}

- (void)dealloc {
    [viewController release];
    [window release];
    [super dealloc];
}

@end

编辑2:

当我使用:

代码语言:javascript
运行
复制
splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
splashView.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Splash" ofType:@"png"]];
if (splashView.image == nil) {
    NSLog(@"splashView is nil");
}

它记录"splashView is nil“

我的Viewcontroller是空的,只是为了调试目的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-27 00:41:39

正如你可能已经知道的,闪屏是不被鼓励的。既然你的图片是Default.png,它不是已经在应用程序启动时自动显示了吗?

在任何情况下,sleep()调用都可能阻塞UI。删除sleep()并将其后面的语句( removeFromSuperview等)移动到应用程序委托中的另一个方法。使用performSelector:withObject:afterDelay:调用此方法。将performSelector调用放在当前有睡眠调用的位置。

此外,您应该使用didFinishLaunchingWithOptions方法,而不是旧的applicationDidFinishLaunching方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4025609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档