ios - AVPlayerViewController.ContentOverlayView 中的自定义按钮

标签 ios objective-c ios8

我需要向 AVPlayerViewController 添加一个自定义按钮,该按钮将出现在运行 iOS 8 的应用程序的全屏和非全屏中。

将按钮添加到 AVPlayerViewController.view 或包含 View 将适用于非全屏,但当播放器切换到全屏时,按钮不再可见。我发现,如果我向 AVPlayerViewController.ContentOverlayView 添加一个按钮,那么它会以全屏和非全屏显示,但 ContentOverlayView 似乎不会响应任何触摸,因此无法单击该按钮。有谁知道添加按钮的不同位置或使 ContentOverlayView 响应触摸的方法吗?

示例代码

AVPlayerViewController *playerView = [[AVPlayerViewController alloc] init];
playerView.player = [AVPlayer playerWithURL:movieURL];
CGRect viewInsetRect = CGRectInset ([self.view bounds],
                                    kMovieViewOffsetX,
                                    kMovieViewOffsetY );
/* Inset the movie frame in the parent view frame. */
[[playerView view] setFrame:viewInsetRect];
[self.view addSubview: [playerView view]];

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.backgroundColor = [UIColor yellowColor];
btn.frame = CGRectMake(50, 50, 200, 75);
[btn addTarget:self action:@selector(didSelectButton:) forControlEvents:UIControlEventTouchUpInside];
[btn setUserInteractionEnabled:YES];
[btn setEnabled:YES];

[playerView.contentOverlayView addSubview:btn];

最佳答案

我设法通过将以下内容添加到我在 IB 中的 AVPlayerViewController 来实现此功能:

  1. 里面有一个按钮的覆盖 View
  2. 添加约束以使按钮在叠加 View 中居中
  3. 为 View 创建了一个 IBOutlet(我称之为“覆盖”)
  4. 创建了一个从按钮到 AVPlayerViewController 的 Action ,它打印了一些东西,这样我们就可以看到点击按钮是有效的
  5. 将叠加 View 拖出 View 层次结构并拖到 View Controller 的顶栏上(在 View Controller 的顶栏中显示为 View 图标以及退出图标等)

然后在 AVPlayerViewController 的代码中:

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.addSubview(self.overlay)
    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()

        self.overlay.frame = self.view.bounds
    }

    @IBAction func playBtnTapped(sender: AnyObject) {
        println("PlayBtnTapped")
    }

按钮现在在全屏/正常查看中居中并且按钮有效

关于ios - AVPlayerViewController.ContentOverlayView 中的自定义按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26788820/

相关文章:

ios - 如何检测 ALAssetLibrary 中的最后一项是照片还是视频?

ios - Apptentive Message 单元格颜色变化

ios - "Cannot connect to iTunes Store"

ios - 强制应用程序在 iOS 8 中使用 Apple 键盘

ios - 206 NSSessionDownloadTask 上的内容范围响应

ios - 应用程序在加载模态窗口时崩溃

ios - Swift 从 JSON 获取数组值的结果

iphone - NSFileWrapper 基础知识 : How to extract components

ios - S3TransferManager-示例 | IAM getList 政策问题

ios - UITableView numberOfSectionsInTableView 和 numberOfRowsInSection 在初始加载时调用了三次