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 上的该框架内滚动的主要内容,如果未能解决你的问题,请参考以下文章
当 Web 视图内容调整大小时确定 UIWebView 高度