gpt4 book ai didi

swift - AVPlayercontroller - 添加覆盖 subview

转载 作者:搜寻专家 更新时间:2023-10-31 08:32:21 24 4
gpt4 key购买 nike

取决于PlaybackControl Visibity 如何显示和隐藏contentOverlayView中添加的自定义 subview ?

我想像 Youtube TVOS 应用那样做。

我尝试使用 UIPressesEvent,但它没有给我准确的触摸事件。它给了我这些:

  override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
for item in presses {
switch item.type {
case .Menu:
self.customViews.alpha = 0
case .PlayPause:
self.player?.pause()
self.customViews.alpha = 0
default:
self.setVisibilityToPreviewView()
}
}
}

func setVisibilityToPreviewView () { //This wont work in all cases.
if self.previewView.alpha == 1 {
self.previewView.alpha = 0
} else {
self.previewView.alpha = 1
}
}

但是对于这个 Touch 事件,我只能显示和隐藏 subview 。当 playbackcontrolHidden 时,它应该被隐藏。

如果我获得了 PlayBackControl Visibility 值,我就不需要担心隐藏这些 subview 。

苹果正在使用 AVNowPlayingPlaybackControlsViewController。它不对开发人员开放。

所以我需要找到一些其他更好的方法来做到这一点。

请指导我如何去做。

最佳答案

您可以注册一个 tapGesture 识别器,然后将其 allowPressTypes 属性设置为 UIPressType.Select,如下所示

let tapRecognizer = UITapGestureRecognizer(target: self, action: "onSelect:")
tapRecognizer.allowedPressTypes = [NSNumber(integer: UIPressType.Select.rawValue)];
self.view.addGestureRecognizer(tapRecognizer)

并在您的操作按钮内显示或隐藏自定义叠加层。

示例:将此代码添加到 View Controller 中,然后点击(在远程触摸区域前面的空白区域选择),您将在控制台上看到一条消息。

override func viewDidLoad() {
super.viewDidLoad()
let tapGesture = UITapGestureRecognizer(target: self, action: "onSelect")
tapGesture.allowedPressTypes = [NSNumber(integer: UIPressType.Select.rawValue)]
self.view.addGestureRecognizer(tapGesture);
}
func onSelect(){
print("this is select gesture handler method");
}

更新:下面是创建 AVPlayerController 并将 tapGestureRecognizer 注册到 playervc.view 的代码。

override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
playContent()
}
func playContent(){
let urlString = "<contentURL>"
guard let url = NSURL(string: urlString) else{
return
}
let avPlayer = AVPlayer(URL: url)
let playerVC = AVPlayerViewController()
playerVC.player = avPlayer
self.playerObj = playerVC

let tapGesture = UITapGestureRecognizer(target: self, action: "onSelect")
tapGesture.allowedPressTypes = [NSNumber(integer: UIPressType.Select.rawValue)]
self.view.addGestureRecognizer(tapGesture);

playerVC.view.addGestureRecognizer(tapGesture)
self.presentViewController(playerVC, animated: true, completion: nil);

}

尝试一下,我认为它应该可以正常工作。

关于swift - AVPlayercontroller - 添加覆盖 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36667141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com