2013-04-24 2 views
1

У меня есть UIView, который загружает баннер html5. Я получаю отступы на каждой стороне баннера, что и следовало ожидать, поскольку ширина баннеров короче, чем UIWebView. Однако .. Набивка с каждой стороны намного больше, чем я должен получить.Центрирование содержимого UIWebView с заполнением

Я просто хочу, чтобы баннер был центрирован, если баннер короче, чем UIWebView.

Вместо того, чтобы смотреть, как это: (где Х представляет собой баннер и 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]; 

} 
+1

Лучше бы разработать веб-страницу, чтобы быть более гибким. Используете ли вы фиксированную ширину для контейнера баннера? – Jeremy

ответ

2

Дело в том, UIWebView показывает HTML, это означает, что если ваш HTML должен быть оказаны как вы хотите - единственно правильный путь для достижения этой цели является, чтобы исправить загруженный HTML (и или css). Вы можете сделать это несколькими способами:

  1. Если у вас есть доступ к HTML-данных на сервере вы можете настроить его, чтобы быть правильно отображаются в UIWebView.
  2. Если у вас нет доступа к данным HTML на сервере, вы можете использовать stringByEvaluatingJavaScriptFromString: и исправить нужные элементы в DOM.
1

Вы можете использовать stringByEvaluatingJavaScriptFromString: для запроса DOM для ширины нужного элемента с помощью Javascript. Затем вы можете изменить размер веб-представления в соответствии с этим размером.

Это дает ширину: document.getElementById('YOURID').offsetWidth;

Смежные вопросы