0

この問題の解決策をどこにも見つけることができませんでした。Xcode 4.5 を使用して、ストーリーボードを使用して iOS 6 アプリを作成しています。ナビゲーション コントローラーを使用して、UIWebView を使用して Web サイトを表示するいくつかを含む、ナビゲーション バーを備えた複数のビュー コントローラー間をジャンプします。AppDelegate とさまざまな ViewController ファイルにコードを追加して、アプリのほとんどのシーンのビューをポートレートに制限し (そうしないと見栄えがよくないため)、Web サイトのビューを横向きにできるようにしました。また、Info.plist は 4 つの方向すべてを許可するように構成されています。

UIWebView シーンではすべて正常に動作します。回転、スクロール、ズームを含む - 1 つのことを除いて: ポートレートからランドスケープに回転すると、Web サイトの水平寸法はポートレート ビューの水平寸法に固定されたままになります。その結果、Web サイトの右側に大きな空白ができます。シーン(下の画像を参照)。UIWebView の上部にある小さな (1/4 インチ) 空白を、属性インスペクターの [View Controller] の下にある [Layout: Wants Full Screen] を選択して修正しました。しかし、これを修正することはできません。

必要に応じて、関連するコードまたはストーリーボードの設定を提供できます。誰でも助けることができますか?ありがとうございました。

縦表示

横向き表示

4

1 に答える 1

0

アプリケーションがviewDidLoadメソッドに読み込まれるときに、このコードを追加して解決しました:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
 [[NSNotificationCenter defaultCenter]
     addObserver:self selector:@selector(orientationChanged:)
     name:UIDeviceOrientationDidChangeNotification
     object:[UIDevice currentDevice]];

次に、これをビュー コントローラーに追加します。

- (void) orientationChanged:(NSNotification *)note
{
    UIDevice * device = note.object;
    switch(device.orientation)
    {
        case UIDeviceOrientationPortrait:
            _displayWeb.frame = CGRectMake (0, 0, 768, 1024);
            break;

        case UIDeviceOrientationPortraitUpsideDown:
            _displayWeb.frame = CGRectMake (0, 0, 768, 1024);
            break;
        case UIDeviceOrientationLandscapeLeft:
                _displayWeb.frame = CGRectMake (0, 0, 1024, 768);
            break;
        case UIDeviceOrientationLandscapeRight:
            _displayWeb.frame = CGRectMake (0, 0, 1024, 768);
            break;
        default:
            break;
    };
}

_displayWeb は IBOutlet UIWebView です。ちなみに、これは Xcode 4.6.1 を使用しています

于 2013-04-05T06:51:58.993 に答える