2012-04-13 5 views
0

В настоящее время, вот что происходит. Если я в портретном режиме, и я представляю новый modalViewController, а затем поворачиваю в альбомную, autoResizing работает отлично, и все выглядит великолепно. Однако, если я в ландшафте, и я представляю новый modalViewController, autoResizing не работает, и все выглядит фанки. Может ли кто-нибудь подумать о любых возможных идеях относительно того, почему это может произойти? Я в отчаянии, я все пробовал.UIView autoResizing работает иногда

Возможно, способ исправить это будет выяснить, какой код вызывается системой, когда я нахожусь на портрете, и я иду пейзаж. Возможно, я могу назвать этот точный код, если мой modalView представлен в ландшафте. Я пробовал layoutIfNeeded и setNeedsDisplay, но они ничего не делают. Я также попытался настроить contentMode для перерисовывания - не помогает.

У меня есть это в моей viewDidLoad для зрения модальной

if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) 
{ 
    NSLog(@"is landscape, width:%f", self.view.frame.size.width); 
} 

и это выводит 320, хотя я в пейзаж, когда он должен быть 480.

+0

Код, пожалуйста, сэр? – CodaFi

+0

Больше концептуального вопроса .. Я не знаю, какой код я могу разместить, что действительно будет полезно. – Snowman

+1

Тогда вы получите концептуальный ответ. – CodaFi

ответ

2

UIViewAutoResizingMasks то, что мы называем как «распорки» и «пружины». Рассмотрим это: у вас большой квадрат с небольшим квадратом внутри. Чтобы этот квадрат оставался идеально центрированным, вы должны установить фиксированную ширину из каждого внутреннего края большого квадрата, чтобы ограничить его. Это стойки.

Спрингс, с другой стороны, больше похож на UIView во время вращения. Скажем, наше представление должно оставаться в нижней части экрана, выровненное по центру. Мы хотим, чтобы верхняя пружина была гибкой, так что, когда представление поворачивается с 460 px до 320 px, оно сохраняет то же положение относительно измененных параметров экрана.

Помня об этом, когда представление загружено в портрете (как и все UIViewControllers), но фактическая ориентация является ландшафтной, возможно, что представление будет «запутанным» и сохранить вид беспорядочного типа гибридной ориентации , Если вам абсолютно необходимо (и я не могу подчеркнуть, насколько последним является это), предварительно измените ориентацию, используйте iOS 5.x + tryRotationToDeviceOrientarion

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