2013-05-07 6 views
0

Я добавил веб-просмотр в UIViewController. Я предположил, что могу сопоставить его размер с представлением UIViewController, но вскоре понял, что кадр UIControllerView не зависит от ориентации экрана и поэтому отображает рамку, как это было бы в портретном режиме (так неправильно, если бы экран был в ландшафте). Выполнение UIInterfaceOrientationIsPortrait() не работает, потому что если устройство лежит ровно, оно все равно сообщает об этом как о портрете, даже если экран повернут в альбомный.Изменение размера экрана в полноэкранном режиме внутри UIViewController при вращении?

Чтобы обойти эту проблему, я проверил ориентацию строки состояния, а затем использовал границы UIScreen (также независимо от вращения), чтобы выработать текущий кадр, а затем удалил размер строки состояния, если он виден ,

CGRect frame = [UIScreen mainScreen].bounds; 

BOOL isPortrait; 
UIDeviceOrientation orientation = (UIDeviceOrientation)[[UIApplication sharedApplication] statusBarOrientation]; 
    if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown) { 
     isPortrait = YES; 
    } 
    else { 
     isPortrait = NO; 
    } 

    if (!isPortrait) { 
     frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.height, frame.size.width); 
    } 

if ([UIApplication sharedApplication].statusBarHidden) { 
     return frame; 
    } 
    else { 
     return CGRectMake(frame.origin.x, 
          frame.origin.y, 
          frame.size.width, 
          frame.size.height - 20); 
    } 

Теперь я столкнулся с другой проблемой - хотя я настроил свой UIWebView для автоматического изменения, рамки вида по этой UIViewController не зависит от вращения, так что не меняется, поэтому моя UIWebView не меняет кадр правильно при вращении.

(Как ни странно, несмотря на виде рамки UIViewController не меняется, вид на самом деле изменить размер себя правильно)

Я попытался с помощью метода didRotateFromInterfaceOrientation:, который сделал масштабирование, но только после того, как все вращения анимации была сделана ,

Использование willRotateToInterfaceOrientation:duration: создает ту же проблему, что и раньше - то, что UIInterfaceOrientationIsPortrait() не является истинным отражением ориентации.

Никто не смог это сделать?

+0

это помогло мне: http://stackoverflow.com/questions/4920798/xcode-ios-autoresize-to-fill-a-view-explicit-frame-size-is-essential –

ответ

2

попробуйте авторизовать как просмотр веб-просмотра, так и viewcontroller. или вы также можете сделать другое представление и удалить представление по умолчанию в файле nib viewcontroller. Авторезистируйте этот вид и подключитесь к точке выхода.

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