Решение 1
Создайте метод, который создает NSAttributedString каждый раз, когда вам нужно обновить textView
СОДЕРЖАНИЕ
- (void) setDoctorText: (NSString *) string {
//create your attributes dict
UIFont *keyFont = [UIFont fontWithName:@"Courier" size:16];
NSDictionary *attributes = [NSDictionary dictionaryWithObject:keyFont forKey:NSFontAttributeName];
_doctorTextView.attributedText = [[NSAttributedString alloc] initWithString:string attributes:attributes];
}
Использование:
[self setDoctorText:NSLocalizedString(@"your string", @"")];
вместо этого :
_doctorTextView.attributedText = @"your string";
Решение 2:
Возможно, не самое элегантное решение, но вы можете создать NSMutableAttributedString
свойство и установить его атрибуты один раз в viewDidLoad
. Затем, когда вам нужно обновить текст textView
, вы просто делаете это через сохраненный измененный атрибут текста.
@interface ViewController()
@property (weak, nonatomic) IBOutlet UITextView *doctorTextView;
@property (nonatomic, strong) NSMutableAttributedString *doctorAttributedString;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIFont *keyFont = [UIFont fontWithName:@"Courier" size:16];
NSDictionary *attributes = [NSDictionary dictionaryWithObject:keyFont forKey:NSFontAttributeName];
_doctorAttributedString = [[NSMutableAttributedString alloc] initWithString:@" " attributes:attributes];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
_doctorAttributedString.mutableString.string = NSLocalizedString(@"your string", @"");
_doctorTextView.attributedText = _doctorAttributedString;
}
@end
Код, который вы отправили, даже не компилируется. Пожалуйста, введите действующий код в свой вопрос. Вы не можете присвоить 'NSString' свойство, ожидающее' NSAttributedString'. – rmaddy
@rmaddy Это на самом деле проблема. Атрибуты NSString все исчезли после локализации, потому что она может возвращать только NSString, но мне нужна NSAttributedString для атрибута subtext. –