UISlider alpha 停留在 0.5
UISlider alpha stuck at 0.5
我在一个单元格内有一个 UISlider,我将它的 alpha 设置为 1,但是当显示滑块时,alpha 卡在 0.5。我该如何更改?
lazy var videoSlider: UISlider = {
let slider = UISlider()
slider.translatesAutoresizingMaskIntoConstraints = false
slider.minimumTrackTintColor = UIColor.orange
slider.maximumTrackTintColor = UIColor.white
slider.setThumbImage(UIImage(named: "sliderThumb"), for: .normal)
slider.isEnabled = false
slider.alpha = 1.0 // set at 1 here and never changed
return slider
}()
我也试过:
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.black
videoSlider.alpha = 0
UIView.animate(withDuration: 0.33, animations: {
self.videoSlider.alpha = 1
})
}
导致问题的是周期时间观察器。随着时间的推移,由于某种原因,轨道移动,滑块颜色被重置为 0.5
。为了修复它,我更新了主队列上的 alpha。
timeObserverToken = player?.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main, using: { [weak self](progressTime) in
let seconds: Float64 = CMTimeGetSeconds(progressTime)
if let duration = self?.player?.currentItem?.duration {
let durationSeconds: Float64 = CMTimeGetSeconds(duration)
// even though this is already happening on the main queue it didn't work without it
DispatchQueue.main.async {
self?.videoSlider.alpha = 1
}
self.videoSlider.value = Float(seconds / durationSeconds)
}
})
我在一个单元格内有一个 UISlider,我将它的 alpha 设置为 1,但是当显示滑块时,alpha 卡在 0.5。我该如何更改?
lazy var videoSlider: UISlider = {
let slider = UISlider()
slider.translatesAutoresizingMaskIntoConstraints = false
slider.minimumTrackTintColor = UIColor.orange
slider.maximumTrackTintColor = UIColor.white
slider.setThumbImage(UIImage(named: "sliderThumb"), for: .normal)
slider.isEnabled = false
slider.alpha = 1.0 // set at 1 here and never changed
return slider
}()
我也试过:
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.black
videoSlider.alpha = 0
UIView.animate(withDuration: 0.33, animations: {
self.videoSlider.alpha = 1
})
}
导致问题的是周期时间观察器。随着时间的推移,由于某种原因,轨道移动,滑块颜色被重置为 0.5
。为了修复它,我更新了主队列上的 alpha。
timeObserverToken = player?.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main, using: { [weak self](progressTime) in
let seconds: Float64 = CMTimeGetSeconds(progressTime)
if let duration = self?.player?.currentItem?.duration {
let durationSeconds: Float64 = CMTimeGetSeconds(duration)
// even though this is already happening on the main queue it didn't work without it
DispatchQueue.main.async {
self?.videoSlider.alpha = 1
}
self.videoSlider.value = Float(seconds / durationSeconds)
}
})