【问题标题】:Make blink effect to the thumb in UISlider - Swift在 UISlider 中为拇指制作闪烁效果 - Swift
【发布时间】:2021-02-17 23:15:11
【问题描述】:

我必须使滑块的拇指具有“闪烁”效果,但只有拇指而不是整个滑块。我的想法是使用一个计时器,例如每 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
            }
        }

但问题是这样我会闪烁整个滑块,而不仅仅是拇指。 如何只让拇指闪烁

【问题讨论】:

  • 使用自定义缩略图

标签: ios swift uislider


【解决方案1】:

制作一个自定义滑块,您可以在其中创建自己的拇指图像视图,以遵循原始滑块的值。

这样您就可以完全控制拇指。

【讨论】:

    【解决方案2】:

    与其设置整个滑块的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()
    

    您可能希望将thumbfadedThumb 放在类级别,这样您就不会在每次触发计时器时都重新创建它们。另外,添加一个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()
        }
    

    【讨论】:

    • 完美!非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    相关资源
    最近更新 更多