【问题标题】:iOS: how to set custom background colour with sliders?iOS:如何使用滑块设置自定义背景颜色?
【发布时间】:2012-12-24 11:28:05
【问题描述】:

首先我想说我在这个网站上看到了一些关于如何做到这一点的帖子,虽然似乎没有一个对我有用,所以请不要关闭它,直到我让它工作。

我想要做的是根据滑块的值改变视图的背景,以便用户可以选择他们想要的背景颜色。

self->colorView.backgroundColor = [UIColor myColor];
myColor = 

我想我需要一些这样的代码,虽然我不知道如何定义我的颜色将是什么;像“红色:redSlider / 255”等其他颜色?我也不知道在哪里实现上面的代码,因为当使用更改滑块的值时,我需要它不断更新。

我在编程方面非常基础,因为我只是一个青少年,将编程作为一种爱好,我很感激简单的说明,清楚地告诉我需要在哪里放置代码等。

附言它不会让我发布视图的图像,对不起:(

【问题讨论】:

    标签: ios cocoa-touch uiview uislider


    【解决方案1】:

    在您的 ViewController.h 文件中定义

    @property (nonatomic, strong) IBOutlet UISlider *mySlider;
    

    在 ViewController.m 文件中,添加:

    - (void) sliderValueChanged:(UISlider *)slider
    {
        // Handle your color changing logic here
        myView.backgroundColor = [UIColor colorWithRed:0.4f green:0.5f blue:1.0f alpha:1.0f];
    }
    

    在界面生成器中, 拖动 UISlider 以查看并将其“Value Changed”事件出口设置为sliderValueChanged 方法。

    现在,当您更改屏幕上的滑块时,颜色应根据您在方法 sliderValueChanged 中的逻辑进行更改

    以下是根据您的要求的逻辑:

    - (void) sliderValueChanged:(UISlider *)slider
    {
        // Assuming slider minimum is 0 and maximum is 1
        CGFloat redVal = 0.0f;
        CGFloat yellowVal = 0.0f;
        CGFloat blueVal = 0.0f;
        if (slider == redSlider)
        {
            redVal = slider.value;
        }
        else if (slider == yellowSlider)
        {
            yellowVal = slider.value;
        }
        else if (slider == blueSlider)
        {
            blueVal = slider.value;
        }
        myView.backgroundColor = [UIColor colorWithRed:redVal green:greenVal blue:blueVal alpha:1.0f];
    }
    

    【讨论】:

    • 对不起,我想我没有说清楚。我有三个滑块,一个是红色的,一个是蓝色的,一个是绿色的,三个滑块的调整给出了背景的整体颜色。因此,我需要实现所有三个以提供整体颜色
    • 另外我真的没有任何“变色逻辑”,所以提供这将非常有帮助:)
    • 对此,你能告诉我你想要什么变色逻辑吗?
    • 我希望每个滑块(红色、绿色和蓝色)控制它是该基色的百分比,以便在调整它们时可以更改每种原色的值例如0.5blue、0.5red 和 0green = 紫色。谢谢
    • 非常感谢,但不幸的是我无法得到这是工作!我复制了您编写的代码,将适当的值更改为我为它们命名的值,还检查了所有连接是否正常,但仍然没有运气。会不会是视图没有更新?
    【解决方案2】:

    由于 UISlider 实现了 UIAppearence 协议,您可以将其背景颜色设置为:

    mySlider.backgroundColor = [UIColor lightGrayColor]; // Or any other color
    

    或:

    [[mySlider appearance] setBackgroundColor:[UIColor lightGrayColor]];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-14
      • 2018-06-29
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多