UIWebview контент в соответствии с рамкой веб-просмотра - PullRequest
3 голосов
/ 22 июля 2011

Я хочу отключить прокрутку внутри UIWebview и должен отображать содержимое в соответствии с шириной и высотой UIWebview. Если содержимое достаточно велико для отображения на странице, оно должно отображаться ... в конце текста, как в UILabel.

Приложение флипборда сделало это правильно, когда они отображают часть содержимого на первой странице, и, когда мы увеличиваем масштаб, мы показываем больше содержимого в соответствии с высотой и шириной.

Как этого можно достичь. Любая помощь по этому вопросу приветствуется.

Пример:

Я загружаю это на iPad

UIWebView *mWebView = [[UIWebView alloc] initWithFrame:CGRectMake(100, 100, 500, 730)];
mWebView.backgroundColor=[UIColor greenColor];
mWebView.userInteractionEnabled=YES;
mWebView.autoresizingMask=YES;
mWebView.delegate = self;
for (id subview in mWebView.subviews)
    if ([[subview class] isSubclassOfClass: [UIScrollView class]])
        ((UIScrollView *)subview).bounces = NO;
for (id subview in mWebView.subviews)
    if ([[subview class] isSubclassOfClass: [UIScrollView class]])
        ((UIScrollView *)subview).showsVerticalScrollIndicator = NO;
for (id subview in mWebView.subviews)
    if ([[subview class] isSubclassOfClass: [UIScrollView class]])
        ((UIScrollView *)subview).scrollEnabled= NO;
[self.view addSubview:mWebView];
[mWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://mobile.washingtonpost.com/c.jsp;jsessionid=E6B119C6EF5A6274030E7B3A9F97D374?item=http%3a%2f%2fwww.washingtonpost.com%2fpolitics%2fobama-gop-leaders-said-to-discuss-new-debt-plan%2f2011%2f07%2f21%2fgIQAT81BSI_mobile.mobile&cid=578815"]]];
[mWebView release];

Я хочу показать только то большое количество контента, которое может отображаться в кадре 500 750. Как вы можете видеть на скриншоте, последняя строка обрезана.

screenshot

Ответы [ 4 ]

0 голосов
/ 31 июля 2011

Вы можете легко сделать с помощью JavaScript.Здесь я могу дать вам идею отдыха, вы должны реализовать.поместите любой тег, скажем, тег div в вашем html в соответствующем месте, и добавьте сюда некоторую информацию для продолжения чтения, как только пользователь нажмет на эту загрузку следующего div, который будет иметь другую информацию о странице.это как открыть коробку, когда мы действительно хотим видеть.Вы можете легко сделать это с помощью JavaScript.

0 голосов
/ 22 июля 2011

Вы можете получить высоту webView, используя UIWebViewDelegate.в методе

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
    webView.frame = CGRectMake(0,0,320,(height + 30));
}

затем установите размер кадра webView, используя этот код.

0 голосов
/ 28 июля 2011

Flipboard переформатирует данные перед их представлением.Чтобы получить тот же эффект, вам нужно будет сделать то же самое.т.е. читать в HTML, отделить компоненты и представить его в своем собственном формате либо через UIWebview с HTML и CSS, либо через UIKIT.

UIWebviews изначально не поддерживают переполнение elipsis.Если вы идете по CSS-маршруту, проверьте свойство overflow, которое поддерживает elipsis.

0 голосов
/ 22 июля 2011

Чтобы отключить прокрутку UIWebView:

mWebView = [[UIWebView alloc] initWithFrame:CGRectMake(20, 0, 300, 390)];
mWebView.backgroundColor=[UIColor greenColor];
mWebView.userInteractionEnabled=YES;
mWebView.autoresizingMask=YES;
mWebView.delegate = self;
for (id subview in mWebView.subviews)
    if ([[subview class] isSubclassOfClass: [UIScrollView class]])
        ((UIScrollView *)subview).bounces = NO;
for (id subview in mWebView.subviews)
    if ([[subview class] isSubclassOfClass: [UIScrollView class]])
        ((UIScrollView *)subview).showsVerticalScrollIndicator = NO;
for (id subview in mWebView.subviews)
    if ([[subview class] isSubclassOfClass: [UIScrollView class]])
        ((UIScrollView *)subview).scrollEnabled= NO;

Затем добавьте этот UIWebView в качестве подпредставления вашего основного UIView или куда угодно.

Всякий раз, когда данные перезагружаются, вызывается следующий метод делегата UIWebView. Так что реализуйте код динамического изменения размера внутри этого.

- (void)webViewDidFinishLoad:(UIWebView *)webview{
   float webHeight;
   CGRect frame = webview.frame;
   frame.size.height = 1;
   webview.frame = frame;
   CGSize fittingSize = [webview sizeThatFits:CGSizeZero];
   frame.size = fittingSize;
   webview.frame = frame;
   webHeight=fittingSize.height;
   rowHt=webHeight;
   [aTableView reloadData];
}

Я добавил UIWebView в табличное представление. Поэтому я вызываю reloadData для таблицы и передаю webHeight (новую высоту веб-просмотра) делегату таблицы для установки высоты строки. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...