1

我有一个加载 html5 横幅的 UIView。我在横幅的每一侧都得到了填充,这是可以预料的,因为横幅宽度比 UIWebView 短。但是.. 每边的填充比我应该得到的要大得多。

如果横幅比 UIWebView 短,我只想让横幅居中。

而不是看起来像这样:(其中 X 是横幅,O 是填充)

|OOXXXXXXOO|

它看起来像这样:

|OOOOXXXXXX|

在这里,如果我启用滚动,我可以像第一个示例一样将其居中。

我该如何解决?

代码

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:bannerIdentifier];

if (!cell) {

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"bannerCell"];
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, cell.contentView.bounds.size.width, cell.contentView.bounds.size.height)];
webView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
webView.userInteractionEnabled = YES;
webView.backgroundColor = [UIColor clearColor];
webView.opaque = NO;
webView.delegate = self;
webView.scrollView.bounces = NO;
webView.scrollView.scrollEnabled = NO;
webView.scalesPageToFit = YES;

NSURL *url = [NSURL URLWithString:@"http://example.com/page.html"];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
[cell.contentView addSubview:webView];

}
4

2 回答 2

2

事情是 UIWebView 显示 HTML,这意味着,如果您的 HTML 必须按照您的意愿呈现 - 实现此目的的唯一正确方法是修复加载的 HTML(和/或 css)。您可以通过以下几种方式做到这一点:

  1. 如果您可以访问服务器上的 HTML 数据,您可以调整它以在 UIWebView 中正确呈现。
  2. 如果您无权访问服务器上的 HTML 数据,您可以使用 stringByEvaluatingJavaScriptFromString: 并修复 DOM 中所需的元素。
于 2013-04-24T14:27:30.240 回答
1

您可以使用stringByEvaluatingJavaScriptFromString:Javascript 查询 DOM 以获取所需元素的宽度。然后,您可以调整 webview 的大小以适合该大小。

这给了你宽度: document.getElementById('YOURID').offsetWidth;

于 2013-04-24T14:34:30.367 回答