UIViewController に webview を追加しました。サイズをUIViewControllerのビューに合わせることができると思いましたが、すぐにUIControllerViewフレームが画面の向きとは無関係であることに気付き、縦向きモードのようにフレームを表示しました(画面が風景で)。UIInterfaceOrientationIsPortrait()
デバイスが平らに横たわっている場合、画面が横向きに回転されていても、デバイスが縦向きであると報告されるため、うまくいきません。
この問題を回避するために、ステータス バーの向きを確認し、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()
ます。これは、向きを正しく反映したものではありません。
誰かがこれを行うことができましたか?