본문 바로가기
옛날

UIWebview [IOS][Object-C]

by 차가운게 조아 2015. 12. 10.

이전 포스팅의 업그레이드 버전이다.

기존 WebView는 아무 준비 없이 갑자기 떠버린다.

즉, 로딩되는 모습을 볼 수가 없다는 것이다.

현재 앱을 통해 Web를 접속하면 가운데에 로드되는 표시 (빙글빙글 돌아가는)를 볼 수 있을것이다.

지금 그것을 첨가해보겠다.



1.



2. 화면 구성

StoryBoard에서 화면 구성을 한다.

화면 전체에 WebView를 배치한다.



3. 클래스와 연동 및 구성하기


ViewController.h


#import <UIKit/UIKit.h>


@interface ViewController : UIViewController <UIWebViewDelegate>

{

        IBOutlet UIWebView* WebView;

}


@property (strongnonatomicUIWebView* WebView;


-(void) goUrl:(NSString*)urlAddr;

@end




ViewController.m


- (void)viewDidLoad

{

        o any additional setup after loading the view, typically from a nib.

}


....



- (IBAction)goUrl:(NSString*)urlAddr

{

        WithString:urlAddr]]];

}


- (void)webViewDidStartLoad:(UIWebView *)webView

{

        NSLog(@"Start Log");

}


- (void)webViewDidFinishLoad:(UIWebView *)webView

{

        NSLog(@"Finish Log");

}


- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

{

        NSLog(@"Fail Log");

}




4. 컴파일 후 구동 해보기

지금 위와 같이 간단히 하여 Web이 보여지는걸 확인 할 수 있다.



5. 자 여기서 이제 Upgrade를 해보자.


ViewController.h



#import <UIKit/UIKit.h>


@interface ViewController : UIViewController <UIWebViewDelegate>

{

        IBOutlet UIWebView* WebView;

        UIActivityIndicatorView* spinner;

}


@property (strongnonatomicUIWebView* WebView;

@property (strongnonatomicUIActivityIndicatorView* spinner;


-(void) goUrl:(NSString*)urlAddr;

@end




ViewController.m


- (void)viewDidLoad

{

        WebView.delegate = self;

        spinner = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

         [spinner setCenter:CGPointMake(ScreenWidth/2ScreenHeight/2)];

         [self.view addSubview:spinner];

         [self goUrl : @"http://www.naver.com"];


         [super viewDidLoad];

        // Do any additional setup after loading the view, typically from a nib


}


....



- (IBAction)goUrl:(NSString*)urlAddr

{

         [WebView loadRequest: [NSURLRequest requestWithURL

                [NSURL URLWithString:urlAddr]]];

}


- (void)webViewDidStartLoad:(UIWebView *)webView

{

        NSLog(@"Start Log");

         [spinner startAnimating];

}


- (void)webViewDidFinishLoad:(UIWebView *)webView

{

        NSLog(@"Finish Log");

 [spinner stopAnimating];

}


- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

{

        NSLog(@"Fail Log");

}



첨가한것이 바로 spinner 라는 놈 입니다.


UIActivityIndicatorView Class

Use an activity indicator to show that a task is in progress.


처리 진행중인걸 알려줄 떄 사용한다.


그리고, 설정하는 곳에서 소스가 길었던게 있었죠 ?


spinner = [[UIActivityIndicatorView alloc]

initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];


spinner변수에 UIActivityIndicatorView를 할당하는데 WhiteLarge Style도 설정한다.

Style의 종류는 아래오 같습니다.


typedef enum {   UIActivityIndicatorViewStyleWhiteLarge,   UIActivityIndicatorViewStyleWhite,  UIActivityIndicatorViewStyleGray,} UIActivityIndicatorViewStyle;



http://jenemia.tistory.com/44