此目标C代码不会更改标签文本的颜色

时间:2011-08-27 08:53:24

标签: ios objective-c

调试器显示一些颜色值。请问我做错了什么

@synthesize textLabel;
@synthesize textField;
@synthesize sliderRed;
@synthesize sliderGreen;
@synthesize sliderBlue;


- (void)dealloc
{
    [textLabel release];
    [super dealloc];
}

- (IBAction)updateLabel
{
    NSString * textValue = [textField text];

    float red = [sliderRed value]/255.f;
    float green = [sliderGreen value]/255.f;
    float blue = [sliderBlue value]/255.f;

    UIColor *textColour = [[UIColor alloc]initWithRed:red green:green blue:blue alpha:1.0];
    [textLabel setText:textValue];
    [textLabel setTextColor:textColour];
}

3 个答案:

答案 0 :(得分:2)

我认为sliderRed,sliderGreen和sliderBlue是UISlider实例?他们的最小/最大值是多少?如果你把它保留在0.0到1.0的默认值,那么这段代码会给你一些非常低的值:

float red = [sliderRed value]/255.f;
float green = [sliderGreen value]/255.f;
float blue = [sliderBlue value]/255.f;

你使用的UIColor方法将浮点参数从0.0增加到1.0,因此只需将滑块值传递给它而不分割它们就可以了。

并且不要忘记将[textColour release];放在该方法的末尾,否则每次调用该方法时都会泄漏一个新的UIColor实例。

答案 1 :(得分:1)

您的密码没有错。也许在其他地方出了问题。
尝试更换此行:
UIColor *textColour = [[UIColor alloc]initWithRed:red green:green blue:blue alpha:1.0];

UIColor *textColour = [UIColor redColor];

检查redColor是否有效。如果没有,那么你的其他代码可能有问题。

答案 2 :(得分:1)

尝试在更改绘图属性后添加[textLabel setNeeedsDisplay]