用捏合改变字体大小

时间:2014-02-01 18:16:08

标签: uiwebview nsuserdefaults

我使用以下代码更改带有夹点的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"];
    }

但事实并非如此。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可能会在_currentFontSize中设置viewDidLoad已保存的默认设置,但您还必须进行相同的[self.webView stringByEvaluatingJavaScriptFromString:jsString]调用才能使尺寸更改生效 - 并且您必须在加载网页视图后执行此操作,否则将不会有body标记。