2

ポートレートモードにロックされているアプリを開発しています。ただし、1つのビューは、さまざまなメディアタイプのフルスクリーンの「プレーヤー」として機能します。

メディアを再生するためのサブビューをUIView持つサブクラスを使用しています。UIWebviewこれは、表示スタックの上にフルスクリーンで表示されます。私の問題は、このビューのみを横向きのコンテンツ(ビデオやPDFなど)に対して回転させることで発生します。

回転を行うために、initメソッドでオブザーバーを設定しています。

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

そしてそのように回転します:

- (void)deviceRotated:(NSNotification *)notification {
UIDeviceOrientation orientation = [[notification object] orientation];
    if (orientation == UIDeviceOrientationLandscapeLeft) {
        [UIView animateWithDuration:0.6f delay:0.0 options:UIViewAnimationCurveEaseInOut
                     animations:^{ [self.webView setTransform:CGAffineTransformMakeRotation(M_PI / 2.0)]; }
                     completion:nil];
    } 
    else if (orientation == UIDeviceOrientationLandscapeRight) {
        [UIView animateWithDuration:0.6f delay:0.0 options:UIViewAnimationCurveEaseInOut
                     animations:^{ [self.webView setTransform:CGAffineTransformMakeRotation(M_PI / -2.0)]; }
                     completion:nil];
    } 
    else if (orientation == UIDeviceOrientationPortraitUpsideDown) {
        [UIView animateWithDuration:0.6f delay:0.0 options:UIViewAnimationCurveEaseInOut
                     animations:^{ [self.webView setTransform:CGAffineTransformMakeRotation(M_PI)]; }
                     completion:nil];
    } 
    else if (orientation == UIDeviceOrientationPortrait) {
        [UIView animateWithDuration:0.6f delay:0.0 options:UIViewAnimationCurveEaseInOut
                     animations:^{ [self.webView setTransform:CGAffineTransformMakeRotation(0.0)]; }
                     completion:nil];
    }
}

self.webView回転するときにフレームサイズを変更する必要があることはわかっていますが、奇妙な結果が得られています。

コンテナビューを長さのある大きな「正方形」として設定し、Webビューを中央に配置しようとしました[[UIScreen mainscreen] bounds].size.heightが、動きが一貫していません。回転前の寸法から幅と高さの値が設定されているようです。

また、柔軟な高さと幅を設定しようとしましautoResizingMaskたが、コンテナビューが画面外にあるため、Webビューも画面外に拡大されます。

4

0 に答える 0