IOS视屏播放过程中横竖屏切换

本文介绍了一个iOS应用中使用系统原生播放器实现横竖屏切换的方法。通过在AppDelegate中设置允许旋转的属性,并在XRDCustomerViewController中进行相应的处理,实现了播放器在不同屏幕方向间的平滑过渡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做视屏播放,我用的系统原生的播放器,但是横竖屏切换的时候遇到问题,这里是我的解决办法,记在此处,日后查找也方便。
首先在AppDelegate中如下写:

//appdelegate.h加 
@property (nonatomic, assign) BOOL allowRotation;



//appdelegate.m加 
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

{

    if (self.allowRotation) {

        return UIInterfaceOrientationMaskPortrait |UIInterfaceOrientationMaskLandscapeLeft |UIInterfaceOrientationMaskLandscapeRight;

    }

    return UIInterfaceOrientationMaskPortrait;

}


- (NSUInteger)supportedInterfaceOrientations

{

    return UIInterfaceOrientationMaskPortrait |UIInterfaceOrientationMaskLandscapeLeft |UIInterfaceOrientationMaskLandscapeRight;

}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation

{

    return UIInterfaceOrientationPortrait;


}

其次,跳转方法

- (void)TapMovieTableCellDelegate:(NSString *)urlString
{
    NSURL *videoUrl = [NSURL URLWithString:urlString];

    XRDCustomerViewController *xrd = [[XRDCustomerViewController alloc] initWithContentURL:videoUrl];
    // 缓冲播放
    [xrd.moviePlayer prepareToPlay];
    // 播放
    [xrd.moviePlayer play];
    // 跳转方式
    [xrd setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
    // 弹出播放器
    [self presentMoviePlayerViewControllerAnimated:xrd];

}

最后XRDCustomerViewController.h文件:

#import <MediaPlayer/MediaPlayer.h>

@interface XRDCustomerViewController : MPMoviePlayerViewController

@end

XRDCustomerViewController.m文件:

#import "XRDCustomerViewController.h"

@implementation XRDCustomerViewController

- (void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];
}

-(void)viewDidAppear:(BOOL)animated{

    [super viewDidAppear:animated];

    AppDelegate  *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    delegate.allowRotation = YES;
}

- (void)viewWillDisappear:(BOOL)animated{

    AppDelegate  *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    delegate.allowRotation = NO;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    // 该类继承于MPMoviePlayerViewController
}
@end

如果仍然没有弄成功,请QQ联系:714700382

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值