【发布时间】:2016-06-20 08:48:55
【问题描述】:
当我单击图片时,我会显示一个包含视频的弹出窗口。在该弹出窗口中,视频正在自动启动。问题是我没有与视频的交互性(播放、暂停等)。所以现在,我找到了使用 AVPlayerItemDidPlayToEndTimeNotification 循环它的方法,但我希望用户能够播放/暂停。 这是我的代码:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:player];
NSURL *url = [NSURL fileURLWithPath:mediaPath];
player = [[AVPlayer alloc] initWithURL: url];
controller = [[AVPlayerViewController alloc] init];
controller.player = player;
controller.delegate = self;
controller.showsPlaybackControls = YES;
UIImageView *popView = [[[[[[NSBundle mainBundle] loadNibNamed:mediaType owner:self options:nil] objectAtIndex:0] viewLoadedFromXib] subviews] objectAtIndex:0];
[controller.view setFrame:CGRectMake(0, 0, 850, 600)];
[popView addSubview:controller.view];
[player play];
我准确地说,当我点击视频时,下面会出现带有暂停视频的栏,但是当我点击按钮时,什么也没有发生。
第一次编辑:似乎有一个 AVTouchIgnoringView 已由 AVPlayerViewController 自动添加。似乎有一个与 UserInteraction 的链接......但我尝试将其设置为 YES 但没有成功。可能我不是为了好看。有什么想法吗?
第二次编辑:这是添加 AVTouchIgnoringView 的 setFrame。那么您知道如何在不自动添加 AVTouchIgnoringView 的情况下更改框架的大小吗?
【问题讨论】:
-
您有什么理由不只是将 AVPlayerViewController 呈现为模态视图?我不建议这样展示它。在负责所有这一切的视图控制器上使用 presentViewController:animated: 方法。在这里查看关于展示视图控制器的部分developer.apple.com/library/ios/documentation/UIKit/Reference/…
-
由于演示文稿,我想将其显示为弹出窗口。我有一张地图,我想在弹出窗口中显示一个视频,地图在后面。客户希望地图始终显示在后面(在 ipad 上)。我不明白为什么它不起作用,因为当我点击视频两次时,有一点缩放,所以这意味着我有手,但我不能用下面的栏暂停视频。很奇怪……
-
看看 UIPopoverPresentaionController,它将正确处理在 iPad 上将视图控制器呈现为弹出框,但在 iPhone 上全屏显示。网上资源很多,不用我在这里发帖。
-
我用漂亮的动画创建了一个漂亮的弹出框,所以我想使用它。感谢您的关注。如果有人有想法,我会等待。
-
我进步了。是 setFrame 产生了 AVTouchIgnoringView 和许多其他补充视图......我希望在几分钟内解决。
标签: ios objective-c video avplayer avplayerviewcontroller