Aplicativo para iPhone: evitando a tela branca após a tela inicial. Deixe tela inicial demorar, escondê-lo após cargas UIWebview? Tela inicial não oculta corretamente
Nosso objetivo é simples para um aplicativo para iPhone: mostre uma página inicial e depois a oculte quando uma UIWebview estiver pronta para exibir sua página.
Precisamos que a tela inicial padrão permaneça até que o UIWebview esteja pronto para ser exibido. Caso contrário, uma tela branca aparece brevemente.
Infelizmente, a tela inicial não se esconde depois de fazermos isso. A tela inicial padrão permanece visível, ocultando a UIWebview por baixo.
Entendemos que isso pode violar as diretrizes da Apple.
Isso é mais para um protótipo do que qualquer coisa, e gostaríamos de entender o que estamos fazendo de errado. Alguma pista?
Estamos usando o Xcode 4.2.
AppDelegate.m://
// AppDelegate.m
//
// Created by Macintosh User on 6/4/12.
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import "AppDelegate.h"
#import "ViewController.h"
@implementation AppDelegate
@synthesize window = _window;
@synthesize viewController = _viewController;
@synthesize imgv;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
imgv = [[UIImageView alloc] init];
[imgv setImage:[UIImage imageNamed:@"Default.png"]];
[imgv setFrame:CGRectMake(0, 0, 320, 480)];
[self.window addSubview:imgv];
return YES;
}
@end
ViewController.m://
// ViewController.m
//
//
// Created by Macintosh User on 6/4/12.
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import "AppDelegate.h"
#import "ViewController.h"
@implementation ViewController
#pragma mark - View lifecycle
- (void)viewDidLoad
{
CGRect webFrame = CGRectMake(0.0, 0.0, 320.0, 460.0);
UIWebView *webView = [[UIWebView alloc] initWithFrame:webFrame];
[webView setBackgroundColor:[UIColor clearColor]];
NSString *urlAddress = @"http://www.cnn.com";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
for (id subview in webView.subviews)
if ([[subview class] isSubclassOfClass: [UIScrollView class]])
((UIScrollView *)subview).bounces = NO;
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UIImageView *imageView = appDelegate.imgv;
[imageView removeFromSuperview];
[imageView setHidden:YES];
imageView = nil;
[self.view addSubview:webView];
[self.view bringSubviewToFront:webView];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"Done loading UIWebView");
}
@end
Curret ViewController.m gerando erros:
//
// ViewController.m
// Stroll
//
// Created by Macintosh User on 6/4/12.
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import "AppDelegate.h"
#import "ViewController.h"
@implementation ViewController
@synthesize splash;
#pragma mark - View lifecycle
- (void)viewDidLoad
{
CGRect webFrame = CGRectMake(0.0, 0.0, 320.0, 460.0);
UIWebView *webView = [[UIWebView alloc] initWithFrame:webFrame];
webView.delegate = self;
[webView setBackgroundColor:[UIColor clearColor]];
NSString *urlAddress = @"http://www.cnn.com";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
for (id subview in webView.subviews)
if ([[subview class] isSubclassOfClass: [UIScrollView class]])
((UIScrollView *)subview).bounces = NO;
/*
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UIImageView *imageView = appDelegate.imgv;
[imageView removeFromSuperview];
[imageView setHidden:YES];
imageView = nil; */
[self.view addSubview:webView];
[self.view bringSubviewToFront:webView];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"Done loading UIWebView");
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
self.view.userInteractionEnabled = NO;
splash = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds];
splash.image = [UIImage imageNamed:@"Default.png"];
[self.view addSubview:splash];
});
}
-(void) webViewDidFinishLoad:(UIWebView *)webView {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[splash removeFromSuperView];
});
}
@end