【问题标题】:How to show value of UISlider as Integer如何将 UISlider 的值显示为整数
【发布时间】:2009-12-02 04:15:51
【问题描述】:

UISlider 的值当前显示为浮点数。如何将其显示为整数?

sliderCtl = [[UISlider alloc] initWithFrame:frame];
    sliderCtl.minimumValue = 1;
    sliderCtl.maximumValue = 15;
    sliderCtl.continuous = NO;
    sliderCtl.value = 1;
    [sliderCtl setShowValue:YES];

【问题讨论】:

    标签: iphone ios uislider


    【解决方案1】:

    如果你想让你的滑块捕捉到不同的整数值,你可以在你的 valueChanged 函数中使用这样的东西:

    -(IBAction)valueChanged:(UISlider*)sender {
        int discreteValue = roundl([sender value]); // Rounds float to an integer
        [sender setValue:(float)discreteValue]; // Sets your slider to this value
    }
    

    这将在您松开手指后根据两个数字之间的距离将滑块对齐到 1,2,...,15 等值。例如,如果您在 2.4 时释放滑块,它会弹回 2,而在 2.6 时它会弹回 3。

    【讨论】:

    • roundtl 在 iOS 中似乎不存在。然后 Xcode 巧妙地建议“roundl”,它也不存在。
    • 感谢您的提醒。我已经相应地更新了我的答案以使用我刚刚测试过的函数 roundl()。奇怪的是,我之前的回答当时奏效了……
    • 看起来这在 Xcode 4.5 中再次起作用 - 我让它正常工作,唯一的变化是它会在用户仍在使用它时捕捉 - 拇指不会移动,直到用户拖动它到下一个值。
    • 一点更正:int discrictionValue = roundl([(UISlider*)sender value]);
    • 在这种情况下不需要 UISlider-cast,因为它已经设置为 IBAction 的发送者参数类型。如果类型是“id”,那将是有意义的;-)
    【解决方案2】:

    您可以截断或舍入滑块中的值,然后对其进行更新以向用户提供有关更改的反馈(当用户释放时,它似乎与整数值对齐)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 2021-03-24
      • 2019-05-14
      • 2012-03-02
      • 1970-01-01
      相关资源
      最近更新 更多