首页
学习
活动
专区
圈层
工具
发布

UISlider值
EN

Stack Overflow用户
提问于 2014-03-18 17:05:20
回答 3查看 690关注 0票数 0

我正在尝试创建一个应用程序,它有三个UISlider用于选择R,G和B值。滑块应根据滑块值更改标签的颜色。

ViewController.h

代码语言:javascript
复制
#import <UIKit/UIKit.h>

 @interface ViewController : UIViewController
{
NSInteger color;

IBOutlet UISlider *redSlider;
IBOutlet UISlider *greenSlider;
IBOutlet UISlider *blueSlider;
IBOutlet UILabel  *colorLabel;
}

@property (nonatomic, retain) UISlider *redSlider;
@property (nonatomic, retain) UISlider *greenSlider;
@property (nonatomic, retain) UISlider *blueSlider;

colorLabel.textColor = [UIColor colorWithRed: redSlider.value green:greenSlider.value
blue:blueSlider.value alpha:1];


 @end

ViewController.m

代码语言:javascript
复制
 #import "ViewController.h"

 @interface ViewController ()


 @end

 @implementation ViewController

 - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@synthesize redSlider, greenSlider, blueSlider;




@end

这就是我到目前为止所拥有的,我完全被卡住了。

EN

回答 3

Stack Overflow用户

发布于 2014-03-18 17:20:17

你可以这样做...

ViewController.h

代码语言:javascript
复制
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end

ViewController.m

代码语言:javascript
复制
#import "ViewController.h"

@interface ViewController ()

// you need to make sure these are actually created
// and give them all a target of self and action sliderValueChanged
@property (nonatomic, retain) UISlider *redSlider;
@property (nonatomic, retain) UISlider *greenSlider;
@property (nonatomic, retain) UISlider *blueSlider;

// not sure where this is set up
@property (nonatomic, strong) UILabel *colorLabel;

@end

@implementation ViewController

 - (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    // You may have to create your labels and sliders in here...
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)sliderValueChanged
{
    // the sliders have changed so set the colour of the label
    // based on the new values of the sliders.
    self.colorLabel.textColor = [UIColor colorWithRed:self.redSlider.value
                                                green:self.greenSlider.value
                                                 blue:self.blueSlider.value
                                                alpha:1.0];
}

@end
票数 3
EN

Stack Overflow用户

发布于 2014-03-18 17:18:11

因为你实际上没有问题,所以我要猜测你的代码没有编译,因为它不会编译。

代码语言:javascript
复制
colorLabel.textColor = [UIColor colorWithRed: redSlider.value green:greenSlider.value blue:blueSlider.value alpha:1];

上面的行不属于你的界面。我建议您将当前拥有的代码更改为如下所示。

ViewController.h

代码语言:javascript
复制
@interface ViewController : UIViewController

// You don't need the ivars anymore these get generated with the properties below  

@property (nonatomic, retain) IBOutlet UISlider *redSlider;
@property (nonatomic, retain) IBOutlet UISlider *greenSlider;
@property (nonatomic, retain) IBOutlet UISlider *blueSlider;
@property (nonatomic, retain) IBOutlet UILabel *colorLabel
@property (assign) NSInteger color;

@end

ViewController.m

代码语言:javascript
复制
@implementation ViewController

// Also no need for the synthesize as these also get generated automatically

- (void)viewDidLoad
{
    [super viewDidLoad];
    // To change the actual color when changing the value of a slider move this to a method that gets called on slider changed.
    colorLabel.textColor = [UIColor colorWithRed:self.redSlider.value green:self.greenSlider.value self.blue:blueSlider.value alpha:1];
}

@end

一旦你真的问了一个问题,我也许也能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2014-03-18 17:21:14

你的ViewController.h :-

代码语言:javascript
复制
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{    
IBOutlet UISlider *redSlider;
IBOutlet UISlider *greenSlider;
IBOutlet UISlider *blueSlider;
IBOutlet UILabel  *colorLabel;
}

@property (nonatomic, retain) UISlider *redSlider;
@property (nonatomic, retain) UISlider *greenSlider;
@property (nonatomic, retain) UISlider *blueSlider;

 @end

您的ViewController.m将如下所示:-

#import ViewController.h

代码语言:javascript
复制
@interface ViewController ()
 @end

@implementation ViewController
@synthesize redSlider, greenSlider, blueSlider;
 - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self changeLabelColor];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

-(Void) changeLabelColor
    {
colorLabel.backgroundcolor = [UIColor colorWithRed:redSlider.value green:redSlider.value blue:redSlider.value alpha:1.0];
     }
        @end

因为我没有复制粘贴,而且我已经写好了,所以可能有一些打字错误。textcolor不会改变标签的颜色,所以我把它改成了backgroundcolor。您还可以使用IBAction添加滑块方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22474611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档