问题描述
我必须使滑块的拇指具有“闪烁”效果,但只有拇指而不是整个滑块。我原本以为是使用一个计时器,例如每0.8秒降低和提高拇指的alpha值。
var alpha = 1.0
timerAlpha = Timer.scheduledTimer(withTimeInterval: 0.8,repeats: true)
{t in
self.slider.setThumbImage(thumb,for: UIControl.State(rawValue: UIControl.State.RawValue(alphaValue)))
self.slider.alpha = CGFloat(alpha)
if alpha == 1.0{
alpha = 0.5
}else{
alpha = 1.0
}
}
但是问题是这样,我使整个滑块闪烁,而不仅仅是拇指。 我如何只让拇指眨眼
解决方法
与其设置整个滑块的alpha
,不如使用thumb
图像的更“淡化”版本。
First,you need to get a faded version of thumb
:
let thumb = UIImage(...)! // create the thumb image as you did before
UIGraphicsBeginImageContextWithOptions(thumb.size,false,thumb.scale)
thumb.draw(at: .zero,blendMode: .normal,alpha: 0.5) // find an alpha value that you like
let fadedThumb = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
您可能希望将thumb
和fadedThumb
放在类级别,因此您不必在每次触发计时器时都重新创建它们。另外,添加isUsingFadedThumb
属性以跟踪当前状态:
var isUsingFadedThumb = false
然后:
Timer.scheduledTimer(withTimeInterval: 0.8,repeats: true)
{_ in
if self.isUsingFadedThumb {
self.slider.setThumbImage(thumb,for: .normal)
} else {
self.slider.setThumbImage(fadedThumb,for: .normal)
}
self.isUsingFadedThumb.toggle()
}
,
制作一个自定义滑块,在其中创建您自己的拇指图像视图,该视图遵循原始滑块的值。
这样,您可以完全控制拇指。