生活随笔
收集整理的這篇文章主要介紹了
UIWebView相关应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉:http://blog.csdn.net/lvziru/article/details/7868454
http://justcoding.iteye.com/blog/1455674
UIWebView可以讓你創建一個網頁瀏覽器,類似safari,而不是在程序中啟動safsri哦。是不是覺得很棒呢?廢話少說,切入正題。
?
一、創建UIWebView
C代碼??
CGRect?bouds?=?[[UIScreen?mainScreen]applicationFrame];???? UIWebView*?webView?=?[[UIWebView?alloc]initWithFrame:bounds];???? ? 二、設置屬性
C代碼??
webView.scalespageToFit?=?YES;?? webView.detectsPhoneNumbers?=?YES;?? webView.autoresizesSubviews?=?NO;??? webView.autoresizingMask=(UIViewAutoresizingFlexibleHeight?|?UIViewAutoresizingFlexibleWidth);?? ?
三、顯示網頁視圖UIWebView
C代碼??
[self.view?addSubview:webView];?? ?
四、加載內容
C代碼??
NSURL*?url?=?[NSURL?URLWithString:@"http://www.youku.com"];//創建URL???? NSURLRequest*?request?=?[NSURLRequest?requestWithURL:url];?? [webView?loadRequest:request];?? ?
?也可以加載一個本地資源:
?
C代碼??
NSURL*?url?=?[NSURL???fileURLWithPath:filePath];?? NSURLRequest*?request?=?[NSURLRequest?requestWithURL:url];?? [webView?loadRequest:request];?? ?
UIWebView 還支持將一個NSString對象作為源來加載。你可以為其提供一個基礎URL,來指導UIWebView對象如何跟隨鏈接和加載遠程資源:
C代碼??
[webView?loadHTMLString:myHTML?baseURL:[NSURL?URLWithString:@"http://baidu.com"]];??? ?
五、導航
UIWebView類內部會管理瀏覽器的導航動作,通過goForward和goBack方法你可以控制前進與后退動作:
C代碼??
[webView?goBack];???? [webView?goForward];???? [webView?reload];?? [webView?stopLoading];?? ?
六、UIWebViewDelegate委托代理
UIWebView支持一組委托方法,這些方法將在特定時間得到通知。要使用這些方法,必須先設定webView的委托:
C代碼??
webView.delegate?=?self;???? ?
七、三個方法
C代碼??
-?(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 是一個絕對的地址,程序要用到的其他資源就可以根據這個基準地址進行查找而不用再次定位到絕對地址;
?
下面每個委托方法的第一個參數都是指向一個UIwebview的指針,因此你可以將一個委托用于多個網頁視圖。
C代碼??
-(BOOL)webView:(UIWebView*)webView?shouldStartLoadWithRequest:(NSURLRequest*)?reuqest?navigationType:(UIWebViewNavigationType)navigationType;?? UIWebViewNavigationTypeLinkClicked???? UIWebViewNavigationTypeFormSubmitted???? UIWebViewNavigationTypeBackForward???? UIWebViewNavigationTypeReload???? UIWebViewNavigationTypeFormResubmitted???? UIWebViewNavigationTypeOther??? ?
C代碼??
-(void)webViewDidStartLoad:(UIWebView*)webView?;?? ?? C代碼??
-(void)webViewDidFinishLoad:(UIWebView*)webView?;?? ?
C代碼??
-(void)webView:(UIWebView*)webView??DidFailLoadWithError:(NSError*)error;?? ?
?
來源:?http://blog.csdn.net/iukey/article/details/7299763
?
?
實例:
?
顯示圖片
C代碼??
CGRect?myImage?=?CGRectMake(10,?10,?140,?100);???????? UIImageView?*myimageView?=?[[UIImageView?alloc]?initWithFrame:myImage];???? ?? [myimageView?setImage:[UIImage?imageNamed:@"iphonewebsnsxiao.png"]];????? myimageView.opaque?=?YES;????? ?? [window?addSubview:myimageView];???? [self.window?makeKeyAndVisible];?? ? Web view
C代碼??
CGRect?webFrame?=?CGRectMake(0.0f,?0.0f,?320.0f,?460.0f);??????? UIWebView?*webView?=?[[UIWebView?alloc]?initWithFrame:webFrame];?? ?? NSString?*urlAddress?=?@"http://www.baidu.com";???????//定義一個網址字符串?? NSURL?*url?=?[NSURL?URLWithString:urlAddress];??????? NSURLRequest?*requestObj?=?[NSURLRequest?requestWithURL:url];???? ?? [webView?loadRequest:requestObj];??????? [window?addSubview:webView];??????????? ?
或者 (Empty Application?)
C代碼??
-?(BOOL)application:(UIApplication?*)application?didFinishLaunchingWithOptions:(NSDictionary?*)launchOptions?? {?? ????self.window?=?[[UIWindow?alloc]?initWithFrame:[[UIScreen?mainScreen]?bounds]];?? ?????? ?????? ?????? ????NSLog(@"loading");?? ?????? ????UIView?*contentView?=?[[UIView?alloc]?initWithFrame:[[UIScreen?mainScreen]?applicationFrame]];?? ????contentView.backgroundColor?=?[UIColor?blueColor];?? ?????? ????NSLog(@"self?view");?? ?????? ?????? ????contentView.autoresizingMask?=?(UIViewAutoresizingFlexibleWidth?|?UIViewAutoresizingFlexibleHeight);?? ?????? ?????? ?????? ?????? ????contentView.autoresizesSubviews?=?NO;?? ????[self.window?addSubview:contentView];?? ?????? ?????? ?????? ????UIWebView?*aWebView?=?[[UIWebView?alloc]?initWithFrame:[[UIScreen?mainScreen]?applicationFrame]];?? ?????? ?????? ????aWebView.scalesPageToFit?=?NO;?? ?????? ?????? ????aWebView.autoresizesSubviews?=?NO;?? ?????? ????aWebView.autoresizingMask=(UIViewAutoresizingFlexibleHeight?|?UIViewAutoresizingFlexibleWidth);?? ?????? ?????? ????NSURL?*aURL?=?[NSURL?URLWithString:@"http://www.youtube.com"];?? ????NSURLRequest?*aRequest?=?[NSURLRequest?requestWithURL:aURL];?? ?????? ?????? ????[aWebView?loadRequest:aRequest];?? ?????? ?????? ?????? ????[contentView?addSubview:aWebView];?? ?????? ????[self.window?makeKeyAndVisible];?? ?????? ????aWebView?=?nil;?? ????contentView?=?nil;?? ????return?YES;???? }?? ? UIWebView 加載網頁時使用程序中的背景(?解決加載頁面時一片空白問題?)
?
UIWebView加載網頁時默認使用了網頁中的背景,而不能那使用程序中的主題背景,這讓人很不爽。下面給出我的解決辦法。
?
首先我在網頁的css中加上了:
Html代碼??
body{?? background-color:transparent;?? }?? ? 然后直接看代碼:
C代碼??
UIWebView?*wv?=?[[UIWebView?alloc]initWithFrame:CGRectMake(0.0,0.0,320.0,460.0)];?? wv.backgroundColor?=?[UIColor?clearColor];?? wb.opaque?=?NO;?? [self.view?addSubview:wv];?? self.view.backgroundColor?=?[UIColor??orangeColor];?? ?
或者
Java代碼??
-?(void)viewDidLoad?? {?? ????[super?viewDidLoad];?? ?????? ?????? ????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.webviewloadRequest:request];?? }?? ? UIWebView 加載本地html文件(demo.html)
Java代碼??
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.
C代碼??
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:@"<html><head><style>body{margin:0;padding:0}</style></head><body><iframe?marginwidth=0?marginheight=0?frameborder=0?scrolling='no'?src='http://tv.ibtimes.com'></iframe></body></html>"];?? [webview?loadHTMLString:str?baseURL:[NSURL?URLWithString:@"http://www.ibtimes.com"]];??? 2.?
C代碼??
NSString?*webpage?=?[NSBundle?pathForResource:@"webpage"?ofType:@"html"?inDirectory:[[NSBundle?mainBundle]?bundlePath]];?? [uiwebview?loadRequest:[NSURLRequest?requestWithURL:[NSURL?fileURLWithPath:webpage]]];?? ? 3.
C代碼??
[uiwebview?loadRequest:[NSURLRequest?requestWithURL:[NSURL?URLWithString:@"http://qq.com"]]];?? ? NSBundle的用法 ?
?
NSBundle的對象可以獲取應用程序安裝目錄的附件。附件包括了,當前應用程序下,所有的文件。(圖片、屬性列表等)
?
獲取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?<UIKit/UIKit.h>?? ?? @interface?adFullScreen?:?UIViewController?<UIWebViewDelegate>?? {?? ????IBOutlet?UIWebView?*webview;?? }?? ?? @end?? ? .m
Java代碼??
-?(void)?viewDidLoad?? {?? ????NSString?*adHTML?=?@"<html><head><style>body{margin:0;padding:0}</style></head><body><iframe?width=1024?height=768?marginwidth=0?marginheight=0?frameborder=0?scrolling='no'?src='http://oascentral.ibtimes.com/RealMedia/ads/adstream_sx.ads/ipad.ibtimes/home@Position2'></iframe></body></html>";?? ?? ????[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;?? }?? ? 如果不想設置點擊,而是打開后直接跳轉一個網址,只要用以下代碼來代替
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?<NSObject>?? ?? @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?? ?其中黃色高亮的為清除UIWebView背景色的關鍵方法
轉載于:https://www.cnblogs.com/jackljf/archive/2012/09/21/3589016.html
總結
以上是生活随笔為你收集整理的UIWebView相关应用的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。