我使用以下代码更改带有夹点的Web视图的字体大小:
- (void)changeFontSize:(FontSizeChangeType)changeType
{
if (changeType == FontSizeChangeTypeIncrease && _currentFontSize == 160) return;
if (changeType == FontSizeChangeTypeDecrease && _currentFontSize == 70) return;
if (changeType != FontSizeChangeTypeNone)
{
_currentFontSize = (changeType == FontSizeChangeTypeIncrease) ? _currentFontSize + 5 : _currentFontSize - 5;
[[NSUserDefaults standardUserDefaults] setInteger:_currentFontSize forKey:@"fontsize"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
NSString *jsString = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'",
_currentFontSize];
[self.webView stringByEvaluatingJavaScriptFromString:jsString];
}
字体大小发生变化,这一切都很棒。但是,如果您离开Web视图,然后稍后返回,则不会保存字体大小。我必须捏,然后它恢复到所选的字体大小。 在ViewDidLoad我称之为,我认为应该这样做:
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"fontsize"] == nil)
{
_currentFontSize = 100;
}
else
{
_currentFontSize = [[NSUserDefaults standardUserDefaults] integerForKey:@"fontsize"];
}
但事实并非如此。有什么想法吗?
答案 0 :(得分:0)
您可能会在_currentFontSize
中设置viewDidLoad
已保存的默认设置,但您还必须进行相同的[self.webView stringByEvaluatingJavaScriptFromString:jsString]
调用才能使尺寸更改生效 - 并且您必须在加载网页视图后执行此操作,否则将不会有body
标记。