我是编码的初学者。
我制作的应用程序在启动时播放480x640 mp4。决定更换一个更大的视频,以便在更大的iPhone上看起来更好。导入新的640x 1136 mp4,替换了代码中的名称,改变了setFrame的大小:CGRectMake。在启动时它以黑色播放 - 好像moviePlayer处于错误的位置。
有趣的是,我在程序后面有完全相同的代码(“按一个按钮来重放打开的视频”)并且工作正常。
我的初始moviePlayer的大小或位置有什么问题?
只是想通了如果我将观众的大小从(0,0,640,1136)缩小到(0,0,320,568),它就会很好。再次,在程序的后面,我有观察者(0,0,640,1136)。为什么相同的mp4在两种不同的观看者尺寸下播放?
由于
- (void)viewDidLoad
{
//
// backGround image
//
UIImage *backGround1 = [UIImage imageNamed:@"TableWButtons6401136.png"];
[backGround setImage:backGround1];
//
// This code plays the video at start up
//
NSString *videoFile = [[NSBundle mainBundle] pathForResource:@"WFBD4" ofType:@"mp4"];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:videoFile]];
[moviePlayer.view setFrame:CGRectMake(0, 0, 640, 1136)];
[self.view addSubview:moviePlayer.view];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
moviePlayer.fullscreen = YES;
moviePlayer.allowsAirPlay = YES;
moviePlayer.controlStyle = MPMovieControlStyleNone;
[moviePlayer play] ;
NSLog(@"Playback Finished");
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
答案 0 :(得分:0)
传递给setFrame
的坐标位于 Points 中,而不是设备像素。这些点是逻辑像素;相同的尺寸和位置适用于Retina和非Retina设备。 iPhone 5+具有320x568点,但设备像素为640x1136。
因此,使用320x568调用setFrame
是正确的做法。虽然你没有显示重播按钮的代码,但我猜想,在那个例子中,播放器视图正在被一些自动布局逻辑调整大小。