ユーザーにページを読み込み中である事を
アピールするために、ページの真ん中に、
ページ読み込み中はくるくる回るアイコンを表示させたいと思います。
ただ、ちょっとハマったのでメモ。
【UIWebViewにUIActivityIndicatorViewを表示させるポイント】
●UIWebViewの背景が白いと、インジケーターが表示されていても見えない。
●WEBの読み込み開始時と、読み込み終了時にインジケーターを表示、非表示させる。
ということで、
早速コードになります。
uiwebview.h------
#import <UIKit/UIKit.h>
@interface uiwebviewViewController : UIViewController<UIWebViewDelegate> {
 UIWebView *wv;
 UIActivityIndicatorView* indicator;
}
@property (nonatomic, retain) UIWebView *wv;
@property (nonatomic, retain) UIActivityIndicatorView *indicator;
@end
-------
まずは、WEBを表示させるUIWebViewを用意。
インジケーターも用意します。
uiwebview.m------
@implementation uiwebviewViewController
@synthesize wv;
@synthesize indicator;
-(void)viewDidLoad {
 [self.view setBackgroundColor:[UIColor colorWithRed:247/256.0 green:232/256.0 blue:186/256.0 alpha:1.0f]];
 //webview1を作成
 self.wv = [[UIWebView alloc] init];
 self.wv.delegate = self;
 self.wv.frame = CGRectMake(0, 40, 320, 420);
 self.wv.backgroundColor = [UIColor redColor];
 self.wv.alpha = 0.9;
 self.wv.scalesPageToFit = YES;
 NSURL *url = [NSURL URLWithString:@"ここに読み込むHTMLを記入"];
 NSURLRequest *req = [NSURLRequest requestWithURL:url];
 [self.wv loadRequest:req];
 [self.view addSubview:self.wv];
 //インジケーターを用意する
 self.indicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
 self.indicator.frame = CGRectMake((320/2)-20, (480/2)-60, 40, 40);
 [self.view addSubview:self.indicator];
}
//WEBの読み込みを開始したら
- (void)webViewDidStartLoad:(UIWebView*)webView {
 //インジケーターの表示
 [indicator startAnimating];
}
//WEBの読み込み成功したら
- (void)webViewDidFinishLoad:(UIWebView*)webView {
 //インジケーターの非表示
 [indicator stopAnimating];
}
//WEBの読み込みに失敗したら
- (void)webView:(UIWebView*)webView 
didFailLoadWithError:(NSError*)error {
 //インジケーターの非表示
 [indicator stopAnimating];
}
// ページ読込開始時にインジケータをくるくるさせる
// ※これは、ページの上の時間とかが表示されてるところに表示させるやつです。
-(void)webViewDidStartLoad:(UIWebView*)wv{
 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}
-(void)webViewDidFinishLoad:(UIWebView*)wv{
 [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
- (void)dealloc {
 [wv release];
[indicator release];
 [super dealloc];
}
@end
-------
以上です!
ぜひお試しください。
0 件のコメント:
コメントを投稿