MPMoviePlayerViewController 不自动旋转

objective

1个回答

写回答

sweety2013

2025-06-22 12:55

+ 关注

IOS
IOS

MPMoviePlayerViewController 不自动旋转

在开发IOS应用程序时,经常会使用到视频播放功能。而在视频播放过程中,有时我们希望禁止屏幕自动旋转。在IOS中,可以使用MPMoviePlayerViewController来实现视频播放功能,并且可以通过设置来禁止自动旋转。

MPMoviePlayerViewController是IOS中提供的一个控制器,用于展示和播放视频。它继承自UIViewController,可以方便地集成到应用程序中。默认情况下,MPMoviePlayerViewController会根据设备的旋转方向来自动旋转屏幕。但是有时我们希望禁止屏幕自动旋转,以提供更好的用户体验。

为了禁止MPMoviePlayerViewController自动旋转,我们需要做一些设置。首先,我们需要在AppDelegate中的application:didFinishLaunchingWithOptions:方法中,添加下面的代码:

Swift

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.

// 禁止屏幕自动旋转

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(deviceOrientationDidChange:)

name:UIDeviceOrientationDidChangeNotification

object:nil];

return YES;

}

- (void)deviceOrientationDidChange:(NSNotification *)notification {

// 获取当前设备的旋转方向

UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;

// 判断是否为横屏方向

if (UIDeviceOrientationIsLandscape(deviceOrientation)) {

// 竖屏方向时,强制设置为竖屏

[[UIDevice currentDevice] setValue:@(UIInterfaceOrientationPortrAIt) forKey:@"orientation"];

}

}

上面的代码中,我们通过添加NSNotificationCenter来监听设备旋转的通知。当设备旋转时,我们通过判断旋转方向来决定是否禁止旋转。如果设备旋转为横屏方向,我们将强制设置为竖屏方向,实现禁止旋转的效果。

案例代码

下面是一个简单的示例代码,演示如何使用MPMoviePlayerViewController来播放视频,并禁止屏幕自动旋转:

Swift

import UIKit

import MediaPlayer

class ViewController: UIViewController {

var moviePlayer: MPMoviePlayerViewController!

override func viewDidLoad() {

super.viewDidLoad()

// 创建视频URL

let vIDEOURL = URL(string: "https://example.com/vIDEO.mp4")

// 创建MPMoviePlayerViewController,并设置视频URL

moviePlayer = MPMoviePlayerViewController(contentURL: vIDEOURL)

// 添加MPMoviePlayerViewController的视图到当前视图

self.addChildViewController(moviePlayer)

self.view.addSubview(moviePlayer.view)

moviePlayer.view.frame = self.view.bounds

moviePlayer.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]

// 播放视频

moviePlayer.moviePlayer.play()

}

override func viewWillDisappear(_ animated: Bool) {

super.viewWillDisappear(animated)

// 移除MPMoviePlayerViewController的视图

moviePlayer.view.removeFromSuperview()

moviePlayer.moviePlayer.stop()

}

}

在上面的代码中,我们首先创建了一个MPMoviePlayerViewController,并设置了视频的URL。然后,将MPMoviePlayerViewController的视图添加到当前视图中,并播放视频。在视图消失时,需要将MPMoviePlayerViewController的视图移除,并停止视频播放。

通过以上步骤,我们可以实现使用MPMoviePlayerViewController播放视频,并禁止屏幕自动旋转的功能。这样可以提供更好的用户体验,确保视频播放时不会因为设备旋转而影响用户观看体验。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号