UIWebView:适合框架以查看大小,允许在UISplitViewController上的该框架内滚动

时间:2011-10-21 17:59:56

标签: objective-c ios uiview uiwebview uiscrollview

这个问题让我疯狂。

我有一个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放在UIScrollView中,并在每次将其加载到我的webView中时将其contentSize设置为我新内容的高度?

3 个答案:

答案 0 :(得分:2)

我认为这就是你完成这项工作所需要的一切。

[文章WebView sizeThatFits:CGSizeZero];

答案 1 :(得分:0)

答案 2 :(得分:-4)

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

    // 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