Я должен регулировать высоту и ширину UIWebView так, чтобы целый текст был отображен в рамках представления, и пользователь не должен прокручивать для чтения текста.
У кого-либо есть какая-либо идея, как получить ее?
Надеюсь, это укажет вам правильное направление.
Вызывая метод stringByEvaluatingJavaScriptFromString:
в UIWebView
, вы можете выполнять JavaScript из своего приложения в UIWebView
.
// get the height of your content
[webview stringByEvaluatingJavaScriptFromString:@"document.getElementById('id_of_content_container').offsetHeight;"];
// get the width of your content
[webview stringByEvaluatingJavaScriptFromString:@"document.getElementById('id_of_content_container').offsetHeight;"];
Вышеупомянутый возврат вернет объект NSString с шириной и высотой любого элемента, который вы передаете в функцию getElementById
. Имея эту информацию, вы сможете изменить размер UIWebView в соответствии с вашим контентом. Пример:
CGRect frame = webView.frame;
frame.size.width = 100;
webView.frame = frame;
Вам также может потребоваться снова сбросить scalePageToFit
, чтобы содержимое было адаптировано к новому размеру кадра.
Другой вариант - определить window.height
и window.width
на стороне HTML и использовать JavaScript для настройки содержимого в соответствии с аспектами UIWebView.
webView.scalesPageToFit = YES;
См. Также: UIWebView + SFHFStringMetrics
В UIWebView
нет специальных положений для изменения размера в соответствии с содержимым. Вы можете установить для свойства scalePageToFit
значение YES
, чтобы уменьшить масштаб содержимого, или вы можете сделать вид достаточно большим, чтобы уместить наиболее приемлемые размеры страниц. Из вашего вопроса я понимаю, что вы показываете контент, который вы контролируете. Если нет, то я не уверен, что есть простой программный способ добиться того, чего вы хотите.