UIWebebView播放视频

来源:互联网 发布:网络组件设备方案 编辑:程序博客网 时间:2024/05/16 23:39

1.创建一个GIF的文件路径,用来读取你添加的GIF文件。

Objective-C:

1

2

3

NSString *filePath = [[NSBundle mainBundle] pathForResource:@”railway” ofType:@”gif”];

 

NSData *gif = [NSData dataWithContentsOfFile:filePath];

2. 创建一个UIWebView并且把GIF转换成的NSData形式作为它的数据源。由于需要把它作为背景,因此frame尺寸应该根据iPhone的屏幕尺寸设定。同时,UIWebView类似于scrollview,你需要设置它的userInteractionEnabled属性设为NO。然后把UIWebView添加到主视图上去。

Objective-C:


1

2

3

4

5

6

7

UIWebView *webViewBG = [[UIWebView alloc] initWithFrame:self.view.frame];

 

[webViewBG loadData:gif MIMEType:@”image/gif” textEncodingName:nil baseURL:nil];

 

webViewBG.userInteractionEnabled = NO;

 

[self.view addSubview:webViewBG];

3.可选:我还需要添加其他按钮到背景上,因此我使用了另一个黑色的过滤视图,alpha值设为0.05,覆盖到UIWebView上。这样可以淡出背景视图,同时让按钮和按钮的标题更突出。

Objective-C:


1

2

3

4

5

6

7

UIView *filter = [[UIView?alloc] initWithFrame:self.view.frame];

 

filter.backgroundColor = [UIColor?blackColor];

 

filter.alpha = 0.05;

 

[self.view addSubview:filter];



- (void)viewDidLoad {

    [super viewDidLoad];

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"雨中荷花" ofType:@"gif"];

    NSData *gif = [NSData dataWithContentsOfFile:filePath];

    [self.webView loadData:gif MIMEType:@"image/gif" textEncodingName:nil baseURL:nil];

    self.webView.userInteractionEnabled = NO;

    

    [self.view bringSubviewToFront:self.login];

    [self.view bringSubviewToFront:self.regis];

}



本文是一个webView内存管理的trick,可以直接拿来用。

由于UIWebView的内容加载不受程序员直接控制,所以在UIWebView加载一些图片较多的网页时,如果图片较多,很容易就在网页读取阶段出现 memory warning,而且当你把webview对象干掉时,内存依然不减。如果不处理的话,程序就会被kill掉。如何处理呢,下面是几个tip可以让君尝试:

1、在每一次UIWebView读取页面结束后(Delegate),调用UserDefault关闭缓存。代码:

- (void)webViewDidFinishLoad:(UIWebView *)webView { [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"]; }

注意,不必担心这个WebKitCacheModelPreferenceKey会一直保持为0。因为每一次UIWebView加载页面的时候,都会把此值设置为1

2、在离开webviewcontroller时,使用WebView加载nilURL,并清理webview

-(void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; [self.webView loadRequest:nil]; [self.webView removeFromSuperview]; self.webView = nil; self.webView.delegate = nil; [self.webView stopLoading]; }

3、在收到系统警告的时候,清理NSURLCacheCachedResponse

-(void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; [self.navigationController setNavigationBarHidden:NO]; }

trick结束:)

0 0