ViewController
,并且对大部分布局(尤其是文本)表现出色。默认行为是翻转布局,但保留
UIImageViews
相同的方向(因为您通常不想反转图像)。有没有办法指定当手机设置为RTL语言时某些图像应该翻转(例如箭头)?
imageFlippedForRightToLeftLayoutDirection
方法,该方法在 RTL 本地化时自动翻转 UIImageView 中的图像。
imageFlippedForRightToLeftLayoutDirection
返回翻转的图像。即
Objective-c
UIImage * flippedImage = [[UIImage imageNamed:@"imageName"] imageFlippedForRightToLeftLayoutDirection];
斯威夫特3
let flippedImage = UIImage(named: "imageName")?.imageFlippedForRightToLeftLayoutDirection()
来源:
UIImage* defaultImage = [UIImage imageNamed:@"default.png"];
UIImage* flipImage = [UIImage imageWithCGImage:sourceImage.CGImage scale:1.0 orientation: UIImageOrientationUpMirrored];
myImageview.image = flipImage;
UIImageView
子类并覆盖
setImage
以镜像内部图像,如 @nikos-m 建议并调用
super.image = flipImage
。这样您就可以使用 Interface Builder 中的自定义类轻松设置要翻转的所有图像视图,而不必添加
IBOutlet
s。
斯威夫特5
如果您想个性化图像翻转,您可以将每个图像注册到您想要的方向,因为布局方向是一个特征:
let leftToRight = UITraitCollection(layoutDirection: .leftToRight)
let rightToLeft = UITraitCollection(layoutDirection: .rightToLeft)
let imageAsset = UIImageAsset()
let leftToRightImage = UIImage(named: "leftToRightImage")!
let rightToLeftImage = UIImage(named: "rightToLeftImage")!
imageAsset.register(leftToRightImage, with: leftToRight)
imageAsset.register(rightToLeftImage, with: rightToLeft)
这与@SergioM 回答的资产目录中配置它相同。