ios - Objective-C 中 UIScrollView 内具有动态高度的 UIWebView

标签 ios objective-c iphone uiscrollview uiwebview

我正在尝试制作一个具有“动态屏幕高度”的 UIWebView。该 webview 位于 UIScrollView 内部,位于其他组件下方。查看布局(它使用自动布局):

enter image description here

我的想法是只提供一个滚动(来自 UIScrollView - 它的工作)并使 WebView 视口(viewport)根据内容大小而增长。而且它不起作用。

我做了什么来尝试做到这一点:

  1. UIWebView 属性“缩放页面以适合”已启用;
  2. UIWebView 未分页;
  3. UIWebView 不允许用户交互。

在我的 UIViewController 中:

- (void) viewDidAppear:(BOOL)animated {
    NSString *urlString = @"MY URL GOES HERE";
    NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    [_webViewDescription loadRequest:urlRequest];
    _webViewDescription.delegate = self;
    _webViewDescription.scrollView.scrollEnabled = NO;
    _webViewDescription.scrollView.bounces = NO;
}

我的 UIWebViewDelegate:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    CGRect frame = webView.frame;
    frame.size.height = 1;
    webView.frame = frame;
    CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
    frame.size = fittingSize;

    webView.frame = frame;


    NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);

    _myScrollView.contentSize = webView.bounds.size;
}

当我运行代码时,它会打印正确的 UIScrollView 大小和 UIWebView 大小。 UIScrollView 高度变大,但 UIWebView 从第一次加载时保持相同的高度。

我正在真实设备中进行测试。

最佳答案

向您的 webView 添加高度约束并制作一个类似的 IBOutlet

@property(strong, nonatomic) IBOutlet NSLayoutConstraint *webViewHeightConstraint;

加载您的 WebView 并在 WebView 委托(delegate)中

- (void)webViewDidFinishLoad:(UIWebView *)webView

获取webview内容高度并设置webViewHeightConstraint.constant 如下所示:-

    - (void)webViewDidFinishLoad:(UIWebView *)webView
{

    NSString *str = [webView stringByEvaluatingJavaScriptFromString:@"(document.height !== undefined) ? document.height : document.body.offsetHeight;"];
    CGFloat height = str.floatValue;
    webViewHeightConstraint.constant = height;

}

希望对您有帮助。

关于ios - Objective-C 中 UIScrollView 内具有动态高度的 UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38455282/

相关文章:

iphone - iOS 中的后台 GPS。这可能吗?

objective-c - 为什么 Xcode 会自动创建带下划线的变量?

iOS:如何将 iPhone 设置链接到 PHPhotoLibrary 权限

ios - 右约束在 iphone SE 上无法正常工作

iphone - release 与 nil —— 最佳实践

ios - 如何在保留其现有属性的同时为 UITextField 设置占位符文本的颜色?

iOS Xcode 6.2 全屏 - 运行崩溃

ios - 找到所有单例的 cocoa 类?

objective-c - Mountain Lion 中的条件类别

ios - 在 Storyboard 上添加 UILabel 后 UIScrollView 停止滚动