我添加了一個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()
不是方向的真實反映。
有人設法做到這一點?
這幫了我:http://stackoverflow.com/questions/4920798/xcode-ios-autoresize-to-fill-a-view-explicit-frame-size-is-essential – 2013-10-14 13:57:19