ios - 如何在 Swift 中自定义 UISlider 值

标签 ios swift uislider

我以编程方式创建 UISlider。我尝试将 UISlider 值自定义为 4.1, 4.2, 4.3, 4.4, 4.5, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 6.0, ... 谁能给我解决方案

sliderDemo = UISlider(frame:CGRectMake(0, 0, 200,20))
    var numberOfSteps : NSInteger = numbers.count - 1
    sliderDemo.minimumValue = 6.5
    sliderDemo.maximumValue = 4.1
    sliderDemo.continuous = true
    sliderDemo.value = 4.0
    sliderDemo.addTarget(self, action: "sliderValueDidChange:", forControlEvents: .ValueChanged)
    self.view.addSubview(sliderDemo)

func sliderValueDidChange(sender:UISlider!)
{
    println("number:\(sender.value)")
}

最佳答案

我只是为您创建了一个自定义 slider 的示例,在这种情况下,我自己创建并将其添加到表单中,但您可以轻松地适应使用 Storyboard 中的 slider ,您需要做的就是添加您的值到 numbers 数组,结果将在 valueChanged 函数中的变量 number 中,您可以使用观察器、通知或协议(protocol)来检索值的变化,或者简单地从那里调用一个函数。

class ViewController: UIViewController {

    var slider:UISlider?
    // These number values represent each slider position
    var numbers = [1, 2, 3, 4, 5, 6, 7] //Add your values here
    var oldIndex = 0

    override func viewDidLoad() {
        super.viewDidLoad()
        slider = UISlider(frame: self.view.bounds)
        self.view.addSubview(slider!)

        // slider values go from 0 to the number of values in your numbers array
        var numberOfSteps = Float(numbers.count - 1)
        slider!.maximumValue = numberOfSteps;
        slider!.minimumValue = 0;

        // As the slider moves it will continously call the -valueChanged:
        slider!.continuous = true; // false makes it call only once you let go
        slider!.addTarget(self, action: "valueChanged:", forControlEvents: .ValueChanged)
    }
    func valueChanged(sender: UISlider) {
        // round the slider position to the nearest index of the numbers array
        var index = (Int)(slider!.value + 0.5);
        slider?.setValue(Float(index), animated: false)
        var number = numbers[index]; // <-- This numeric value you want
        if oldIndex != index{
            println("sliderIndex:\(index)")
            println("number: \(number)")
            oldIndex = index
        }
    }
}

希望对你有帮助!

关于ios - 如何在 Swift 中自定义 UISlider 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30530286/

相关文章:

swift - Grand Central Dispute 增长内存

swift - 如何让UISlider的默认thumb像iOS控制中心里的thumb一样小

iphone - 如何获取UISlider拇指图像的中心

ios - iOS可靠地获取用户当前国家

ios - Swift + Realm 新手 : Problems with a simple Realm object and its initializers

ios - iOS应用程序多次被Apple商店拒绝

javascript - Angular uislider 禁用

ios - 设置 MKMapViewDelegate 使我的标记在 iOS 中消失

memory-management - 'unowned(safe)' 和 'unowned(unsafe)' 之间的 Swift 有什么区别?

swift - 矩阵排序和转置 swift4