说在前面的话:
UIWebView因为其通用性,在iOS开发中经常被使用到。比如用来在应用内加载某个网页或HTML静态页面,甚至打开Word、Excel、PPT、PDF等文档以及文本、图片、音频、视频等等,一律通吃。
但是其强大的功能带来的副作用还是有的。比如在使用UIWebView加载某个页面结构复杂的网页,或是某个大型的Word文档,然后你再放大、拖动、缩小。。。然后就尴尬了,内存直接上100+M,分分钟给你崩了。
为了解决这一尴尬,大多数人首先想到的就是“取消UIWebView的缩放手势”,因为在正常显示和滚动的情况下内存并不会暴增。
// 1. 首先控制器遵守UIScrollViewDelegate协议;
@interface TestViewController() <UIScrollViewDelegate, UIWebViewDelegate>
// views
@property(weak, nonatomic)UIWebView *webView;
@end
// 2. 设置代理:
- (void)viewDidLoad {
[super viewDidLoad];
//设置UIWebView
UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
webView.backgroundColor = [UIColor whiteColor];
webView.scalesPageToFit = YES;
webView.delegate = self;
webView.scrollView.delegate = self;
[self.view addSubview:webView];
self.webView = webView;
//设置并开始请求
NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://www.baidu.com"]];
[self.webView loadRequest:urlRequest];
}
// 3. 缩放回调时设置为nil:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return nil;
}