UISlider的alpha卡在0.5处

问题描述 投票:0回答:1

我在一个单元格内有一个UISlider,我把它的alpha设置为1,但是当滑块显示时,alpha卡在了0.5。我该如何改变它?

enter image description here

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
    })
}
ios swift alpha uislider
1个回答
0
投票

是周期性的时间观察器导致了这个问题。随着时间的推移和轨道的移动,由于某种原因,滑块的颜色被重置成了 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)
    }
})
© www.soinside.com 2019 - 2024. All rights reserved.