UIWebview 를 사용하여 iOS 앱 화면에 모바일웹 화면을 띄우는 방법은 간단합니다.
스토리 보드를 이용한 방법이 아래 링크에 잘 나와있습니다. 소스 코드만 봐도 간단하지요?
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self goToURL:@"https://mobile.twitter.com/waterstreetjr"];
}
// displays the URL
-(void)goToURL:(NSString*) fullURL{
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[_webView loadRequest:requestObj];
}
이렇게 UIWebview 를 만들고 나서...
1. 화면이 나오면 로딩이 끝날 때까지 흰색화면으로 남게 되는데요, 음.. 아래 그림처럼 로딩 이미지가 떠주면 어떨까 싶어서 추가해봤습니다.
#import <UIKit/UIKit.h>
@interface HomeViewController : UIViewController<UIWebViewDelegate>
{
UIActivityIndicatorView* loadingIndicator;
}
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@property (strong, nonatomic) UIActivityIndicatorView *loadingIndicator;
-(void)goToURL:(NSString*) fullURL;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[_webView setDelegate:self];
[self addLoadingIndicatorToView];
[self goToURL:@"https://mobile.twitter.com/waterstreetjr"];
}
// add loading indicator
-(void)addLoadingIndicatorToView{
loadingIndicator= [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[loadingIndicator setCenter:CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2)];
[self.view addSubview:loadingIndicator];
}
// displays the URL
-(void)goToURL:(NSString*) fullURL{
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[_webView loadRequest:requestObj];
}
- (void)webViewDidStartLoad:(UIWebView *)webView{
NSLog(@"webViewDidStartLoad");
[loadingIndicator startAnimating];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView{
NSLog(@"webViewDidFinishLoad");
[loadingIndicator stopAnimating];
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
NSLog(@"didFailLoadWithError");
}
동작이 잘 되는 부분은 확인 해 봤습니다.
2) 로딩 화면이 보이지 않고, 로딩이 끝난 후에 보여지면 어떨까 생각해봤습니다. 예를 들면 테이블 뷰가 나오고 그 중에서 다음 화면이 웹뷰인 셀이 있습니다. 눌렀을 시 UIwebview 로 넘어갈 때 로딩이 끝난뒤 넘어가게 할 수도 있습니다.
넘어가기 전 테이블 뷰에서 다음 화면인 웹 뷰로 가는 셀을 터치 했을 경우, pushViewController 를 부르기 전에, 웹뷰 를 미리 로딩을 할 수 있도록 합니다.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // check indexPath... myWebView = [[MyWebViewController alloc] init]; myWebView.delegate = self; [myWebView preLoadView]; }
웹뷰가 로딩이 끝나면 다음 화면으로 뷰가 넘어가게 됩니다.
- (void)webViewDidFinishLoad:(UIWebView *)webView { [self.navigationController pushViewController:myWebView animated:YES]; [myWebView release]; }
아직 테스트 된 코드는 아니지만, 실제 코드 적용 과 함께 테스트 후 영상을 올리도록 하겠습니다.
'초짜 IT보이 서바이벌 스토리 > iOS - Objective-C' 카테고리의 다른 글
[Objective-C] NSString 을 NSData 로 변환하기 (0) | 2015.07.07 |
---|---|
[Objective-C] NSArray 값을 NSLog 로 보기 (0) | 2015.07.07 |
[Objective-C] xcode5 에서 json 으로 UITableView 연습하기 (0) | 2014.06.30 |
[Objective-C] UITableview 리로드 에니메이션 (0) | 2014.06.26 |
[Objective-C] 간단한 로그인 화면 만들기 (0) | 2014.06.25 |