#ios #objective-c
#iOS #objective-c
Вопрос:
В моем приложении я устанавливаю текст локализации, используя строку IBInspectable, а также меняю язык вручную с помощью действия кнопки.
Проблема
- Я не могу обновить пользовательский интерфейс при смене языка вручную. Мне нужно обновить строку IBInspectable при смене языка.
Ответ №1:
Я добился этого, используя приведенный ниже код :
1. InterFace and Implementation for UIView
@interface UIView (AdditionLocalization)
-(void)applyLocalization;
@end
@implementation UIView (AdditionLocalization)
-(void)applyLocalization{
if ([self isKindOfClass:[UILabel class]]) {
UILabel *lbl = (UILabel *)self;
[lbl setLocalizedText:lbl.accessibilityLabel];
}
}
2. InterFace and Implementation for Label
IB_DESIGNABLE
@interface UILabel(LabelAdditionLocalizations)
@property (nonatomic,copy)IBInspectable NSString *localizedText;
@end
@implementation UILabel(LabelAdditionLocalizations)
@dynamic localizedText;
-(void)setLocalizedText:(NSString *)localizedText{
self.text = [UtilityClass get:localizedText.length>0 ? localizedText : self.text alter:@""];
self.accessibilityLabel = localizedText.length>0 ? localizedText : nil;
}
3. Запуск вручную при нажатии кнопки
- (IBAction)clickChangeLanguage:(id)sender {
[UtilityClass setLanguage:current];
for (UIView *view in self.view.subviews) {
[view applyLocalization];
}
}