在 UISlider 中为拇指制作闪烁效果 - Swift
Make blink effect to the thumb in UISlider - Swift
我必须让我的滑块的拇指具有“闪烁”效果,但只有拇指而不是整个滑块。我的想法是使用一个计时器,例如每 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
置于 class 级别,这样您就不会在每次触发计时器时都重新创建它们。另外,添加一个 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()
}
我必须让我的滑块的拇指具有“闪烁”效果,但只有拇指而不是整个滑块。我的想法是使用一个计时器,例如每 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
置于 class 级别,这样您就不会在每次触发计时器时都重新创建它们。另外,添加一个 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()
}