У меня возникла проблема с обновлением текста на UILabel
. My ViewController
изменяет свою собственность свойства phoneNumberString
. Мое мнение наблюдает за этим изменением свойства и реагирует, изменяя приписываемый текст ярлыка. Он наблюдает, используя ReactiveCocoa.UILabel приписал текст без изменений
[[RACAble(self.phoneNumberString) distinctUntilChanged]subscribeNext:^(id x) {
NSString* s=(NSString*)x;
UIFont* font=[UIFont systemFontOfSize:numbersFontSize weight:UIFontWeightThin];
NSMutableDictionary* attributesDict=[NSMutableDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName, nil];
self.phoneNumberLabel.attributedText = [[NSAttributedString alloc]initWithString:s attributes:attributesDict];
[self.phoneNumberLabel setNeedsDisplay];
NSLog(@"label att text = %@\nlabel text = %@\ninput string = %@\n==",self.phoneNumberLabel.attributedText,self.phoneNumberLabel.text,x);
}];
предоставляет следующий журнал:
label att text = +7 (225{
NSFont = "<UICTFont: 0x7a2942c0> font-family: \".SFUIDisplay-Thin\"; font-weight: normal; font-style: normal; font-size: 25.00pt";
}
label text = +7 (225
input string = +7 (225
мне нужно отнести текст, который будет расположен в моем UILabel
. Проблема в том, что он не дает никаких изменений в симуляторе. (Использование родного [self observeValueForKeyPath...]
приводит к тому же эффекту). Я решил эту проблему, используя уведомления с тем же кодом. Но я должен использовать KVO.
Дополнительная информация:
Вот мой код инициализации (перед установкой наблюдателя):
UILabel* phoneNumberLabel=[[UILabel alloc]init]; font=[UIFont systemFontOfSize:numbersFontSize weight:UIFontWeightThin]; attributesDict=[NSMutableDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName, nil]; phoneNumberLabel.attributedText=[[NSAttributedString alloc]initWithString:@"+7 " attributes:attributesDict];
Оба метода работают на основном потоке.
- Рамка
UILabel
достаточно большая, чтобы выделить ее.
http://stackoverflow.com/questions/27728466/use-multiple-font-colors-in-a-single-label-swift/27728516#27728516 –
У вас есть пытались использовать 'RACObserve' вместо' RACAble'? У меня был большой успех с этим. Кроме того, где вы настраиваете привязку RAC, viewDidLoad? – fullofsquirrels
Да, я пробовал. Я также пробовал с обычными наблюдениями. Я установил его при инициализации представления, в котором содержится метка – Dmitrii