AFr*_*ser 7 iphone ios avplayer ios5
我有一个AVPlayer,只要点击链接,我就会加载到新视图中.
-(void)createAndConfigurePlayerWithURL:(NSURL *)movieURL sourceType:(MPMovieSourceType)sourceType {
self.playerItem = [AVPlayerItem playerItemWithURL:movieURL];
customControlOverlay = [[AFDetailViewController alloc] initWithNibName:@"AFMovieScrubControl" bundle:nil];
backgroundWindow = [[UIApplication sharedApplication] keyWindow];
[customControlOverlay.view setFrame:backgroundWindow.frame];
[backgroundWindow addSubview:customControlOverlay.view];
playerLayer = [AVPlayerLayer playerLayerWithPlayer:[AVPlayer playerWithPlayerItem:playerItem]];
[playerLayer.player play];
playerLayer.frame = customControlOverlay.view.frame;
[customControlOverlay.view.layer addSublayer:playerLayer];
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将AVPlayer添加到我的应用程序并正常工作.我的customControlOverlay笔尖中有一个切换,应该删除视图并停止播放AVplayer.
-(IBAction)toggleQuality:(id)sender {
if (qualityToggle.selectedSegmentIndex == 0) {
NSLog(@"HD");
[playerLayer.player pause];
[self.view removeFromSuperview];
} else if (qualityToggle.selectedSegmentIndex == 1) {
NSLog(@"SD");
}
}
Run Code Online (Sandbox Code Playgroud)
视图已正确删除,但播放器仍在后台播放.经过测试后,玩家不会对toggleQuality方法中的任何代码做出响应,但是我在那里的字符串会被记录.
对我做错了什么的想法?
Isl*_* Q. 23
我知道这是一个老问题,但有一天它可能对某人有所帮助.
由于playerLayer被添加为a sublayer
而不是subview
它只需要从其超级层(而不是superview)中删除,并且播放器应设置为nil,例如:
/* not sure if the pause/remove order would matter */
[playerLayer.player pause];
// uncomment if the player not needed anymore
// playerLayer.player = nil;
[playerLayer removeFromSuperlayer];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12709 次 |
最近记录: |