2013-09-20 3 views
0

У меня есть UIWebView, встроенный в UIViewController, и у меня возникает какое-то странное поведение, когда устройство повернуто. Мой текст имеет размер шрифта (в css) в 11px, но когда я поворачиваюсь в альбом, размер шрифта изменяется до 19px (согласно Safari), и я не могу понять, откуда этот пересчет исходит. Даже незнакомец, другой (одна строка) div прямо над ним имеет размер шрифта 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.

Любые идеи?

+0

Вы нашли решение этой проблемы? –

ответ

1

Safari automatically resizes an scales the viewport on orientation changes и возьмет некоторые свободы с элементами в корне <body> тег.

Цель Safari состоит в том, чтобы заполнить экран содержимым, поэтому, если ваш контент не заполняет пробел, Safari увеличит некоторые элементы, чтобы заполнить его.

Вы можете установить некоторые атрибуты, такие как minimum-scale и maximum-scale, а также установив viewport «s width размера, если вы хотите определенное поведение.

+0

Я пробовал установить «минимальный масштаб», «максимальный масштаб», «начальный масштаб» и «пользовательский масштабируемый = нет», чтобы не повлиять. Раздражающе, если вы находитесь в ландшафте, прежде чем загружать представление, это выглядит хорошо, но если вы переключитесь на портрет (выглядит отлично - не перемасштабировать), то обратно в пейзаж, все это снова прикручивается! –

+0

Mobile Safari загружен забавными причудами вроде этого ... Я бы просто поместил все в блок 'div', если это решает его для вас. –

+0

На самом деле они уже завернуты в другой div с 'width', установленным на' 100% '. –

0

Вы можете перезагрузить WebView еще раз при ориентации. Это работает для меня.

Использование ниже методов в вашем ViewController:

- (void)viewWillLayoutSubviews { 
    [super viewWillLayoutSubviews]; 
    [self.view setNeedsUpdateConstraints]; 
} 

- (void)updateViewConstraints { 
    [super updateViewConstraints]; 
    [yourWebView loadHTMLString:yourHTMLString baseURL:nil]; 
} 

Успехов!

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