当我在 ios 8 中旋转 MPMediaPlayer 时它变小了

Posted

技术标签:

【中文标题】当我在 ios 8 中旋转 MPMediaPlayer 时它变小了【英文标题】:MPMediaPlayer becomes small when i rotate it in ios 8 【发布时间】:2014-09-19 23:59:29 【问题描述】:

我有播放视频的应用程序。 在 ios7 中工作非常好,但现在在 iOS8 中它坏了

self.player = [[MPMoviePlayerController alloc] initWithContentURL:self.videoFileToDisplay];
[self.player play];

[self.view setBackgroundColor:[UIColor redColor]];
[self.player.view setBackgroundColor:[UIColor greenColor]];
UIView *playerView = self.player.view;

[self.view addSubview:playerView];
playerView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[playerView]|"
                                                                  options:0
                                                                  metrics:nil
                                                                    views:NSDictionaryOfVariableBindings(playerView)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[playerView]|"
                                                                  options:0
                                                                  metrics:nil

还取决于水平或垂直视频,我需要旋转它

- (void)adoptVideoToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation withDuration:(NSTimeInterval)duration


    CGFloat horizontalVideoAngle = 0;
    CGFloat verticalVideoAngle = 0;

    switch (toInterfaceOrientation) 
        case UIDeviceOrientationLandscapeLeft:
            horizontalVideoAngle = 0;
            verticalVideoAngle = M_PI_2;
            break;
        case UIDeviceOrientationLandscapeRight:
            horizontalVideoAngle = 0;
            verticalVideoAngle = -M_PI_2;
            break;
        case UIDeviceOrientationPortraitUpsideDown:
            verticalVideoAngle = 0;
            horizontalVideoAngle = M_PI_2;
            break;
        case UIDeviceOrientationPortrait:
            verticalVideoAngle = 0;
            horizontalVideoAngle = -M_PI_2;
            break;
        default:
            return;
    

    CGFloat angle = [self isHorizontalVideo] ? horizontalVideoAngle : verticalVideoAngle;
    self.player.view.transform = CGAffineTransformMakeRotation( angle );

它擅长除纵向之外的所有方向。即使颠倒是好的 以下是截图

ios8 中的纵向有什么问题?

PS红色视图是mediaPlayer superview的背景

【问题讨论】:

【参考方案1】:

看起来 Apple 在 ios8 中更改了旋转,现在它只旋转内容并且不影响视图框架。所以我最终添加了额外的比例变换

【讨论】:

以上是关于当我在 ios 8 中旋转 MPMediaPlayer 时它变小了的主要内容,如果未能解决你的问题,请参考以下文章

将旋转到 iOS 8 上未调用的界面方向

当我在 iOS7 的 iPad 中将视图从纵向旋转到横向或反之亦然时,UITextfield shouldChangeCharactersInRange 没有调用

iOS - 在旋转时使用动态单元格高度重绘 TableViewCells

UINavigationController 不使用自动布局 iOS 8 更新大小

CGImageRef 到 UIImage 旋转我在模拟器或设备中的 iOS 4 上调试的照片

在 iOS 7 中显示 UIAlertView 时出现旋转问题