2010-01-01 1 views
6

У меня есть приложение, настроенное так, что работает автоповорот. Такие вещи, как tableviewcontrollers и tabbarcontrollers, автоматически изменяют размер самих себя без необходимости писать какой-либо код. Однако мне нужно, чтобы мой веб-просмотр и т. Д. Изменялся, когда устройство переключилось на пейзаж. Я установил:UIView autoresizingmask не работает для меня

webView.autoresizingMask = UIViewAutoresizingFlexibleWidth; 

, но когда я поворачиваю устройство, оно не изменяется. Я выполняю это неправильно?

ответ

4

я реализую следующее, на мой взгляд контроллера:

- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    [self.webView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
} 

Кажется, работает хорошо.

+0

Я просто попробовал его там, но он, похоже, не вызван, когда я вращаю симулятор. Я застрял там NSLOG, и он не печатается. – john

+1

Вы помещаете это в контроллер вида? Вы переопределяете другие методы вращения, такие как '-shouldAutorotateToInterfaceOrientation:'? –

+2

Я использую ваше решение, и он отлично работает, пока я вращаю устройство хотя бы один раз. Если мое представление загружено на портрете, оно не изменяет размер экрана до тех пор, пока я, конечно, не повернул устройство. Как я могу настроить его так, чтобы он менялся с момента загрузки представления? –

16

Я думаю, что, наконец, понял это. Похоже, что корневой вид файла NIB не позволяет указать гибкую ширину и гибкую высоту для маски авторезиста в построителе интерфейса (по крайней мере, не 3,2). Взглянуть. Положив следующий код в viewDidLoad, кажется, решить эту проблему:

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

Я сделал это после super вызова.