UIWebView /NSURL / NSBoundle 相關(guān)應(yīng)用

UIWebView /NSURL / NSBoundle 相關(guān)應(yīng)用 (實例衙吩,加載完成前的背景, 默認safari打開鏈接地址等)
來源:http://justcoding.iteye.com/blog/1455674

UIWebView可以讓你創(chuàng)建一個網(wǎng)頁瀏覽器般渡,類似safari赠摇,而不是在程序中啟動safsri哦。是不是覺得很棒呢锭魔?廢話少說芭挽,切入正題。
一笋除、創(chuàng)建UIWebView

CGRect bouds = [[UIScreen mainScreen]applicationFrame];    
UIWebView* webView = [[UIWebView alloc]initWithFrame:bounds];   

二、設(shè)置屬性

webView.scalespageToFit = YES;//自動對頁面進行縮放以適應(yīng)屏幕    
webView.detectsPhoneNumbers = YES;//自動檢測網(wǎng)頁上的電話號碼炸裆,單擊可以撥打  
webView.autoresizesSubviews = NO; //自動調(diào)整大小  
webView.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);  

三垃它、顯示網(wǎng)頁視圖UIWebView

[self.view addSubview:webView];  

四、加載內(nèi)容

NSURL* url = [NSURL URLWithString:@"http://www.youku.com"];//創(chuàng)建URL    
NSURLRequest* request = [NSURLRequest requestWithURL:url];//創(chuàng)建NSURLRequest    
[webView loadRequest:request];//加載    

也可以加載一個本地資源:

NSURL* url = [NSURL   fileURLWithPath:filePath];//創(chuàng)建URL    
NSURLRequest* request = [NSURLRequest requestWithURL:url];//創(chuàng)建NSURLRequest    
[webView loadRequest:request];//加載    

UIWebView還支持將一個NSString對象作為源來加載晒衩。你可以為其提供一個基礎(chǔ)URL嗤瞎,來指導UIWebView對象如何跟隨鏈接和加載遠程資源:

[webView loadHTMLString:myHTML baseURL:[NSURL URLWithString:@"http://baidu.com"]];   

五、導航
UIWebView類內(nèi)部會管理瀏覽器的導航動作听系,通過goForward和goBack方法你可以控制前進與后退動作:

[webView goBack];    
[webView goForward];    
[webView reload];//重載    
[webView stopLoading];//取消載入內(nèi)容    

六贝奇、UIWebViewDelegate委托代理
UIWebView支持一組委托方法,這些方法將在特定時間得到通知靠胜。要使用這些方法掉瞳,必須先設(shè)定webView的委托:

webView.delegate = self;    

七、三個方法

- (void)loadRequest:(NSURLRequest *)request;  
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;  
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;  

其中baseURL 是指基準的url是一個絕對的地址浪漠,程序要用到的其他資源就可以根據(jù)這個基準地址進行查找而不用再次定位到絕對地址陕习;

下面每個委托方法的第一個參數(shù)都是指向一個UIwebview的指針,因此你可以將一個委托用于多個網(wǎng)頁視圖址愿。

-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*) reuqest navigationType:(UIWebViewNavigationType)navigationType;
//當網(wǎng)頁視圖被指示載入內(nèi)容而得到通知该镣。應(yīng)當返回YES,這樣會進行加載响谓。通過導航類型參數(shù)可以得到請求發(fā)起的原因损合,可以是以下任意值:    
UIWebViewNavigationTypeLinkClicked    
UIWebViewNavigationTypeFormSubmitted    
UIWebViewNavigationTypeBackForward    
UIWebViewNavigationTypeReload    
UIWebViewNavigationTypeFormResubmitted    
UIWebViewNavigationTypeOther   

-(void)webViewDidStartLoad:(UIWebView*)webView ;//當網(wǎng)頁視圖已經(jīng)開始加載一個請求后,得到通知娘纷。  

-(void)webViewDidFinishLoad:(UIWebView*)webView ;//當網(wǎng)頁視圖結(jié)束加載一個請求之后嫁审,得到通知。  

-(void)webView:(UIWebView*)webView  DidFailLoadWithError:(NSError*)error;//當在請求加載中發(fā)生錯誤時赖晶,得到通知律适。會提供一個NSSError對象,以標識所發(fā)生錯誤類型。  

來源: http://blog.csdn.net/iukey/article/details/7299763

實例:

顯示圖片

CGRect myImage = CGRectMake(10, 10, 140, 100);      //定義坐標和大小  
UIImageView *myimageView = [[UIImageView alloc] initWithFrame:myImage];  //初始化UIImageView  

[myimageView setImage:[UIImage imageNamed:@"iphonewebsnsxiao.png"]];   //設(shè)置圖片  
myimageView.opaque = YES;   //不透明類型  

[window addSubview:myimageView];  //添加到window里  
[self.window makeKeyAndVisible];  

Web view

CGRect webFrame = CGRectMake(0.0f, 0.0f, 320.0f, 460.0f);     //定義坐標和大小  
UIWebView *webView = [[UIWebView alloc] initWithFrame:webFrame];//初始化UIWebView  

NSString *urlAddress = @"http://www.baidu.com";       //定義一個網(wǎng)址字符串  
NSURL *url = [NSURL URLWithString:urlAddress];     //定義NSURL的值  
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];  //創(chuàng)建一個返回值  

[webView loadRequest:requestObj];     //鏈接到URL  
[window addSubview:webView];         //添加到window里  

或者 (EmptyApplication )

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
{  
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  
// Override point for customization after application launch.  
  
  
NSLog(@"loading");  
  
UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];  
contentView.backgroundColor = [UIColor blueColor];  
  
NSLog(@"self view");  
  
// view orientation rotation  
contentView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);  
  
//設(shè)置屬性  
  
//自動調(diào)整視圖大小  
contentView.autoresizesSubviews = NO;  
[self.window addSubview:contentView];  
  
  
//創(chuàng)建一個層用來放webview    
UIWebView *aWebView = [[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];  
  
//縮放  
aWebView.scalesPageToFit = NO;  
  
//自動調(diào)整大小  
aWebView.autoresizesSubviews = NO;  
  
aWebView.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);  
//[aWebView setDelegate:self];  
  
NSURL *aURL = [NSURL URLWithString:@"http://www.youtube.com"];  
NSURLRequest *aRequest = [NSURLRequest requestWithURL:aURL];  
  
//發(fā)送請求  
[aWebView loadRequest:aRequest];  
  
//把webview添加到內(nèi)容視圖  
  
[contentView addSubview:aWebView];  
  
[self.window makeKeyAndVisible];  
  
aWebView = nil;  
contentView = nil;  
return YES;    
}  

UIWebView 加載網(wǎng)頁時使用程序中的背景(解決加載頁面時一片空白問題 )

UIWebView加載網(wǎng)頁時默認使用了網(wǎng)頁中的背景捂贿,而不能那使用程序中的主題背景纠修,這讓人很不爽。下面給出我的解決辦法厂僧。

首先我在網(wǎng)頁的css中加上了:
Html代碼

body{  
background-color:transparent;  
}  

然后直接看代碼:

UIWebView *wv = [[UIWebView alloc]initWithFrame:CGRectMake(0.0,0.0,320.0,460.0)];  
wv.backgroundColor = [UIColor clearColor];//清除背景色  
wb.opaque = NO;//背景不透明設(shè)置為NO  
[self.view addSubview:wv];  
self.view.backgroundColor = [UIColor  orangeColor];//其實這里我是為了設(shè)置為圖片背景分瘾,偷懶了,不寫了吁系。  

或者

- (void)viewDidLoad  
{  
[super viewDidLoad];  
// Do any additional setup after loading the view, typically from a nib.  
  
NSURL *url = [NSURL URLWithString:@"http://www.lebunnybleu.com/seoul/storelocation"];  
NSURLRequest *request = [NSURLRequest requestWithURL:url];  
  
self.webview.backgroundColor = [UIColor clearColor];  
self.webview.opaque = NO;  
  
[self.webviewsetBackgroundColor:[UIColor redColor]];  
// [self.webView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"webmap320x640.png"]]];  
[self.webviewloadRequest:request];  
}  

UIWebView加載本地html文件(demo.html)

CGRect bouds = CGRectMake(0, halfHight, viewBouds.size.width, halfHight);  
UIWebView *webview = [[UIWebView alloc] initWithFrame:bouds];  

webview.scalesPageToFit = YES;  
webview.autoresizesSubviews = YES;  
webview.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);  

[webview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"demo" ofType:@"html"] isDirectory:NO]]];  

[self.view addSubview:webview];  

載入html的方法

  1. NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
    NSString *filePath = [resourcePath stringByAppendingPathComponent:@"webpage.html"];
    NSString *htmlstring=[[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
    [uiwebview loadHTMLString:htmlstring baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];

或者
Java代碼

NSString *str = [NSString stringWithFormat:@""];  
[webview loadHTMLString:str baseURL:[NSURL URLWithString:@"http://www.ibtimes.com"]];   

C代碼
NSString *webpage = [NSBundle pathForResource:@"webpage" ofType:@"html" inDirectory:[[NSBundle mainBundle] bundlePath]];
[uiwebview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:webpage]]];

C代碼

   [uiwebview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://qq.com"]]];  

**NSBundle的用法 **

NSBundle的對象可以獲取應(yīng)用程序安裝目錄的附件。附件包括了白魂,當前應(yīng)用程序下汽纤,所有的文件。(圖片福荸、屬性列表等)

獲取XML文件
C代碼

NSString *filePath = [[NSBundle mainBundle] pathForResouse:@"re" ofType:@"xml"];  
NSData *data = [[NSData alloc] initWithContentsOfFile:filePath];  

獲取TXT文件
C代碼

NSString *filePath = [[NSBundle mainBundle] pathForResouse:@"myFile" ofType:@"txt"];  
NSData *data = [NSData dataWithContentsOfFile:filePath];  

獲取屬性列表
C代碼

NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ViewControllers" ofType:@"plist"]];  

默認safari打開鏈接地址

.h
C代碼

#import   

@interface adFullScreen : UIViewController   
{  
IBOutlet UIWebView *webview;  
}  

@end

.m
Java代碼

- (void) viewDidLoad  
{  
NSString *adHTML = @"";  

[webview loadHTMLString:adHTML baseURL:[NSURL URLWithString:@"http://justcoding.iteye.com"]];  
webview.delegate = self;  

adHTML = nil;  
}  

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {  
if ( inType == UIWebViewNavigationTypeLinkClicked ) {  
    [[UIApplication sharedApplication] openURL:[inRequest URL]];  
    return NO;  
}  
return YES;  
}  

如果不想設(shè)置點擊,而是打開后直接跳轉(zhuǎn)一個網(wǎng)址蕴坪,只要用以下代碼來代替
Java代碼

- (BOOL)webView:(UIWebView *)webView  
shouldStartLoadWithRequest:(NSURLRequest *)request  
navigationType:(UIWebViewNavigationType)navigationType  
{  
if ([[[request URL] absoluteString] isEqual:@"http://justcoding.iteye.com"])  
    return YES;  
  
[[UIApplication sharedApplication] openURL:[request URL]];  
  
return NO;  
}  

他的其他方法和屬性是:
C代碼

typedef enum {  
   UIWebViewNavigationTypeLinkClicked,  
   UIWebViewNavigationTypeFormSubmitted,  
   UIWebViewNavigationTypeBackForward,  
   UIWebViewNavigationTypeReload,  
   UIWebViewNavigationTypeFormResubmitted,  
   UIWebViewNavigationTypeOther  
} UIWebViewNavigationType;  

C代碼

@protocol UIWebViewDelegate   

@optional  
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;  
- (void)webViewDidStartLoad:(UIWebView *)webView;  
- (void)webViewDidFinishLoad:(UIWebView *)webView;  
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;  

@end 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市敬锐,隨后出現(xiàn)的幾起案子背传,更是在濱河造成了極大的恐慌,老刑警劉巖台夺,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件径玖,死亡現(xiàn)場離奇詭異,居然都是意外死亡颤介,警方通過查閱死者的電腦和手機梳星,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滚朵,“玉大人冤灾,你說我怎么就攤上這事≡” “怎么了韵吨?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長移宅。 經(jīng)常有香客問我归粉,道長,這世上最難降的妖魔是什么吞杭? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任盏浇,我火速辦了婚禮,結(jié)果婚禮上芽狗,老公的妹妹穿的比我還像新娘绢掰。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布滴劲。 她就那樣靜靜地躺著攻晒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪班挖。 梳的紋絲不亂的頭發(fā)上鲁捏,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音萧芙,去河邊找鬼给梅。 笑死,一個胖子當著我的面吹牛双揪,可吹牛的內(nèi)容都是我干的动羽。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼渔期,長吁一口氣:“原來是場噩夢啊……” “哼运吓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起疯趟,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤拘哨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后信峻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體倦青,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年盹舞,在試婚紗的時候發(fā)現(xiàn)自己被綠了姨夹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡矾策,死狀恐怖磷账,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贾虽,我是刑警寧澤逃糟,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站蓬豁,受9級特大地震影響绰咽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜地粪,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一取募、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蟆技,春花似錦玩敏、人聲如沸斗忌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽织阳。三九已至,卻和暖如春砰粹,著一層夾襖步出監(jiān)牢的瞬間唧躲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工碱璃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弄痹,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓嵌器,卻偏偏與公主長得像界酒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嘴秸,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • IOS之UIWebView的使用 剛接觸IOS開發(fā)1年多,現(xiàn)在對于 混合式 移動端開發(fā)越來越流行庇谆,因為開發(fā)成本上岳掐、...
    學無止境666閱讀 45,795評論 5 53
  • OS之UIWebView的使用 剛接觸IOS開發(fā)1年多,現(xiàn)在對于 混合式 移動端開發(fā)越來越流行饭耳,因為開發(fā)成本上串述、速...
    知之未道閱讀 1,660評論 0 4
  • iOS開發(fā)系列--網(wǎng)絡(luò)開發(fā) 概覽 大部分應(yīng)用程序都或多或少會牽扯到網(wǎng)絡(luò)開發(fā),例如說新浪微博寞肖、微信等纲酗,這些應(yīng)用本身可...
    lichengjin閱讀 3,671評論 2 7
  • 也許我是不喜歡秋天的,因為記憶里總有一個發(fā)生在秋天的令我絕望消極的階段新蟆。那是高中觅赊。我不愿意再重新喚醒那些令人難過...
    MelodyS閱讀 222評論 0 1
  • concede 退后,落敗 projections 預測 expose prosecutors and judge...
    c花海閱讀 136評論 0 0