【问题标题】:Change UISlider track color for multiple colors in swift?快速更改 UISlider 轨道颜色为多种颜色?
【发布时间】:2016-06-17 19:02:45
【问题描述】:

我可以使用我获得的值(sender.value)在滑块移动时更改颜色吗?当滑块移动时,我正在尝试将颜色从绿色变为黄色再变为红色。请帮忙迅速谢谢!

let brokeSlider = UISlider(frame:CGRectMake(5, 440, 355, 20))
            brokeSlider.minimumValue = 0
            brokeSlider.maximumValue = 1
            brokeSlider.continuous = true
            brokeSlider.tintColor = UIColor.blackColor()
            brokeSlider.value = 0
            brokeSlider.addTarget(self, action: #selector(AnnotationPhotoWidget.sliderValueDidChange(_:)), forControlEvents: .ValueChanged)
            self.view.addSubview(brokeSlider)

    func sliderValueDidChange(sender:UISlider) {
            print("value--\(sender.value)")
    }

【问题讨论】:

  • 检查我的答案,让我知道它是否适合你。
  • 确实有效 :( @AshishVerma
  • 打印效果好吗?
  • @FredLoh 是的,印刷作品
  • 是在 viewdidload 中添加子视图行的 minimumValue 吗?

标签: ios iphone swift


【解决方案1】:

试试下面的代码:

func sliderValueDidChange(sender:UISlider) {
     print("value--\(sender.value)")
     if sender.value <= 0.3 {
        brokeSlider.minimumTrackTintColor = UIColor.greenColor()
     } else if sender.value > 0.3 && sender.value <= 0.6 {
           brokeSlider.minimumTrackTintColor = UIColor.yellowColor()
     } else {
          brokeSlider.minimumTrackTintColor = UIColor.redColor()
     }
}

【讨论】:

  • 不,感谢您的尝试!我也尝试过 if brokenSlider.value = 0.3 {} / 但我似乎无法让它工作! @AshishVerma
【解决方案2】:

试试这个:

import Foundation
import UIKit

class AnnotationPhotoWidget: UIViewController  {
    let brokeSlider = UISlider(frame:CGRectMake(5, 440, 355, 20))

    override func viewDidLoad() {
        brokeSlider.minimumValue = 0
        brokeSlider.maximumValue = 1
        brokeSlider.continuous = true
        brokeSlider.tintColor = UIColor.blackColor()
        brokeSlider.value = 0
        brokeSlider.addTarget(self, action: #selector(AnnotationPhotoWidget.sliderValueDidChange(_:)),forControlEvents: .
            ValueChanged)
        self.view.addSubview(brokeSlider)
    }

    func sliderValueDidChange(sender: UISlider) {
        if sender.value <= 0.3 {
            brokeSlider.minimumTrackTintColor = UIColor.greenColor()
        } else if sender.value > 0.3 && sender.value <= 0.6 {
            brokeSlider.minimumTrackTintColor = UIColor.yellowColor()
        } else {
            brokeSlider.minimumTrackTintColor = UIColor.redColor()
        }
    }
}

【讨论】:

  • 你不觉得我的回答和你的一样吗?
  • @AshishVerma 它是,唯一的区别是 viewDidLoad
  • @AshishVerma 当我在故事板中使用苹果 UIslider 时它起作用了,当我创建我自己的滑块时它不起作用,如上图所示^^^^,谢谢大家的帮助!
  • @FredLoh 阅读以上评论,感谢您的帮助!
  • 但这不会动态改变值
猜你喜欢
  • 1970-01-01
  • 2020-03-27
  • 1970-01-01
  • 1970-01-01
  • 2015-03-06
  • 2023-03-21
  • 1970-01-01
  • 2021-06-26
  • 2014-09-25
相关资源
最近更新 更多