Need help with PIPKit?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Kofktu
155 Stars 19 Forks MIT License 69 Commits 9 Opened issues

Description

Picture in Picture for iOS

Services available

!
?

Need anything else?

Contributors list

# 148,319
Swift
cocoapo...
photobr...
swift5
27 commits
# 78,667
Swift
Xcode
datasou...
watchos
4 commits

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.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.