2016-10-29 8 views
1

Я пытаюсь локализовать NSAttributedString.Есть ли способ сохранить атрибуты NSAttributedString, когда он локализован?

Однако, я нашел атрибуты NSString, которые ушли после локализации.

Есть ли все равно сохранить эти атрибуты?

self.doctorUITextView.attributedText = NSLocalizedString([doctorNSMutableAttributedString string], nil); 
+0

Код, который вы отправили, даже не компилируется. Пожалуйста, введите действующий код в свой вопрос. Вы не можете присвоить 'NSString' свойство, ожидающее' NSAttributedString'. – rmaddy

+0

@rmaddy Это на самом деле проблема. Атрибуты NSString все исчезли после локализации, потому что она может возвращать только NSString, но мне нужна NSAttributedString для атрибута subtext. –

ответ

1

Решение 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