У меня есть UIWebView
встроенный в UIViewController
и у меня возникает UIViewController
то действительно странное поведение, когда устройство повернуто. Мой текст имеет размер шрифта (в css) в 11px
, но когда я поворачиваюсь в 19px
размер шрифта изменяется до 19px
(в соответствии с Safari), и я не могу понять, откуда этот повторный расчет. Даже незнакомец, другой (однострочный) div
прямо над ним имеет размер шрифта 10 10px
и не изменяется.
У меня есть что-то вроде этого:
<div class="date">Sep 16</div>
<div class="body"><span class="bold">blah:</span> blah, blah</div>
С css что-то вроде:
div.date {
font-size: 10px;
font-weight: bold;
width: 100%;
}
div.body {
font-size: 11px;
width: 100%;
}
body
меняет размер, а date
- нет. Я не уверен, что проблема в HTML/CSS или с настройками в UIWebView
.
Есть идеи?
Safari автоматически изменяет размеры окна просмотра при изменении ориентации и будет принимать некоторые ограничения с элементами в корневом <body>
.
Цель Safari состоит в том, чтобы заполнить экран контентом, поэтому, если ваш контент не заполняет пробел, Safari увеличит некоторые элементы для его заполнения.
Вы можете установить некоторые атрибуты, такие как minimum-scale
и maximum-scale
а также установить размер width
viewport
если вы хотите определенного поведения.
Вы можете снова загрузить WebView
во время ориентации. Это работает для меня.
Используйте ниже методы в вашем ViewController
:
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
[self.view setNeedsUpdateConstraints];
}
- (void)updateViewConstraints {
[super updateViewConstraints];
[yourWebView loadHTMLString:yourHTMLString baseURL:nil];
}
Лучшая удача!
minimum-scale
,maximum-scale
,initial-scale
иuser-scalable=no
никакого эффекта. Досадно, что если вы находитесь в альбомной ориентации перед загрузкой вида, она выглядит хорошо, но если вы затем переключитесь в портретную (выглядит нормально - без масштабирования), а затем обратно в альбомную, все снова облажается!div
если это решит это за вас.