APP启动画面实现方式

APP启动画面实现方式

一.启动图片 Default.png

在工程中添加名为Default.png的图片,程序在加载完毕之前会显示此图片。在applicationDidFinishLaunching完成之后,画面会被程序自己的view替代。
如果要同时支持iphone4之前的设备(非Retina屏)和iphone4之后的设备(Retina屏),需要放两张不同分辨率的启动图片,用于非Retina屏的Default.png,分辨率320*480;用于Retina屏的Default@2x.png,分辨率640*960。

二.模态窗口

Default.png图片只能在applicationDidFinishLaunching完成之前显示,如果在applicationDidFinishLaunching之后,主视图要从网络获取一些数据才能完全显示时,中间就会出现不完整的主界面视图,为了避免这个问题,可以在主界面获取到数据之前模态显示与Default.png相同的启动画面,直至主界面完全准备好。
AppDelegate.m

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    // Override point for customization after app launch
    mainViewController = [[MainViewController alloc] init];
    [window addSubview:mainViewController.view];
    [window makeKeyAndVisible];
    [mainViewController showSplash];
}
- (void)dealloc {
    [mainViewController release];
    [window release];
    [super dealloc];
}

MainViewController.m

-(void)showSplash
{
    UIViewController *modalViewController = [[[UIViewController alloc] init]autorelease];
    modalViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentModalViewController:modalViewController animated:NO];
    [self performSelector:@selector(hideSplash) withObject:nil afterDelay:2.0];
}

//hide splash screen
- (void)hideSplash{
    [self dismissModalViewControllerAnimated:YES];
}

在applicationDidFinishLaunching结束时,显示模态窗口(modalViewController),模态窗口中仅有一个启动画面,等待2s钟后(或等待网络数据加载完成时),取消显示模态窗口。

三.首页启动画面

另一种方式是将启动画面作为第一个视图控制器,在网络数据加载完成时再生成主视图控制器显示。
AppDelegate.m

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    // Override point for customization after app launch
    firstPageController = [[FirstPageController alloc] init];
    [window addSubview:firstPageController.view];
    [window makeKeyAndVisible];
}
- (void)dealloc {
	[firstPageController release];
	[window release];
	[super dealloc];
}

FirstPageController.m

-(void) viewDidLoad{
    [super viewDidLoad];
    [self  loadData];
}
-(void) loadData{
    //加载数据代码
    [self performSelector:@selector(finishLoadData) withObject:nil afterDelay:0.5f];
}
-(void) finishLoadData{
	MainViewController *mainViewController = [[MainViewController alloc] init];
	[self.view.superview addSubview:mainViewController.view];
	[self.view removeFromSuperview];
}

FirstPageController中仅显示启动画面,在首页启动画面显示完毕时开始加载网络数据,在网络数据加载完成时,创建主视图控制器MainViewController,然后将主视图控制器加入到firstPageController的superview即appDelegate的window中,然后firstPageControll自己的视图从父视图中退出。

参考:
IPHONE TUTORIAL FOR CREATING A SPLASH SCREEN
Automatic orientation support for iPhone and iPad apps
Delay while loading Default.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值