[ios]UISLider UILabel 的值更改以正确的方式

发布时间: 2017/3/21 23:06:36
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

所以我有此代码来更改的值 UILabel 基于价值的 UISlider :

- (void)slider03Changed:(UISlider *)slider{

    int value = 10;

    if (slider.value >= 0.1){
        value = 20;
    }
    if (slider.value >= 0.2){
        value = 30;
    }
    if (slider.value >= 0.3){
        value = 40;
    }
    if (slider.value >= 0.4){
        value = 50;
    }
    if (slider.value >= 0.5){
        value = 60;
    }
    if (slider.value >= 0.6){
        value = 70;
    }
    if (slider.value >= 0.7){
        value = 80;
    }
    if (slider.value >= 0.8){
        value = 90;
    }
    if (slider.value >= 0.9){
        value = 100;
    }

    lbl01.text = [NSString stringWithFormat:@"%u hours", value];
}

一切工作正常,但我担心这里的代码的质量。

此代码是相当,嗯,很久。有没有任何方法来优化它以某种方式?谢谢你 !

解决方法 1:

使用 for 循环︰

- (void)slider03Changed:(UISlider *)slider{

    int value = 10;

    for (float i = 0.9; i > 0; i-=0.1)
    {
        if (slider.value >= i)
        {
           value = (i*100)+10; 
           break;
        }
    }

    lbl01.text = [NSString stringWithFormat:@"%u hours", value];
}

所使用的公式是︰

(i*100)+10

例如︰

(0.6*100)+10 = 70
(0.7*100)+10 = 80
and so on...

更新︰

你可以通过检查这种情况下开始优化它进一步 slider.value >= 0.9 第一次。

为什么呢?

因为如果它满足案件具有较高的价值,然后其余的你 if 语句将毫无用处。在代码中我写道,每当用最超值的条件 slider.value 满意的我们设置的值 value 变量和循环的爆发。这将防止您的代码以评估不必要的情况。

例如︰

假设你 slider.value = 0.95

这是您的代码将会发生什么︰

(slider.value >= 0.1) ----> true ----> then ---> set value = 20
(slider.value >= 0.2) ----> true ----> then ---> set value = 30
(slider.value >= 0.3) ----> true ----> then ---> set value = 40
(slider.value >= 0.4) ----> true ----> then ---> set value = 50
(slider.value >= 0.5) ----> true ----> then ---> set value = 60
(slider.value >= 0.6) ----> true ----> then ---> set value = 70
(slider.value >= 0.7) ----> true ----> then ---> set value = 80
(slider.value >= 0.8) ----> true ----> then ---> set value = 90
(slider.value >= 0.9) ----> true ----> then ---> set value = 100

与我的代码︰

(slider.value >= 0.9) ----> true ----> then ---> set value = 100 and break out of the loop

您可能会看到,与我的代码,它的计算结果仅 1 例。

赞助商