gpt4 book ai didi

iphone - 如何在 iOS 5 上以横向模式显示视频?

转载 作者:行者123 更新时间:2023-12-03 20:41:40 28 4
gpt4 key购买 nike

我遇到了一个非常奇怪的问题。我希望视频以横向模式显示,但我似乎无法使其工作。即使我不能让它总是显示风景,至少我希望它显示正常,但我也做不到!这是我的代码:

#import "SplashViewController.h"
#import "MainViewController.h"
#import "MediaPlayer/MediaPlayer.h"

@interface SplashViewController ()
@property (nonatomic, retain) NSTimer *timer;
@end

@implementation SplashViewController
@synthesize timer = _timer;

-(BOOL)shouldAutorotateToInterfaceOrientation:UIInterfaceOrientation)toInterfaceOrientation
{
return YES;
}

- (id)init
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self = [self initWithNibName:@"SplashViewController_iPhone" bundle:nil];
} else {
self = [self initWithNibName:@"SplashViewController_iPad" bundle:nil];
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
[self.navigationController setNavigationBarHidden:YES];
}

- (void)viewDidAppear:(BOOL)animated
{
[super viewWillAppear:animated];

NSString *url = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"intro.mp4"];

playerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:url]];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(movieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:[playerViewController moviePlayer]];

[playerViewController shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationLandscapeRight];

[self.view addSubview:playerViewController.view];

//play movie
MPMoviePlayerController *player = [playerViewController moviePlayer];
player.scalingMode = MPMovieScalingModeAspectFill;
[player play];
}

- (void) movieFinishedCallback:(NSNotification*) aNotification {
MPMoviePlayerController *player = [aNotification object];
[[NSNotificationCenter defaultCenter]
removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:player];
[player stop];

[player.view removeFromSuperview];

[self loadMainView];
}

- (void)loadMainView
{
MainViewController *mainVC = [[MainViewController alloc] init];
[self.navigationController pushViewController:mainVC animated:YES];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}

@end

奇怪的事情来了......

如果我在 iPad 上以横向模式启动应用程序,视频将显示如下(请注意,顶部的栏比宽度短!:O)

/image/kdPUP.png

如果我然后将 iPad 旋转为纵向,它看起来像这样:

/image/iWK68.png

但是,如果我在 iPad 上以纵向模式启动应用程序,视频将显示如下:

/image/9NXRY.png

如果我将 iPad 旋转为横向,它看起来像这样:

/image/pW6OK.png

这太棒了!最终的图像就是我希望视频始终呈现的样子。有什么想法我可能做错了吗???

谢谢!

编辑 1

好的,通过@Tark 的回答,我能够解决播放器显示问题。现在,无论我如何启动应用程序,它都显示正常。感谢那!!现在缺少的是始终横向模式。

我尝试了以下方法:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (interfaceOrientation==UIInterfaceOrientationLandscapeRight)
return YES;
return NO;
}

我也尝试插入行 初始界面方向 = 横向(右侧主页按钮)在Info.plist中

我得到的是,如果我在横向模式下启动应用程序,如果我将 iPad 旋转到纵向,它会保持横向模式。伟大的!但如果我以纵向模式启动应用程序,视频将以纵向模式显示。一旦我将其旋转为横向,我就无法将其旋转回纵向,这很好,但我不希望它以纵向开始!

编辑2

好吧,现在这更奇怪了。如果我在 iPhone 上尝试一下,效果会很好。无论我以横向还是纵向启动应用程序,视频始终以横向显示。

但是如果我在 iPad 上尝试,则会出现编辑 1 中的问题...:S

有什么想法吗?

谢谢!

最佳答案

当您将 MPMoviePlayerViewController 添加为 subview 时,您是否尝试过设置其 View 的框架?

...
playerViewController.view.frame = self.view.bounds;
[self.view addSubview:playerViewController.view];
...

要使应用程序仅在横向模式下运行,您应该确保仅在应用程序 plist 中选择了所需的方向。在 Xcode 4 中,目标设置中有一个方便的“支持的界面方向”部分,请确保您仅在此处选择横向。如果问题仍然存在,则必须确保在 View 堆栈中的所有可见 Controller 上禁用自动旋转。

enter image description here

关于iphone - 如何在 iOS 5 上以横向模式显示视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13943225/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com