Code Monkey home page Code Monkey logo

mmplayerview's Introduction

MMPlayerView

CI Status Version License Platform

Demo

List / Shrink / Transition / Landscape

list shrink transition landscape

MMPlayerLayer

    ex. use when change player view frequently like tableView / collectionView
    import MMPlayerView
    mmPlayerLayer.playView = cell.imgView
    mmPlayerLayer.set(url: cell.data?.play_Url, state: { (status) in 
    })

MMPlayerView

let url = URL.init(string: "http://www.html5videoplayer.net/videos/toystory.mp4")!
playView.replace(cover: CoverA.instantiateFromNib())
playView.set(url: url, thumbImage: #imageLiteral(resourceName: "seven")) { (status) in
    switch status {
       case ....
    }
}

Transition

##PresentedViewController
1. Set transition config
    required init?(coder aDecoder: NSCoder) {
       super.init(coder: aDecoder)
        self.mmPlayerTransition.present.pass { (config) in
            // setting
            .....
        }
    }
2. Set MMPLayerToProtocol on PresentedViewController
3. Set MMPlayerPrsentFromProtocol on PresentingViewController

Shrink

ex. only set present transition can use shrink video
(self.presentationController as? PassViewPresentatinController)?.shrinkView()

Landscape

1.Set AppDelegate
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) ->        
    UIInterfaceOrientationMask {
    if window == MMLandscapeWindow.shared {
        return .allButUpsideDown
    } else {
        return ....
    }
 }
2. Observer orientation when landscape call function
    MMLandscapeWindow.shared.makeKey(root: full, playLayer: self.mmPlayerLayer, completed: {
    })

Cover View

landscape

## add cover item view on player
play.replace(cover: CoverA.instantiateFromNib())

Progress

// Custom your progress view and it will add on player center
// view need to implement ProgressProtocol, and add progress in this view, when start/stop control what need to do
.custom(view: <#T##ProgressProtocol#>)
 public protocol ProgressProtocol {
     func start()
     func stop()
 }

Layer Protocol

// detect if touch in videoRect
// if touch out of videoRect will not trigger show/hide cover view event
public protocol MMPlayerLayerProtocol: class {
 func touchInVideoRect(contain: Bool) // 
}

Parameter

     public enum CoverViewFitType {
        case fitToPlayerView // coverview fit with playerview
        case fitToVideoRect // fit with VideoRect
     }
     
     public enum ProgressType {
        case `default`
        case none
        case custom(view: ProgressProtocol)
    }
            
    public var progressType: MMPlayerView.ProgressType  
    public var coverFitType: MMPlayerView.CoverViewFitType
    public var changeViewClearPlayer: Bool // rest url when change view 
    public var hideCoverDuration: TimeInterval // auto hide cover view after duration
    lazy public var thumbImageView: UIImageView 
    public var playView: UIView?
    public var coverView: UIView? { get }
    public var autoLoadUrl: Bool // when call set(url:,state) to auto fecth video
    public var autoPlay: Bool // when MMPlayerView.PlayViewPlayStatus == ready auto play video
    public var currentPlayStatus: MMPlayerView.PlayViewPlayStatus 
    public var cacheInMemory: Bool // its AVPlayerItem cache in memory
    public var asset: AVURLAsset?
    public var playUrl: URL?
    public func showCover(isShow: Bool)
    public func setCoverView(enable: Bool)
    public func delayHideCover()
    public func replace<T: UIView>(cover:T) where T: CoverViewProtocol
    public func set(url: URL?, state: ((MMPlayerView.PlayViewPlayStatus) -> Swift.Void)?)
    public func startLoading() // if autoLoadUrl = false your need call startLoading() yourself
    public weak var mmDelegate: MMPlayerLayerProtocol?

Requirements

iOS 8.0+
Xcode 8.0+
Swift 3.0+

Installation

MMPlayerView is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "MMPlayerView"

Author

[email protected]

License

MMPlayerView is available under the MIT license. See the LICENSE file for more info.

mmplayerview's People

Contributors

millmany avatar

Watchers

James Cloos avatar Alvin Cris Uy avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.