欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IOS关于加载嵌套3D模型的webview

程序员文章站 2022-03-26 17:21:50
...

前言:最近在做IOS加载嵌套有3D模型的网页时,遇到的坑还真多,因为以前也没接触过这块,和同事一起花了一周多的时间才得以解决,在此记录一下。
一、创建webview,添加代理UIWebViewDelegate

self.myWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, SCREEN_HEIGHT-64)];
self.myWebView.delegate = self;
self.myWebView.scalesPageToFit = YES;
self.myWebView.multipleTouchEnabled = YES;
self.myWebView.userInteractionEnabled = YES;
self.myWebView.scrollView.scrollEnabled = YES;
[self.view addSubview:self.myWebView];

二、加载url。由于我们的url是由固定的URL和后台返回的文件路径拼接而成的,所以,拼接的时候应注意前后地址的格式问题,利用nsstring的stringByReplacingOccurrencesOfString熟悉转换特殊字符

**注意,必须是转换成“\\”而不是“\”*
NSString *path = [filePath stringByReplacingOccurrencesOfString:@"文件路径特殊字符" withString:@"\\"];
NSString* encodedString = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
[self.myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:encodedString]]];

三、实现代理方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    return YES;
}
- (void)webViewDidStartLoad:(UIWebView *)webView{
}
- (void)webViewDidFinishLoad:(UIWebView *)webView{
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
}

遇到的问题:
1、url拼接前后格式不一致,获取的文件路径特殊字符未转换成“\ \”,导致加载的时候不能读取到后半部分的路径,界面只展示出网页的背景而不能展示3D模型
2、使用WKWebView来加载时,在mac Safari和模拟器能正常展示并操作,而在手机端时不能正常展示及操作。关于这个问题,纠结了很久还是没有弄明白,望知道的大神们告知一下,谢谢!