【问题标题】:Divide a set variable between a group of UISliders在一组 UISlider 之间划分一个集合变量
【发布时间】:2014-09-01 19:05:33
【问题描述】:

我在让 UISlider 相互交互时遇到问题,并且没有一个好的方法来描述我所追求的;但是这里有。

假设您正在创建一个角色扮演角色并且有 100 个属性点可以花费。您可以将积分分为力量、速度、智力、防御和运气的统计数据。所以可用的属性点是我的变量,而统计数据是我的滑块。

如果我将强度滑块设置为 80,那么我应该无法将任何其他滑块滑过 20。

基本上,我正在寻找一种基于其他滑块的slider.value和原始变量的剩余值动态设置UISlider最大值的方法。

这是一个快速的项目,也是我遇到最大困难的地方。

【问题讨论】:

    标签: xcode dynamic linker swift uislider


    【解决方案1】:

    首先,创建一个滑块数组(您可以将其作为一个出口集合或在您的viewDidLoad 方法中设置),然后将每个滑块连接到下面的sliderChanged 方法。

    sliderChanged 计算所有滑块除了当前移动的滑块已使用了多少组合最大值,然后将当前移动的滑块限制为剩余的滑块。

    class ViewController: UIViewController {
        let combinedMaximum: Float = 100
        @IBOutlet var sliders: [UISlider]!
    
        @IBAction func sliderChanged(sender: UISlider) {
            let totalUsed = sliders.reduce(0) { (subtotal: Float, slider: UISlider) in
                if slider != sender {
                    return subtotal + slider.value
                }
                return subtotal
            }
            let remainder = combinedMaximum - totalUsed
            if sender.value > remainder {
                sender.value = remainder
            }
        }
    
        // etc...   
    }
    

    【讨论】:

      猜你喜欢
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 2020-08-31
      • 2023-01-19
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多