2015-09-24 37 views
2

我正在使用youtube-ios-player-helper庫在我的應用中播放youtube視頻。 在您按下播放按鈕和視頻開始播放全屏幕之間有一小段時間延遲。所以我想在這段時間之間隱藏控件。如何在YTPlayerView中隱藏控件?

我該怎麼做?

在這裏我有什麼,現在在斯威夫特:

protocol YouTubePlayerViewDelegate { 
    func playVideo(id: String) 
} 

class DeferredYouTubePlayerView : UIView, EventActionable, YTPlayerViewDelegate { 
    var youtubeId: String! 
    var origin: String! 
    var playerWidth: Int! 
    var imageView: ImageLoadingBackgroundView? 
    var playImageView: UIImageView? 
    var player: YTPlayerView? 
    var backDropView: UIView? 

    var eventCategory:String! 
    var touchCancelled = false 

    let playerVars:[NSObject:AnyObject] = [ 
    "playsinline":0, 
    "autoplay" : 0, 
    "modestbranding" : 1, 
    "origin":MetroManager.sharedInstance.selectedMetro!.baseURL 
    ] 

    var delegate : YouTubePlayerViewDelegate? 

    func loadVideo() { 
    backgroundColor = UIColor.blackColor() 

    if imageView == nil { 
     imageView = ImageLoadingBackgroundView() 
     imageView!.setTranslatesAutoresizingMaskIntoConstraints(false) 
     imageView?.constrain(.FillParent(self)) 
    } 

    if playImageView == nil { 
     playImageView = UIImageView(image: UIImage(named: "play_button")) 
     playImageView?.constrain(.Height(42)) 
     playImageView?.constrain(.Height(42)) 
     playImageView?.constrain(.CenterInParent(imageView!)) 
    } 

    if let url = buildImageURL() { 
     imageView?.alpha = 1 
     imageView!.imageURL = url 
    } else { 
     imageView?.alpha = 0 
    } 

    if backDropView == nil { 
     backDropView = UIView() 
     backDropView?.backgroundColor = UIColor.blackColor() 
     backDropView?.constrain(.CenterInParent(self)) 
     backDropView?.constrain(.FillParent(self)) 
     addSubview(backDropView!) 
    } 

    if player == nil { 
     player = YTPlayerView() 
     player?.constrain(.CenterInParent(self)) 
     player?.constrain(.FillParent(self)) 
     player?.delegate = self 
     player!.loadWithVideoId(youtubeId, playerVars: playerVars) 
     addSubview(player!) 

     bringSubviewToFront(imageView!) 
    } 
    } 

    func buildImageURL() -> NSURL? { 
    return NSURL(string: "http://img.youtube.com/vi/\(youtubeId)/0.jpg") 
    } 

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
    if let playImageView = playImageView { 
     playImageView.image = UIImage(named: "play_button_highlighted") 
    } 
    } 

    //If the user moves their finger, they probably want to slide to the next view, cancel touches 
    override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) { 
    if let playImageView = playImageView { 
     playImageView.image = UIImage(named: "play_button") 
    } 

    touchCancelled = true 
    } 

    func playerView(playerView: YTPlayerView!, didChangeToState state: YTPlayerState) { 
    switch state { 
    case .Buffering: 
     fallthrough 
    case .Playing: 
     hidePoster() 
    case .Ended: 
     fallthrough 
    case .Paused: 
     showPoster() 
    default: 
    () 
    } 
    } 

    func hidePoster() { 
    UIView.animateWithDuration(DEFAULT_ANIMATION_TIME, animations: {() -> Void in 
     self.imageView?.alpha = 0 
    }) 
    } 

    func showPoster() { 
    UIView.animateWithDuration(DEFAULT_ANIMATION_TIME, animations: {() -> Void in 
     self.imageView?.alpha = 1 
    }) 
    } 

    override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) { 
    println("ended") 

    if let playImageView = playImageView { 
     playImageView.image = UIImage(named: "play_button") 
    } 

    if(!touchCancelled){ 
     loggerA(category: eventCategory, action: "Cover Scroll", label: "Video Play") 
//  delegate?.playVideo(youtubeId) 
     hidePoster() 
     player!.playVideo() 

    } 

    touchCancelled = false 
    } 

    deinit{ 
    //delegate = nil 
    } 
} 
+0

哦,我剛纔已經找到了解決辦法: 我需要設置「控制」到(0)playerVars假值; 所以在我的情況下它看起來就像這樣: 讓playerVars:[NSObject的:AnyObject] = [ 「控制」:0, ... ] 它只是工作! –

回答

3

哦,我剛纔已經找到了解決辦法:我需要設置「控制」到(0)playerVars假值;所以在我的上下文中,它看起來像這樣:讓playerVars:[NSObject:AnyObject] = [「controls」:0,...]

它只是工作!