0

我在 iphone 5 中播放视频时遇到问题。视频在 iphone 中完全全屏播放,但问题出在视网膜显示器上。它不适合全屏并在右侧留下白色的thik bar。

我尝试了以下代码,但它在视网膜显示中不起作用

    outputURL = [NSURL fileURLWithPath:filePath];
    av = [[AVPlayer alloc] initWithURL:outputURL];
    AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:av];
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
    {
        [layer setFrame:CGRectMake(0, -20, 1024, 670)];
    }
    else
    {
        [layer setFrame:CGRectMake(0, -10, 480, 287)];
    }


    if([layer.videoGravity isEqualToString:AVLayerVideoGravityResizeAspect])
    {
        layer.videoGravity = AVLayerVideoGravityResizeAspectFill;
    }
    else
    {
        layer.videoGravity = AVLayerVideoGravityResizeAspect;
    }
    [self.view.layer addSublayer:layer];
    av.actionAtItemEnd = AVPlayerActionAtItemEndNone;
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayBackDidFinish:) 
                                                 name:AVPlayerItemDidPlayToEndTimeNotification
                                               object:[av currentItem]];

请帮我解决一些问题。谢谢

4

1 回答 1

1

在代码的第 6 行中,您将 AVPlayerLayer 的宽度设置为 480 像素,但 iPhone 5 屏幕的宽度为 568 像素(横向时)。所以这行不通。

这应该可以解决您的问题:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{
    [layer setFrame:CGRectMake(0, -20, self.view.frame.width, 670)];
}
else
{
    [layer setFrame:CGRectMake(0, -10, self.view.frame.width, 287)];
}

但我想知道为什么你需要 -20/-10 垂直偏移以及这些帧高度来自哪里,也许不是 if/else 块,这也可以为你工作:

[layer setFrame:self.view.bounds];
于 2013-02-14T13:26:29.257 回答