【发布时间】:2016-02-11 15:51:00
【问题描述】:
我正在构建一个支持 iOS 9 及更高版本的 iOS 应用。
我正在使用 UIWebView 来显示存储在 RTF 文档中的文本,这些文本包含在我的应用程序包中。我使用以下代码将 RTF 文件的内容插入到 web 视图中:
NSURL *filePath = [[NSBundle mainBundle] URLForResource:self.detailItem withExtension:@"rtf"];
NSURLRequest *request = [NSURLRequest requestWithURL:filePath];
[self.detailWebView loadRequest:request];
我也使用它来将文本格式化为正确的大小:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *fontSize = @"80";
NSString *jsString = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'", [fontSize intValue]];
[self.detailWebView stringByEvaluatingJavaScriptFromString:jsString];
}
我通常从不使用 JavaScript,所以我并没有声称知道它是如何工作的,但它使我能够调整 fontSize 字符串并准确地达到我想要的大小。文本以与我的应用程序中其余部分相同的字体显示,一切看起来都很好。
问题是我希望能够在 Web 视图中显示一些其他文本,但我想从代码中的 NSString 加载它,所以我可以附加其他字符串并操纵用户看到的内容。当我这样做而不是从 RTF 文件加载时,我得到了非常不同的格式:
[self.detailWebView loadHTMLString:@"This is a string" baseURL:nil];
这出现在一些讨厌的 Times New Roman 风格字体中,并且文本比从 RTF 文件加载的文本要小。我意识到我可以在我的字符串中构建一些 html 标记来添加格式,但是我想了解为什么 webViewDidFinishLoad 中的 js 格式没有被应用,以及我可以做些什么来实现我在 web 视图中使用的所有字符串的通用格式.
【问题讨论】: