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

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

淺析iOS應(yīng)用之使用UIWebView創(chuàng)建網(wǎng)頁(yè)瀏覽器

2020-02-19 15:52:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

UIWebView是iOS SDK中最常用的控件之一,它是一個(gè)內(nèi)置的瀏覽器控件,可用于瀏覽網(wǎng)頁(yè)、打開(kāi)文檔等,在本文中,武林技術(shù)頻道小編將使用此控件創(chuàng)建一個(gè)簡(jiǎn)單的瀏覽器,一起來(lái)了解一下吧!

如下圖:

201612991842514.png (353×698)

我們創(chuàng)建一個(gè)Window-based Application程序命名為:UIWebViewDemo

UIWebView的loadRequest可以用來(lái)加載一個(gè)url地址,它需要一個(gè)NSURLRequest參數(shù)。我們定義一個(gè)方法用來(lái)加載url。在UIWebViewDemoViewController中定義下面方法:

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

- (void)loadWebPageWithString:(NSString*)urlString
{
??? NSURL *url =[NSURL URLWithString:urlString];
??? NSLog(urlString);
??? NSURLRequest *request =[NSURLRequest requestWithURL:url];
??? [webView loadRequest:request];
}


在界面上放置3個(gè)控件,一個(gè)textfield、一個(gè)button、一個(gè)uiwebview,布局如下:

?

?

?

201612991902510.png (677×456)

在代碼中定義相關(guān)的控件:webView用于展示網(wǎng)頁(yè)、textField用于地址欄、activityIndicatorView用于加載的動(dòng)畫、buttonPress用于按鈕的點(diǎn)擊事件。

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

@interface UIWebViewDemoViewController :UIViewController {???
??? IBOutlet UIWebView *webView;
??? IBOutlet UITextField *textField;
??? UIActivityIndicatorView *activityIndicatorView;
????
}
- (IBAction)buttonPress:(id) sender;
- (void)loadWebPageWithString:(NSString*)urlString;
@end


使用IB關(guān)聯(lián)他們。

?

設(shè)置UIWebView,初始化UIActivityIndicatorView:

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

- (void)viewDidLoad
{
??? [super viewDidLoad];
??? webView.scalesPageToFit =YES;
??? webView.delegate =self;
??? activityIndicatorView = [[UIActivityIndicatorView alloc]
???????????????????????????? initWithFrame : CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)] ;
??? [activityIndicatorView setCenter: self.view.center] ;
??? [activityIndicatorView setActivityIndicatorViewStyle: UIActivityIndicatorViewStyleWhite] ;
??? [self.view addSubview : activityIndicatorView] ;
??? [self buttonPress:nil];
??? // Do any additional setup after loading the view from its nib.
}


UIWebView主要有下面幾個(gè)委托方法:

?

1、- (void)webViewDidStartLoad:(UIWebView *)webView;開(kāi)始加載的時(shí)候執(zhí)行該方法。
2、- (void)webViewDidFinishLoad:(UIWebView *)webView;加載完成的時(shí)候執(zhí)行該方法。
3、- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;加載出錯(cuò)的時(shí)候執(zhí)行該方法。

我們可以將activityIndicatorView放置到前面兩個(gè)委托方法中。

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

- (void)webViewDidStartLoad:(UIWebView *)webView
{
??? [activityIndicatorView startAnimating] ;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
??? [activityIndicatorView stopAnimating];
}


buttonPress方法很簡(jiǎn)單,調(diào)用我們開(kāi)始定義好的loadWebPageWithString方法就行了:

?

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

?


- (IBAction)buttonPress:(id) sender
{
??? [textField resignFirstResponder];
??? [self loadWebPageWithString:textField.text];
????
}


當(dāng)請(qǐng)求頁(yè)面出現(xiàn)錯(cuò)誤的時(shí)候,我們給予提示:

?

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

?


- (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];
}


動(dòng)態(tài)獲取UIWebView高度
監(jiān)聽(tīng) webView的 contentSize,每當(dāng)contentSize的值改變時(shí)就去更改webView 的frame。

?

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

?


[activityWebView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];


然后在回調(diào)方法里改變webView的frame

?

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

?


- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
??? if ([keyPath isEqualToString:@"contentSize"]) {
??????? webViewHeight = [[activityWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
??????? CGRect newFrame?????? = activityWebView.frame;
??????? newFrame.size.height? = webViewHeight;
??????? activityWebView.frame = newFrame;
??????? [mainTableView setTableHeaderView:activityWebView];
??? }
}


在頁(yè)面消失時(shí)記得 remove 監(jiān)聽(tīng)對(duì)象,否則會(huì)閃退

?

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

?


-(void)viewWillDisappear:(BOOL)antimated{
??? [super viewWillDisappear:antimated];
??? [activityWebView.scrollView removeObserver:self
forKeyPath:@"contentSize" context:nil];
}

通過(guò)武林技術(shù)頻道小編介紹的淺析iOS應(yīng)用之使用UIWebView創(chuàng)建網(wǎng)頁(yè)瀏覽器,相信大家都有了一定的了解,如需了解更多的相關(guān)資訊,請(qǐng)繼續(xù)關(guān)注武林技術(shù)頻道吧!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 萝北县| 马公市| 夏邑县| 兴安县| 平果县| 湖口县| 阿城市| 离岛区| 中江县| 石阡县| 樟树市| 黑龙江省| 泰顺县| 汝南县| 罗甸县| 渑池县| 齐齐哈尔市| 全南县| 镶黄旗| 沭阳县| 大安市| 涡阳县| 扶风县| 扎鲁特旗| 兴业县| 安徽省| 砀山县| 甘孜| 开封县| 额敏县| 沈阳市| 和田县| 内江市| 望都县| 社会| 荔浦县| 盐池县| 陈巴尔虎旗| 凌云县| 仁布县| 阿荣旗|