在UIScrollView中实现UIWebView

时间:2015-02-11 21:51:01

标签: ios iphone uiwebview uiscrollview uikit

我试图在UIScrollView中使用UIWebView,我想在图像下显示webview并使它们可滚动。 所以我顺着这些步骤:

  1. 停用UIWebView的滚动属性
  2. 将UIScrollView和UIWebView高度设置为等于内容大小。
  3. 这是我的代码:

    - (void)viewDidLoad {
        [super viewDidLoad];
    
            self.contentReader.scrollView.scrollEnabled = NO;
            NSString *myDescriptionHTML = [NSString stringWithFormat:@"<html> \n"
                                           "<head> \n"
                                           "<style type=\"text/css\"> \n"
                                           "body {font-family: \"%@\"; font-size: %d;}\n"
                                           "</style> \n"
                                           "</head> \n"
                                           "<body>%@</body> \n"
                                           "</html>", @"JF Flat", 18, self.thePost.content];
    
            [self.contentReader loadHTMLString:[NSString stringWithFormat:@"<div style='text-align:right; text-align:justify; direction:rtl'><style type='text/css'>img { max-width: 100%%; width: auto; height: auto; }</style><style type='text/css'>iframe { max-width: 100%%; width: auto; height: auto; }</style>%@<div>",myDescriptionHTML] baseURL:nil];
    
        }
        -(void)webViewDidFinishLoad:(UIWebView *)webView {
            // get the html content height
            NSString *output = [webView stringByEvaluatingJavaScriptFromString:@"document.height;"];
            NSLog(@"Content Size %@",output);
            // adjust the height of webView
            NSLog(@"WebView Hieght before Update%f", webView.frame.size.height);
            CGRect frame = webView.frame;
            frame.size.height = 1;
            webView.frame = frame;
            CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
            frame.size = fittingSize;
            webView.frame = frame;
            NSLog(@"WebView Hieght After Update%f", webView.frame.size.height);
            [self.scroller setContentSize:webView.bounds.size];
        }
    

    这是日志消息:

    [5150:203791] WebView Hieght before Update360.000000
    [5150:203791] WebView Hieght After Update5888.000000
    

    问题是,当我向下滚动时,内容未显示,没有显示任何内容。检查图片: enter image description here

    更新 调试视图Hearachy。 enter image description here

    正如您所看到的,视图层次结构中的WebView高度未发生变化。只有网页改变了大小。

2 个答案:

答案 0 :(得分:3)

我们已经在评论中解决了这个问题,所以我们只是为了完整性而给出这个答案。

如果您正在使用自动布局,请确保通过设置高度约束等约束并更改其常量以更改布局来更改WebView的大小。如果要为特定的自动布局更改设置动画,请执行以下操作:

[UIView animateWithDuration:0.5 animations:^{
    self.webViewHeightConstraint.constant = fittingSize.height;
    [self.view layoutIfNeeded];
}];

答案 1 :(得分:0)

有点远,但你可能想尝试

webView.scrollView.contentSize = fittingSize;

webView.scrollView.frame = CGRectMake(0,0,fittingSize.width, fittingSize.height);

由于滚动已关闭,因此加载html后内容大小或框架可能不会更改。就像我说远射但可能有效。