在看了http://www.cnblogs.com/zhuqil/archive/2011/07/28/2119923.html一文博客后,根据参考做了一个差不多一样的小Demo,算是笔记记录
运行结果截图
1.创建一个新工程叫UIWebViewDemo; File->New->Project ->single View Application -> next
2.界面布局
拖动三个控件,Web View Text Field 和 Button把TextField和button放到Web View上面,也可以打开
调整三个控件所处位置
4.声明输出口
右键某个控件,然后拖动到WebViewViewController.h文件的@interface和@end之间
然后弹出一个框框,我们输入控件名字;
webView
textField
Button
再给button添加一个方法
然后我们声明一个UIActivityIndicatorView对象和一个 loadWebPageWithString方法,并添加上UIWebViewDelegate协议
#import <UIKit/UIKit.h> @interface WebViewViewController : UIViewController<UIWebViewDelegate> @property (strong, nonatomic) IBOutlet UIWebView *webView; @property (strong, nonatomic) IBOutlet UITextField *textField; @property (strong, nonatomic) IBOutlet UIButton *button; @property (strong,nonatomic) UIActivityIndicatorView *activityIndicatorView; - (IBAction)buttonPressed:(id)sender; -(void)loadWebPageWithString:(NSString *)urlString; @end
5.在我们声明控件输出口的时候,系统也会自动生成一些代码
@synthesize textField; @synthesize webView; @synthesize button; - (void)viewDidUnload { [self setTextField:nil]; [self setWebView:nil]; [self setButton:nil]; [super viewDidUnload]; } - (IBAction)buttonPressed:(id)sender { }还需要在添加@synthesize activityIndicatorView
6.viewDidLoad方法中
- (void)viewDidLoad { [super viewDidLoad]; //自动缩放页面,以适应屏幕 webView.scalesPageToFit = YES; webView.delegate = self; // 指定进度轮大小 self.activityIndicatorView = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)]; // 设置进度轮的中心也可以[self.activityIndicatorView setCenter:CGPointMake(30, 30)]; [self.activityIndicatorView setCenter:self.view.center]; // 设置activityIndicatorView风格 [self.activityIndicatorView setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray]; [self.webView addSubview:self.activityIndicatorView]; [self buttonPressed:nil]; }
7.实现方法代码部分
-(void)loadWebPageWithString:(NSString *)urlString { if (self.textField.text != nil) { // 追加一个字符串 urlString = [@"http://" stringByAppendingFormat:urlString]; NSURL *url = [NSURL URLWithString:urlString]; // NSURLRequest类方法用于获取URL NSURLRequest *request = [NSURLRequest requestWithURL:url]; // webView加载URL [webView loadRequest:request]; } }
按钮事件
//按钮事件,点击按钮开始调用loadWebPageWithString方法 - (IBAction)buttonPressed:(id)sender { [textField resignFirstResponder]; [self loadWebPageWithString:textField.text]; // 点击完button后隐藏textField和button if (sender==button) { textField.hidden = YES; button.hidden = YES; } }
UIWebView委托方法
//UIWebView委托方法,开始加载一个url时候调用此方法 -(void)webViewDidStartLoad:(UIWebView *)webView { [self.activityIndicatorView startAnimating]; }
//UIWebView委托方法,url加载完成的时候调用此方法 -(void)webViewDidFinishLoad:(UIWebView *)webView { [self.activityIndicatorView stopAnimating]; }
//加载url出错的时候调用此方法 -(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { // 判断button是否被触摸 if (!self.button ) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show]; } }
iPhone提供了几种不同样式风格的UIActivityIndicatorView。
activityIndicatorView有三种风格
typedef enum {
UIActivityIndicatorViewStyleWhiteLarge,
UIActivityIndicatorViewStyleWhite,
UIActivityIndicatorViewStyleGray,
} UIActivityIndicatorViewStyle;
UIActivityIndicator- ViewStyleWhite和UIActivityIndicatorViewStyleGray是最简洁的。黑色背景下最适合白色版本的外观,白色背景最适合灰色外观。它非常瘦小,而且采用夏普风格。选择白色还是灰色时要格外注意。全白显示在白色背景下将不能显示任何内容。而UIActivityIndicatorViewStyleWhiteLarge只能用于深色背景。它提供最大、最清晰的指示器。
对于activityIndicatorView的实现把他放在了UIWebView的两个委托方法中
当开始加载一个URL时候,开始activityIndicatorView,加载完毕停止activityIndicatorView动画加载效果
[self.activityIndicatorViewstartAnimating];
[self.activityIndicatorViewstopAnimating];
源代码:http://download.csdn.net/detail/duxinfeng2010/4468804
本文转自新风作浪 51CTO博客,原文链接:http://blog.51cto.com/duxinfeng/1208727,如需转载请自行联系原作者