2012-05-23 3 views
0

У меня есть класс с именем Announcement, он имеет Title (NSString), а Publishing Date (NSString) и А (BodyNSString с содержанием HTML).Вычислить UIWebView высоту в зависимости от его содержания

Я хотел бы отобразить его так же, как в приложении электронной почты. Когда вы читаете электронное письмо, у вас есть первые три «строки» (From, To, Title [date]), а затем содержимое электронной почты.

Я хотел бы создать только строку «Название [дата]», а затем тело. Я предполагаю, что это будет UITableView, который имеет на первой ячейке мой Title и на второй ячейке UIWebView.

Но, похоже, клетка имеет ровно высоту UIWebView, так что мой вопрос заключается в следующем:

Как рассчитать высоту моего UIWebView в зависимости от моего Body? Поскольку в основном при прокрутке по вертикали вы прокручиваете весь UITableView, а когда вы прокручиваете по горизонтали, вы прокручиваете только содержимое UIWebView.

Благодаря

+0

Возможный дубликат [Как определить размер содержимого UIWebView?] (Http://stackoverflow.com/questions/3936041/how-to-determine-the-content-size-of-a-uiwebview) –

ответ

4

В Webview метод делегата, просто попробуйте ниже код:

- (void)webViewDidFinishLoad:(UIWebView *)webView{ 
    [webviewTopicDesc sizeToFit]; 
    [webviewTopicDesc setFrame:CGRectMake(webviewTopicDesc.frame.origin.x, webviewTopicDesc.frame.origin.y, 300.0, webviewTopicDesc.frame.size.height)]; 
} 

Перед этим, сделайте высоту WebView, как 5,0.

Надеюсь, это поможет вам.

Здесь вы можете получить динамическую высоту на основе строки.

-(CGSize)getDynemicHeight:(int)pintFixWidth :(NSString *)pstrText 
{ 
CGSize maximumSize=CGSizeMake(pintFixWidth, g_Max_Width); 
UIFont *myFont = [UIFont fontWithName:g_Default_Font_Name size:g_Default_Font_Size];// font used for label 
myFont=[UIFont boldSystemFontOfSize:g_Default_Font_Size]; 

CGSize sizeS = [pstrText sizeWithFont:myFont 
        constrainedToSize:maximumSize 
         lineBreakMode:UILineBreakModeWordWrap]; 

sizeS.height=sizeS.height+39; 

return sizeS; 
} 

Здесь вы должны исправить ширину и размер шрифта шрифтом.

Может быть, это поможет вам.

+0

Это работает, но мне нужен минимальный размер контента (или масштаб масштаба). В принципе, когда я загружаю веб-представление, я хочу отобразить полный контент. – Cosmin

+0

Я обновил свой ответ и добавлю функцию, чтобы получить динамическую высоту на основе длины строки. Надеюсь, это поможет вам. –

0

Есть несколько способов найти высоту содержания UIWebView «s.

Вот несколько советов, чтобы начать с:

How to determine UIWebView height based on content, within a variable height UITableView?

How to determine the content size of a UIWebView?

iPhone - get the Content Size of UIWebView

Обратите внимание, что при использовании UIWebView в UITableView не обязательно является очень хорошей идеей, специально если у вас есть много Announcements для прокрутки в том же UITableView. Если вы показываете только одно объявление за UITableView, вы должны уйти от него, но для таблиц с большим количеством ячеек для прокрутки, использование веб-просмотров в ячейках может привести к проблемам с плохими характеристиками.

Apple также рекомендуем не использовать встроенный UIWebViews/UITableViews/UIScrollViews.

От UIWebView Class Reference:

Важно: Вы не должны вставлять UIWebView или объекты UITableView в объектов UIScrollView. Если вы это сделаете, неожиданное поведение может привести к , потому что события касания для двух объектов могут быть перемешаны и ошибочно обработаны .

Мои 2 цента :)

+0

Я хочу минимальный размер контента (или масштаб масштаба). В принципе, когда я загружаю веб-представление, я хочу отобразить полный контент. – Cosmin

+0

В этом случае вам нужно будет установить свойство 'scalesPageToFit'' UIWebView' 'TRUE' – Mutix

+0

. Я хочу, чтобы мой UIWebView имел следующий фрейм = CGRectMake (0,0,320, height), и я хочу, чтобы контент был имеют точно такую ​​же «ширину» (320) и соответственно регулируют ее высоту. Например, если я отключу scalesPageToFit, и я создаю фрейм для моего UIWebView (0,0,320,480), содержимое фиксируется по горизонтали, и я могу только прокручивать по вертикали. Я хочу нечто подобное, только то, что я хочу, чтобы высота была уже установлена ​​в соответствии с высотой содержимого. А также, я хочу, чтобы иметь возможность масштабирования, но если я устанавливаю scalesPageToFit, то сначала содержимое не вписывается в мою ширину. Вы не понимаете, что я понимаю. – Cosmin

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