gut*_*rgn 9 iphone uiactivityindicatorview ios avplayer avplayerviewcontroller
我正在使用AVPlayerViewController自定义播放控件实现iOS视频播放器(即showsPlaybackControls属性定义为NO).这似乎在大多数情况下都能正常工作,我看到的唯一问题是我想在播放器中使用自定义活动指示器,但似乎AVPlayerViewController在某些时候缓冲视频时显示默认活动指示器.
有没有办法从中删除此默认活动指示器视图AVPlayerViewController?
图像显示我正在描述的内容,底部的控件是自定义的并覆盖在播放器顶部,但活动指示器不是.
我做了一个扩展,AVPlayerViewController公开了内部活动指示器。在这里,您将看到 Swift 3 的所有魅力:
import AVKit
extension AVPlayerViewController {
/// Activity indicator contained nested inside the controller's view.
var activityIndicator: UIActivityIndicatorView? {
// Indicator is extracted by traversing the subviews of the controller's `view` property.
// `AVPlayerViewController`'s view contains a private `AVLoadingIndicatorView` that
// holds an instance of `UIActivityIndicatorView` as a subview.
let nestedSubviews: [UIView] = view.subviews
.flatMap { [$0] + $0.subviews }
.flatMap { [$0] + $0.subviews }
.flatMap { [$0] + $0.subviews }
return nestedSubviews.filter { $0 is UIActivityIndicatorView }.first as? UIActivityIndicatorView
}
/// Indicating whether the built-in activity indicator is hidden or not.
var isActivityIndicatorHidden: Bool {
set {
activityIndicator?.alpha = newValue ? 0 : 1
}
get {
return activityIndicator?.alpha == 0
}
}
}
Run Code Online (Sandbox Code Playgroud)
有了这个,您可以轻松地设计样式UIActivityIndicatorView或将其全部隐藏在一起,例如:
playerViewController.isActivityIndicatorHidden = true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1551 次 |
| 最近记录: |