UIWebView scalesPageToFit 无法正常工作

Posted

技术标签:

【中文标题】UIWebView scalesPageToFit 无法正常工作【英文标题】:UIWebView scalesPageToFit does not work correctly 【发布时间】:2013-10-29 23:35:52 【问题描述】:

我正在使用 UIPageViewController 和其中的多个 uiwebviews,我使用这个加载了我之前的所有 webviews:

- (void) createContentPages

    NSMutableArray *pageStrings = [[NSMutableArray alloc] init];
    for (int i = 0; i < chapters.count; i++)
    
        NSString *path;
        path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@%@",[arrayDeCapitulos objectAtIndex:i],idioma] ofType:@"txt"];
        NSString *arbit;
        if (path) 
            arbit = [[NSString alloc]initWithContentsOfFile:arbitPath encoding:NSUTF8StringEncoding error:nil];
        
        NSString *a;
        a=@"LTR";
        if ([idioma isEqualToString:@"h"]) 
            a=@"RTL";
        
        int size=[[[NSUserDefaults standardUserDefaults]objectForKey:@"preferredSize"]integerValue];
        NSString *contentString=[NSString stringWithFormat:@"<html DIR='%@'><head>"
                                 "<style>"
                                 "* padding-bottom:5;font-size:%i;"
                                 "    font-family:'SBL Hebrew';max-width: %fpx;"
                                 "</style>"
                                 "<meta name='viewport' content='width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;' />"
                                 "</head>"
                                 "<body>"

                                 "%@"

                                 "</BODY> </HTML>",a,size,self.view.bounds.size.width ,arbit];
        [pageStrings addObject:contentString];
    
    pageContent = [[NSArray alloc] initWithArray:pageStrings];

一切正常,但有时一切都出错了……我已经尝试了一切,有人知道吗?

然后在我的其他类中加载 uiwebview

[webView loadHTMLString:dataObject
                baseURL:[NSURL URLWithString:@""]];
[webView setScalesPageToFit:NO];
webView.delegate=self;

-(void)webViewDidFinishLoad:(UIWebView *)webview

    CGSize contentSize = webView.scrollView.contentSize;
    CGSize viewSize = self.view.bounds.size;
    float rw = viewSize.width / contentSize.width;
    webView.scrollView.minimumZoomScale = rw;
    webView.scrollView.maximumZoomScale = rw;
    webView.scrollView.zoomScale = rw;

结果如下:

【问题讨论】:

【参考方案1】:

我知道这听起来很奇怪,但是通过将 html 的内容移动到 div 来完成这项工作。

NSString *contentString=[NSString stringWithFormat:@"<html DIR='%@'><head>"
                 "<style>"
                 "* padding-bottom:5;font-size:%i;"
                 "    font-family:'SBL Hebrew'"

                 "</style>"

                 "</head>"
                 "<body>"
                 "<div>%@</div>"

                 "</body> </HTML>",a,size,arbit];

【讨论】:

【参考方案2】:

试试这个

NSString *contentString=[NSString stringWithFormat:@"<html DIR='320px'><head>"
             "<style>"
             "* padding-bottom:5;font-size:%i;"
             "    font-family:'SBL Hebrew'"

             "</style>"

             "</head>"
             "<body>"
             "<div>%@</div>"

             "</body> </HTML>",size,arbit];

你可以设置 div 宽度:320px;和 html 代码的高度 100%。

【讨论】:

以上是关于UIWebView scalesPageToFit 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

UIWebView scalesPageToFit 无法正常工作

在UIWebView上启用缩放/缩放

内容适合 UIWebView

在 UIWebView 上启用缩放/捏合

ios之UIWebView常用方法

UIWebview 缩放 PDF 和大 .图像缩放默认 IOS