Как обрабатывать изображения кнопок возврата для языков RTL в iOS 8 и более поздних версиях

#ios #objective-c #right-to-left

#iOS #objective-c #справа налево

Вопрос:

Я локализовал изображения кнопок возврата в навигационных панелях для английского (<) и арабского (>) языков в моем приложении. Когда для системного языка установлен арабский, в iOS 9 и более поздних версиях iOS автоматически перевернет панель навигации, и кнопка возврата будет справа, так что изображение «>» — идеальное направление. Однако в iOS 8 кнопка возврата по-прежнему находится слева, и в этом случае «>» будет довольно странным. Могу ли я использовать в своем коде изображение, локализованное для другого языка? Приветствуются любые предложения.

Комментарии:

1. Пожалуйста, попробуйте if ([curruntLan isEqualToString:@»ar»]) { UIImage *img = [UIImage imageNamed:@»icoBack»]; img = [UIImage imageWithCGImage:img. Масштаб изображения cg: изображение.ориентация масштаба: UIImageOrientationUpMirrored]; [self.btnBack setImage:img forState:UIControlStateNormal];

Ответ №1:

Вам не нужно иметь дополнительное изображение для этих типов Выберите конкретный ресурс из свойств выберите «Направление», ранее это было «исправлено» преобразуйте его в «Слева направо, зеркала»

Ответ №2:

Для поддержки RTL значков кнопок вам необходимо предоставить изображение во время выполнения, например:

 //MARK: - Locale identifiers

enum LOCALE_IDENTIFIERS: String {
    case arabic = "ar-SA"
    case hindi = "hi"
    case urdu = "ur"
    case english = "en"
}

CURRENT_LANGUAGE = LOCALE_IDENTIFIERS.urdu.rawValue

/* Assume the CURRENT_LANGUAGE will return the current selected language */


/*This is what you need. The above code is just for making the sense*/
var iconName = ""
if Locale.characterDirection(forLanguage: CURRENT_LANGUAGE) == Locale.LanguageDirection.rightToLeft {
    iconName = "ic_back_button_RTL"
}else {
    iconName = "ic_back_button_LTR"
}

let backButtonImage: UIImage = UIImage(named: iconName)!
//Use this backButtonImage for your button.

/*The "ic_back_button_RTL" is an icon like: -> */    
/*The "ic_back_button_LTR" is an icon like: <- */