6.10 AVPlayerLayer 图层
AVPlayerLayer
最后一个图层类型是AVPlayerLayer
。尽管它不是Core Animation框架的一部分(AV前缀看上去像),AVPlayerLayer
是有别的框架(AVFoundation)提供的,它和Core Animation紧密地结合在一起,提供了一个CALayer
子类来显示自定义的内容类型。
AVPlayerLayer
是用来在iOS上播放视频的。他是高级接口例如MPMoivePlayer
的底层实现,提供了显示视频的底层控制。AVPlayerLayer
的使用相当简单:你可以用+playerLayerWithPlayer:
方法创建一个已经绑定了视频播放器的图层,或者你可以先创建一个图层,然后用player
属性绑定一个AVPlayer
实例。
在我们开始之前,我们需要添加AVFoundation到我们的项目中。然后,清单6.15创建了一个简单的电影播放器,图6.16是代码运行结果。
清单6.15 用AVPlayerLayer
播放视频
#import "ViewController.h"
#import
#import
@interface ViewController ()
@property (nonatomic, weak) IBOutlet UIView *containerView; @end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//get video URL
NSURL *URL = [[NSBundle mainBundle] URLForResource:@"Ship" withExtension:@"mp4"];
//create player and player layer
AVPlayer *player = [AVPlayer playerWithURL:URL];
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
//set player layer frame and attach it to our view
playerLayer.frame = self.containerView.bounds;
[self.containerView.layer addSublayer:playerLayer];
//play the video
[player play];
}
@end
图6.17 3D视角下的边框和圆角AVPlayerLayer