使用填充中心UIWebView内容

时间:2013-04-24 13:24:44

标签: iphone ios objective-c

我有一个加载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];

}

2 个答案:

答案 0 :(得分:2)

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

  1. 如果您可以访问服务器上的HTML数据,可以调整它以便在UIWebView中正确呈现。
  2. 如果您无法访问服务器上的HTML数据,可以使用stringByEvaluatingJavaScriptFromString:并修复DOM中的所需元素。

答案 1 :(得分:1)

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

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