Быстрое обновление направления раскадровки после изменения локализации языка
Я новичок в Swift и пытаюсь изменить направление просмотра приложений с LTR на RTL, когда пользователь нажимает кнопку на арабском языке. Пока у меня есть этот код ниже, и весь текст изменился правильно, кроме направления. Направление работает, только если я закрыл и снова открыл приложение. Пожалуйста помоги
@IBAction func goToLanguage(sender: AnyObject) {
let availableLanguages = Localize.availableLanguages()
actionSheet = UIAlertController(title: nil, message: "Switch Language", preferredStyle: UIAlertControllerStyle.ActionSheet)
for language in availableLanguages {
let displayName = Localize.displayNameForLanguage(language)
let langString = language as String
if(langString != "Base"){
let languageAction = UIAlertAction(title: displayName, style: .Default, handler: {
(alert: UIAlertAction!) -> Void in
Localize.setCurrentLanguage(language)
NSUserDefaults.standardUserDefaults().setObject([language], forKey: "AppleLanguages")
NSUserDefaults.standardUserDefaults().synchronize()
let delegate = UIApplication.sharedApplication().delegate as! AppDelegate
delegate.refreshEverything()
})
actionSheet.addAction(languageAction)
}
}
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: {
(alert: UIAlertAction) -> Void in
})
actionSheet.addAction(cancelAction)
self.presentViewController(actionSheet, animated: true, completion: nil)
}
1 ответ
Вы можете форсировать направление UIView, не закрывая приложение. Для арабского языка добавьте код ниже, чтобы изменить направление:
UIView.appearance().semanticContentAttribute = .forceRightToLeft
и для использования на французском или английском языке:
UIView.appearance().semanticContentAttribute = .forceLeftToRight