国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > iOS > 正文

iOS中UIWebView網(wǎng)頁(yè)加載組件的基礎(chǔ)及使用技巧實(shí)例

2019-10-21 18:54:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
UIWebView是開(kāi)發(fā)中很常用的應(yīng)用內(nèi)調(diào)用網(wǎng)頁(yè)瀏覽的控件,這里整理了一些iOS中UIWebView網(wǎng)頁(yè)加載組件的基礎(chǔ)及使用技巧實(shí)例 ,需要的朋友可以參考下
 

基本用法示例

- (void)viewDidLoad{  [super viewDidLoad];  // Do any additional setup after loading the view.  UIWebView * webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 20, ScreenWidth, ScreenHeight-20)];  // 自動(dòng)隊(duì)頁(yè)面進(jìn)行縮放以適應(yīng)屏幕  webView.scalesPageToFit = YES;  webView.userInteractionEnabled = YES;  webView.opaque = YES;  [self.view addSubview:webView];  NSURL * url = [NSURL URLWithString:@"http://www.youku.com"];  NSURLRequest * request = [NSURLRequest requestWithURL:url];  [webView loadRequest:request];//  NSString * myHT = @"優(yōu)酷";//  [webView loadHTMLString:myHT baseURL:url];/*  [webView goBack];    // 返回  [webView goForward];   // 前往  [webView reload];  [webView stopLoading]; */  webView.delegate = self;  //移除滾動(dòng)后的外邊陰影  UIScrollView *scrollView = webView.scrollView;  for (int i = 0; i < scrollView.subviews.count ; i++) {    UIView *view = [scrollView.subviews objectAtIndex:i];    if ([view isKindOfClass:[UIImageView class]]) {      view.hidden = YES ;    }  }}#pragma mark - UIWebViewDelegate- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{  /**   * typedef NS_ENUM(NSInteger, UIWebViewNavigationType) {   * UIWebViewNavigationTypeLinkClicked,   * UIWebViewNavigationTypeFormSubmitted,   * UIWebViewNavigationTypeBackForward,   * UIWebViewNavigationTypeReload,   * UIWebViewNavigationTypeFormResubmitted,   * UIWebViewNavigationTypeOther   };   */  NSLOG_FUNCTION;  return YES;}// 開(kāi)始加載- (void)webViewDidStartLoad:(UIWebView *)webView{  NSLOG_FUNCTION;}// 完成加載- (void)webViewDidFinishLoad:(UIWebView *)webView{  NSLOG_FUNCTION;}// 加載失敗,彈出錯(cuò)誤提示- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{  UIAlertView *alterview = [[UIAlertView alloc] initWithTitle:@"" message:[error localizedDescription]                            delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];  [alterview show];  [alterview release];  NSLOG_FUNCTION;}


以下是關(guān)于它的一些使用技巧:

1.讓網(wǎng)頁(yè)適應(yīng)手機(jī)屏幕寬度

如果用UIWebView顯示一些pc站的網(wǎng)頁(yè),會(huì)發(fā)現(xiàn)網(wǎng)頁(yè)會(huì)超出屏幕,顯得很不好看,這時(shí)可以在webViewDidFinishLoad這個(gè)代理里面通過(guò)js添加一個(gè)meta:

- (void)webViewDidFinishLoad:(UIWebView *)webView{  NSString *meta = [NSString stringWithFormat:@"document.getElementsByName(/"viewport/")[0].content = /"width=%f, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no/"", IPHONE_WIDTH];  [webView stringByEvaluatingJavaScriptFromString:meta];}

注意:使用這個(gè)方法時(shí)要把UIWebView的scalesPageToFit設(shè)成NO

webView.scalesPageToFit = NO;

 

2.為網(wǎng)頁(yè)中的圖片添加點(diǎn)擊事件,當(dāng)點(diǎn)擊圖片時(shí)放大查看

思路是給每一個(gè)img標(biāo)簽添加onclick事件,在事件中把img的src屬性封裝成一個(gè)特殊的url,然后進(jìn)行攔截

如果是通過(guò)loadHTMLString去加載網(wǎng)頁(yè)的話,可以執(zhí)行下面一句進(jìn)行替換:

 

復(fù)制代碼代碼如下:

 

    html = [html stringByReplacingOccurrencesOfString:@"<img " withString:@"<img onclick=/"window.location.href=('http://src.'+this.src);/" "];

 

 

如果是通過(guò)loadRequest,那就要再webViewDidFinishLoad中執(zhí)行以下JS:

  NSString *js = @"var imgs = document.getElementsByTagName(/"img/");"  "for(var i=0;i<imgs.length;i++){"  "  var img = imgs[i];"  "  img.onclick=function(){window.location.href=('http://src.'+this.src);}"  "}";  [webView stringByEvaluatingJavaScriptFromString:js];

然后通過(guò)webview的代理方法去攔截,拿到圖片的url,之后就可以做各種處理了

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{  NSString *url = request.URL.absoluteString;  if ([url hasPrefix:@"http://src."])  {    url = [url stringByReplacingOccurrencesOfString:@"http://src." withString:@""];    // Do something..    return NO;  }  return YES;}

3.為UIWebView添加一個(gè)跟隨網(wǎng)頁(yè)滾動(dòng)的頁(yè)頭

UIWebView里包含一個(gè)scrollview,可以向scrollview里添加一個(gè)頁(yè)頭以達(dá)到跟隨網(wǎng)頁(yè)滾動(dòng)的效果

CGFloat headerHeight = 36.0f;// 注意:y坐標(biāo)必須是負(fù)數(shù),IPHONE_WIDTH是屏幕寬度UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, -headerHeight, IPHONE_WIDTH, headerHeight)];[_webView.scrollView addSubview:_headerView];// 修改webView的scrollView的contentInset,讓頂部留出一點(diǎn)空間UIEdgeInsets edgeInset = _webView.scrollView.contentInset;_webView.scrollView.contentInset = UIEdgeInsetsMake(headerView.frameHeight, edgeInset.left, edgeInset.bottom, edgeInset.right);
 


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到IOS開(kāi)發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 凤山市| 马鞍山市| 如皋市| 德阳市| 咸宁市| 黄龙县| 古交市| 北宁市| 闸北区| 马鞍山市| 平罗县| 平远县| 扎赉特旗| 富源县| 满洲里市| 射阳县| 康定县| 屯门区| 柏乡县| 三门县| 泌阳县| 高州市| 偃师市| 上高县| 尚志市| 株洲市| 曲松县| 越西县| 平和县| 贡嘎县| 大名县| 句容市| 香格里拉县| 穆棱市| 泸溪县| 色达县| 嘉善县| 丹东市| 石渠县| 新野县| 宁海县|