2015-02-26 3 views
3

Я пытаюсь изменить цвет текста в WKInterfaceLabel, используя свойство setAttributedText. Вот код:Изменить цвет текста WKInterfaceLabel с помощью NSMutableAttributedString

MyRowController *row = [self.interfaceTable rowControllerAtIndex:idx]; 

NSString *str_tmp = @"Test"; 

NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:str_tmp];   
[text addAttribute:NSFontAttributeName value:[UIFont fontWithName:FONT_REGULAR size:12.0] range:NSMakeRange(0, str_tmp.length)]; 
[text addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, str_tmp.length)]; 

[row.lines setAttributedText:text]; 

Результат:

enter image description here

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

WKInterfaceController код:

@interface MyInterfaceController() 

@implementation MyInterfaceController 

- (void)awakeWithContext:(id)context { 

    [super awakeWithContext:context]; 

} 

- (void)willActivate { 

    [super willActivate]; 
    [self loadTableData]; 

} 

- (void)didDeactivate { 
    [super didDeactivate]; 
} 


#pragma mark - 
#pragma mark Table 
#pragma mark - 

- (void)loadTableData { 

    NSMutableArray *arrItems = [NSMutableArray new]; 

    for(user* usr in self.agenda.users){ 
     [arrItems addObject:usr]; 
    } 

    [self.interfaceTable setNumberOfRows:arrItems.count withRowType:@"userRow"]; 

    [arrItems enumerateObjectsUsingBlock:^(NSDictionary *dict, NSUInteger idx, BOOL *stop) { 

     MyRowController *row = [self.interfaceTable rowControllerAtIndex:idx]; 

     NSString *str_tmp = @"Test"; 

     NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:str_tmp];   
     [text addAttribute:NSFontAttributeName value:[UIFont fontWithName:FONT_REGULAR size:12.0] range:NSMakeRange(0, str_tmp.length)]; 
     [text addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, str_tmp.length)]; 

     [row.lines setAttributedText:text]; 

    }]; 

} 

@end 

MyRowController код:

@import WatchKit;

@interface MyRowController : NSObject 

@property (weak, nonatomic) IBOutlet WKInterfaceSeparator *separator; 
@property (weak, nonatomic) IBOutlet WKInterfaceGroup *contentGroup; 
@property (weak, nonatomic) IBOutlet WKInterfaceLabel *lines; 
@property (weak, nonatomic) IBOutlet WKInterfaceGroup *separatorBottom; 


@end 

ответ

2

Не могли бы вы разместить полный контроллер интерфейса и контроллер строк? Очень сложно сказать, что может быть неправильно. То, что вы делаете в данный момент, выглядит прекрасно. С учетом сказанного здесь есть две вещи.

Прежде всего, не пытайтесь установить это в init или awakeWithContext. Вы должны установить это в willActivate. В противном случае вы получите какое-то странное поведение.

Во-вторых, вам нужно установить это, когда контроллер интерфейса виден. В противном случае изменение может не получить.