Как установить заголовок кнопки и изображение вместе, когда пользовательский интерфейс находится справа налево?
Я принудительно перенес пользовательский интерфейс приложения в направлении справа налево и наоборот в зависимости от текущего языка.
Это код для отображения заголовка под изображением в UIButton
когда слева направо активно (по умолчанию). Поэтому, когда я изменил его справа налево, он не работает, как должно быть. Кто-нибудь здесь, может помочь мне внести исправления в существующий?
extension UIButton {
func alignImageAndTitleVertically(padding: CGFloat = 6.0) {
let imageSize: CGSize = imageView!.image!.size
titleEdgeInsets = UIEdgeInsetsMake(0.0, -imageSize.width, -(imageSize.height + padding), 0.0)
let labelString = NSString(string: titleLabel!.text!)
let titleSize = labelString.size(attributes: [NSFontAttributeName: titleLabel!.font])
self.imageEdgeInsets = UIEdgeInsetsMake(-(titleSize.height + padding), 0.0, 0.0, -titleSize.width)
let edgeOffset = abs(titleSize.height - imageSize.height) / 2.0;
self.contentEdgeInsets = UIEdgeInsetsMake(edgeOffset, 0.0, edgeOffset, 0.0)
}
}
Вот тот, который я использую, когда язык арабский:
func alignImageAndTitleVerticallyWhenArabic(padding: CGFloat = 6.0) {
let imageSize: CGSize = imageView!.image!.size
titleEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, -(imageSize.height + padding), -imageSize.width + padding)
let labelString = NSString(string: titleLabel!.text!)
let titleSize = labelString.size(attributes: [NSFontAttributeName: titleLabel!.font])
self.imageEdgeInsets = UIEdgeInsetsMake(-titleSize.width, 0.0, 0.0, padding)
let edgeOffset = abs(titleSize.height - imageSize.height) / 2.0;
self.contentEdgeInsets = UIEdgeInsetsMake(edgeOffset, 0.0, edgeOffset, 0.0)
}
Примечания:
Когда я использую
alignImageAndTitleVerticallyWhenArabic
он находится ниже кнопки, но выравнивание все еще не правильно.Арабское решение работает, но изображение кнопки немного растягивается.