>> 日语

UIPiPView

这个库是一个能在 iOS 中实现画中画 (PiP) 功能的 UIView。

使用这个库,即使应用程序在后台,也可以使用 PiP 在屏幕上显示实时更新的信息(例如股票价格)。 我们期待看到使用这个库实现的更多创意。

要求

您需要运行 iOS15 或更高版本。这个库可以安装在 iOS12 或更高版本上,但如果没有 iOS15 或更高版本,则无法执行 PiP。

此外,作为开发注意事项,PiP 只能在**真机设备**上运行。请注意,PiP 无法在模拟器上运行。 另外,这个库依赖于 AVKitAVFoundation

如果想在您的应用程序中包含这个库,您需要在 Background Modes 中启用 Audio, AirPlay and Picture in Picture。 更多信息请参考 Apple 的页面

安装

UIPiPView 可以使用 CocoaPods 进行安装。 您可以通过将以下内容写入您的 Podfile 并运行 $ pod install 来安装它。

pod 'UIPiPView', :git => 'https://github.com/uakihir0/UIPiPView/', :branch => 'main'

或者可以使用 SwiftPM 进行安装。

示例

在开始之前,最好先检查您的环境是否准备好使用 UIPiPView。 您可以使用以下代码进行检查。

uiPipView.isUIPiPViewSupported()

开始

由于 UIPiPView 继承自 UIView,因此它可以像 UIView 一样使用。 要运行 PiP,请执行以下函数。 运行以下函数以运行 PiP。

uiPipView.startPictureInPicture(withRefreshInterval: (0.1 / 60.0))

上面的函数将以每秒 60 次的速度刷新 PiP 屏幕。 屏幕刷新是一个相对繁重的过程,因为 UIView 通过 UIImage 转换为 CMSampleBuffer。 因此,如果 UIView 很复杂,则更新处理可能无法跟上,或者可能会影响其他处理。 在这种情况下,更改上面代码中的参数以降低更新频率,或者使用以下代码运行 PiP。

uiPipView.startPictureInPictureWithManualCallRender()

上面的函数除了第一次屏幕刷新外,不会自动刷新屏幕。 如果要更新屏幕,请执行以下附加代码。

uiPipView.render()

运行上述函数将呈现线程完成时 UIPiPView 的状态。 通过使用此函数,我们可以在每次屏幕更新时执行渲染,并将渲染成本降至最低。

退出

要退出 PiP,请执行以下代码。

uiPipView.stopPictureInPicture()

作者

Akihiro Urushihara
邮箱: a.urusihara@gmail.com
Twitter: @uakihir0

许可证

UIPiPiPView 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。