Skip to content

hipwelljo/PIPKit

 
 

Repository files navigation

PIPKit

Swift CocoaPods Carthage compatible

  • Picture in Picture for iOS (iPhone, iPad)

pip_default pip_transition

Requirements

  • iOS 8.0+
  • Swift 5.0
  • Xcode 11

Installation

CocoaPods

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

pod 'PIPKit'

Carthage

For iOS 8+ projects with Carthage

github "Kofktu/PIPKit"

Usage

PIPUsable

public protocol PIPUsable {
    var initialState: PIPState { get }
    var initialPosition: PIPPosition { get }
    var pipEdgeInsets: UIEdgeInsets { get }
    var pipSize: CGSize { get }
    var pipShadow: PIPShadow? { get }
    var pipCorner: PIPCorner? { get }
    func didChangedState(_ state: PIPState)
    func didChangePosition(_ position: PIPPosition)
}

PIPKit

class PIPKit {
    var isPIP: Bool
    var isActive: Bool
    var visibleViewController: PIPKitViewController?

    class func show(with viewController: PIPKitViewController, completion: (() -> Void)? = nil)
    class func dismiss(animated: Bool, completion: (() -> Void)? = nil)
}

PIPKitViewController (UIViewController & PIPUsable)

func setNeedUpdatePIPSize()
func startPIPMode()
func stopPIPMode()

At a Glance

Show & Dismiss

class PIPViewController: UIViewController, PIPUsable {}

let viewController = PIPViewController()
PIPKit.show(with: viewController)
PIPKit.dismiss(animated: true)

Update PIPSize

pip_resize

class PIPViewController: UIViewController, PIPUsable {
    func updatePIPSize() {
        pipSize = CGSize()
        setNeedUpdatePIPSize()
    }
}

FullScreen <-> PIP Mode

class PIPViewController: UIViewController, PIPUsable {
    func fullScreenAndPIPMode() {
        if PIPKit.isPIP {
            stopPIPMode()    
        } else {
            startPIPMode()
        }
    }

    func didChangedState(_ state: PIPState) {}
}

Authors

Taeun Kim (kofktu), [email protected]

License

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

About

Picture in Picture for iOS

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 92.5%
  • Ruby 7.5%