Skip to content
/ PiP Public

The best way to customize picture-in-picture for iOS.

Notifications You must be signed in to change notification settings

CaiWanFeng/PiP

Repository files navigation

Features:

1. You can add any custom view on the pip window.

func pictureInPictureControllerWillStartPictureInPicture(_ pictureInPictureController: AVPictureInPictureController) {
    // note this is first window
    if let window = UIApplication.shared.windows.first {
        window.addSubview(customView)
        // use autoLayout
        customView.snp.makeConstraints { (make) -> Void in
            make.edges.equalToSuperview()
        }
    }
}

2. You can hide speed button, backward button, play button and progress bar on the pip window.

https://stackoverflow.com/questions/67528832/how-to-hide-system-controls-on-avpictureinpicturecontrollers-float-window#67528832

3. You can modify the pip window’s shape dynamically with code.

The shape of the pip window depends on the shape of video. So just change current video to a video with a different shape.

Sample code like:

NSURL *url = [[NSBundle mainBundle] URLForResource:videoName withExtension:@"MP4"];
AVAsset *asset = [AVAsset assetWithURL:url];
AVPlayerItem * item = [[AVPlayerItem alloc] initWithAsset:asset];
[self.pipController.playerLayer.player replaceCurrentItemWithPlayerItem:item];

Demos:

1. float_teleprompter

float_teleprompter

2. float_timer

float_timer

Contact:

For more technical exchange you can scan to add my WeChat:

contact