2012-07-02 2 views
2

Я пытаюсь обеспечить поддержку вращения, однако при переходе между двумя UIView свойство autoResizingMask кажется проигнорированным.UIView auto resize при переходе в subviews

Вот видео, иллюстрирующий проблему: http://www.youtube.com/watch?v=AWtO7J6YNxA

настоящее время у меня каждый UIView (родительский и подвиды) установлен на:

uiView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 

Кроме того, родительский вид имеет:

self.view.autoresizesSubviews = YES; 
+0

Вы фактически устанавливаете 'autoresizingMask' программно? Является ли это представление ('uiView') динамически созданным ... вот почему? Я очень стараюсь настраивать такие вещи в графическом дизайнере Xcode. Вы можете использовать графический инструмент для установки параметров автоматической настройки маски, а небольшая анимация показывает, как будет изменяться вид. Кроме того, я редко устанавливаю autoresizingMask, как вы это делали. Если это гибкая ширина и/или высота, обычно я также прикрепляю ее к левому/правому/нижнему/верхнему с чем-то вроде 'UIViewAutoresizingFlexibleLeftMargin'. Я не уверен, что это правильно для вас ... просто мозговой штурм. – Nate

ответ

0

Похоже, что когда вы вернетесь с веб-представления (страница Google), два вида, упомянутые выше, отображаются в режиме PORTRAIT, но t он находится в ЛАНДШАФТЕ. Если это так, вы можете просто сохранить две координаты кадра представления (x, y, width и height) перед переходом на страницу UIWebView и восстановить их при переходе назад. Конечно, вам нужно будет проверить возврат, если устройство находится в режиме «Пейзаж» или «Портрет».

Если вы сохранили кадр координаты в портретном режиме и вы вернетесь к экрану вашего UIWebView и устройство находится в портретном режиме, то просто восстановить их с

self.myView.frame = CGRectMake(savedValueOfX, 
           savedValueOfY, 
          savedValueOfWidth, 
         savedValueOfHeight); 

Если устройство находится в режиме ЛАНДШАФТНОЙ затем восстановить их вот так ...

self.myView.frame = CGRectMake(savedValueOfX, 
           savedValueOfY, 
          savedValueOfHeight, 
          savedValueOfWidth);