2013-05-22 3 views
0

enter image description hereUILabel текста Изменение цвета

выход должен быть, как этот

enter image description here

UILabel *name = [[UILabel alloc]initWithFrame:CGRectMake(5,10,300,20)]; 
name.text =[Language localizedStringForKey:@"Name *"]; 
name.font = [UIFont systemFontOfSize:14.0f]; 
[name setBackgroundColor:[UIColor clearColor]]; 
[self.View addSubview:name]; 

Как изменить цвет одной буквы? Мне нужно только изменение текста меток.

+0

NSAttributedString ... см Http: // StackOverflow.com/questions/3482346/how-do-you-use-nsattributedstring –

+0

http://stackoverflow.com/questions/3786528/iphone-ipad-how-exactly-use-nsattributedstring – ajithmn89

+0

Вы ориентируетесь на iOS 6.0 и выше? – Bartu

ответ

4

Ответ:NSAttributedString

Проверить этот ответ: Answer for iOS5 and iOS6 also.

Для Eg:

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:@"Name *"]; 
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(5,1)]; 

Update:

Сделать это изменение

[string addAttribute:(NSString*)kCTForegroundColorAttributeName 
       value:(id)[[UIColor redColor] CGColor] 
       range:NSMakeRange(5,1)]; 

Добавить следующее после #import линии вашего .m файл:

#if (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE) 
#import <CoreText/CoreText.h> 
#else 
#import <AppKit/AppKit.h> 
#endif 

GoodLuck !!!

-1

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

0

Использование NSAttributedString по умолчанию UILabel доступно после iOS 6.0.

Для поддержки ниже iOS 6.0 вам необходимо использовать TTTAttributedLabel. Инструкции по использованию и установке можно найти в файле readme. Также обратите внимание, что он также использует NSAttributedString. Таким образом, вы можете комбинировать TTTAttributedLabel + UILabel для поддержки iOS 6+ и ниже.

Конечно, вы также можете создать свой собственный подкласс UILabel.

1

Попробуйте использовать этот вариант. Это будет работать на IOS6 или более поздней версии.

UILabel *name = [[UILabel alloc]initWithFrame:CGRectMake(5,10,300,20)]; 
name.font = [UIFont systemFontOfSize:14.0f]; 
[name setBackgroundColor:[UIColor clearColor]]; 
[self.view addSubview:name]; 

NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"Name *"]]; 
[attrStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(5, 1)]; 
name.attributedText = attrStr; 
+0

OP заявила, что он развивается для iOS 4.3 и далее. свойство attributedText не будет работать для iOS 4 и 5. – Bartu

+0

hmmm lol ....... Отходы тяжелой работы ... –

0

Swift 4
(Примечание: обозначение приписываемой строкового ключа изменяется в быстром 4)

Вот это расширение для NSMutableAttributedString, что добавить/набор цвет на строки/текста.

extension NSMutableAttributedString { 

    func setColor(color: UIColor, forText stringValue: String) { 
     let range: NSRange = self.mutableString.range(of: stringValue, options: .caseInsensitive) 
     self.addAttribute(NSAttributedStringKey.foregroundColor, value: color, range: range) 
    } 

} 

Теперь попробуйте выше расширение с UILabel и увидеть результат

let label = UILabel() 
label.frame = CGRect(x: 40, y: 100, width: 280, height: 200) 
let title = "Name" 
let star = "*" 
let stringValue = "\(title) \(star)" 
label.textColor = UIColor.lightGray 
label.numberOfLines = 0 
let attributedString: NSMutableAttributedString = NSMutableAttributedString(string: stringValue) 
attributedString.setColor(color: UIColor.red, forText: star) // or use direct value for text "red" 
label.font = UIFont.systemFont(ofSize: 26) 
label.attributedText = attributedString 
self.view.addSubview(label) 
0

Попробуйте:

NSMutableAttributedString *newStr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"Name *"]]; 
[newStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(5, 1)]; 
label.attributedText = newStr; 
Смежные вопросы