UIWebView:使框架适合视图大小,允许在 UISplitViewController 上的该框架内滚动

Posted

技术标签:

【中文标题】UIWebView:使框架适合视图大小,允许在 UISplitViewController 上的该框架内滚动【英文标题】:UIWebView: Fit frame to view size, allow scrollowing within that frame on UISplitViewController 【发布时间】:2011-10-21 17:59:56 【问题描述】:

这个问题把我逼疯了。

我有一个 UIWebView,我试图在 UISplitViewController 的右侧填充完整视图:

CGSize boundsSize = self.view.bounds.size;
self.webView = [[[UIWebView alloc] initWithFrame:CGRectMake(0, 0, boundsSize.width, boundsSize.height)] autorelease];
self.webView.delegate = self;
self.webView.opaque = NO;
self.webView.backgroundColor = [UIColor redColor];
self.webView.allowsInlineMediaPlayback = YES;
self.webView.dataDetectorTypes = UIDataDetectorTypeAddress | UIDataDetectorTypeLink | UIDataDetectorTypePhoneNumber;
self.webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin;
[self.view addSubview:webView];

首先,当我不​​知道方向时,如何使框架尺寸适合视图?我可以自动调整到合适的大小吗?

接下来,当我将 html 加载到我的 webView 中时,我希望框架大小保持不变(就像 UIScrollView 一样),但让新内容能够随着该框架滚动。有些内容要长得多,有些则不然。因此,我尝试调整框架,但这只会使框架变大而不是内容大小。

- (void)webViewDidFinishLoad:(UIWebView *)aWebView 

    // Calculate the size of our webview
    CGRect frame = aWebView.frame;
    frame.size.height = 1;
    aWebView.frame = frame;
    CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
    frame.size = fittingSize;
    aWebView.frame = frame;

//end

这不可能吗?每次我将 webView 加载到我的 webView 中时,是否需要将 webView 放在 UIScrollView 中并将其 contentSize 设置为我的新内容的高度?

【问题讨论】:

【参考方案1】:

我认为这就是完成这项工作所需的全部内容。

[articleWebView sizeThatFits:CGSizeZero];

【讨论】:

【参考方案2】:

看一下自动调整大小的蒙版。我认为这就是完成这项工作所需的全部内容。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW6

【讨论】:

对不起,我已经有了,只是忘记在这里发布了。添加到我的示例中。 您可能在 iOS 5 中遇到了这个问题。***.com/questions/7767302/…【参考方案3】:

似乎我必须在加载时手动调整框架:

    // Orientation
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

    // Create frame
    CGRect frame;
    if (UIInterfaceOrientationIsLandscape(orientation)) 
        frame = CGRectMake(0, 0, 748, 1024);
     else 
        frame = CGRectMake(0, 0, 768, 1022);
    //end

【讨论】:

以上是关于UIWebView:使框架适合视图大小,允许在 UISplitViewController 上的该框架内滚动的主要内容,如果未能解决你的问题,请参考以下文章

设置 UIWebview 的框架

当 Web 视图内容调整大小时确定 UIWebView 高度

UIScrollView 内的 UIWebView 框架不会拉伸大小以适应所有内容

如何在适合视图的同时使文本大小一致

UIWebView 内容高度不正确

iOS:在 didFinishLoad 之后调整 UIWebView 的大小(内容应该适合而不滚动)