2014-01-10 4 views
1

Добрый день! я просто хочу спросить, как изменить цвет фона UILabel в зависимости от числа, набранного на нем? например, если число равно 0, оно является синим, а если число равно 1-2, оно станет зеленым. И если число 3-4, оно станет оранжевым. Спасибо за ответ!Изменение цвета фона UILabel

+0

Просьба уточнить вашу конкретную проблему или добавить дополнительные детали, чтобы выделить именно то, что вам нужно. –

+0

Я хочу изменить цвет фона ярлыка в зависимости от того, какой номер он показывает. – LevisBotio

+0

Проверьте мой ответ. –

ответ

2

UITextFieldDelegate не имеет метода измерения. Вам придется вручную добавлять поведение. Вы можете использовать метод shouldChangeCharactersInRange:, но лично я бы посоветовал не переопределять методы, если вам абсолютно не нужно.

[yourTextField addTarget:self action:@selector(textFieldDidChange) forControlEvents:UIControlEventEditingChanged]; 

Затем в целевом методе, установить цвет фона с:

- (void)textFieldDidChange{ 

    if ([yourTextField.text isEqualToString:@"1"] || [yourTextField.text isEqualToString:@"2"]) 
     yourLabel.backgroundColor = [UIColor blueColor]; 
    else if (...) 
     . 
     . 
     //and so on 
} 
3

Вы можете установить, как это ...

int number = [yourLbl.text intValue]; 

if(number == 0) 
    yourLbl.backgroundColor = [UIColor blueColor]; 
else if(number == 1 || number == 2) 
    yourLbl.backgroundColor = [UIColor greenColor]; 
else if(number == 3 || number == 4) 
    yourLbl.backgroundColor = [UIColor orangeColor]; 
else 
    yourLbl.backgroundColor = [UIColor redColor]; 
+0

Он говорит о ** цвете фона **. не цвет текста. \ –

+0

для цвета фона, это будет '[yourLbl setBackgroundColor: [UIcolor greenColor]];' – zbMax

+0

. Какую ошибку вы получаете? –

-1

Попробуйте это условие, внутри textfielddidendedition

-(void)textFieldDidEndEditing:(UITextField *)textField 
{ 
if(label.text isEqualToString:0) 
{ 
    label.backgroundColor=[UIColor blueColor]; 
} 
else 
{ 
label.backgroundColor=[UIColor blueColor]; 
} 
} 
+0

Прямое сравнение с '==' неверно, когда вы сравниваете значения объекта. И со строками вы можете иметь две строки, которые одинаковы, но они разные объекты, в этом случае ваше сравнение не удастся. Кроме того, вы проверяете строку на число, поэтому я сомневаюсь, что это даже компилируется. Кроме того, что произойдет, если на входе есть пробелы или 0.0? или -0? – Abizern

0

вы не можете печатать на UILabel, используйте UITextField

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
     int number = [textField.text intValue]; 
     if(number == 0) { 
      label.backgroundColor = [UIColor blueColor]; 
     } else if(number == 1 || number == 2) { 
      label.backgroundColor = [UIColor greenColor]; 
     } else if(number == 3 || number == 4) 
      label.backgroundColor = [UIColor orangeColor]; 
     } 


    return YES; 
} 
+0

однозначный номер – LevisBotio

+0

мой ярлык получает его число, основанное на результате вычислений, поэтому я не печатаю на нем – LevisBotio

1

Сначала преобразуйте свой текстовый номер метки в int, чем используете backgroundColor для фона этикетки.

int number = [yourLabel.text intValue]; 

if(number == 0) 
    yourLabel.backgroundColor = [UIColor blueColor]; 
else if(number == 1 || number == 2) 
    yourLabel.backgroundColor = [UIColor greenColor]; 
else if(number == 3 || number == 4) 
    yourLabel.backgroundColor = [UIColor orangeColor]; 
else 
    yourLabel.backgroundColor = [UIColor grayColor]; 
Смежные вопросы