О проблеме, связанной с IBInspectable в локализации

#ios #objective-c

#iOS #objective-c

Вопрос:

В моем приложении я устанавливаю текст локализации, используя строку IBInspectable, а также меняю язык вручную с помощью действия кнопки.

Проблема

  1. Я не могу обновить пользовательский интерфейс при смене языка вручную. Мне нужно обновить строку 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];
    }
}