在设备旋转时更改UIWebView框架

时间:2012-09-29 23:31:25

标签: ios objective-c uiwebview landscape autorotate

我正在开发一个锁定为纵向模式的应用。然而,一种视图充当各种媒体类型的全屏“播放器”。

我正在使用具有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的帧大小,但结果却很奇怪。

我已经尝试将容器视图设置为长度为[[UIScreen mainscreen] bounds].size.height的大“正方形”并将网络视图放在中间,但它的移动方式不一致 - 好像宽度和宽度相同。高度值是从旋转前的尺寸设置的。

我也尝试过设置autoResizingMask灵活的高度&宽度,但是当容器视图离开屏幕时,这也会在屏幕外拉伸Web视图。

0 个答案:

没有答案