2013-05-07 90 views
0

我添加了一個webview到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 – 2013-10-14 13:57:19

回答

2

嘗試自動調整webview和viewcontroller的視圖。或者你也可以使用另一個視圖並刪除viewcontroller的nib文件中的默認視圖。自動調整該視圖並連接到查看插座。

相關問題