当使用像阿拉伯语这样的RTL语言时,iOS会自动翻转整个ViewController
,并且在大多数布局(特别是文本)方面做得很好。默认行为是翻转布局,但保留UIImageViews
相同的方向(因为您通常不想反转图像)。
当手机设置为RTL语言时,有没有办法指定某些图像应该被翻转(例如箭头)?
答案 0 :(得分:11)
iOS 9包含您可以使用的imageFlippedForRightToLeftLayoutDirection
方法,该方法在RTL本地化时自动翻转UIImageView中的图像。
答案 1 :(得分:5)
答案 2 :(得分:3)
当手机设置为RTL语言时,您必须手动翻转所需的UIImageView中的UIImages。这可以通过以下代码轻松实现:
UIImage* defaultImage = [UIImage imageNamed:@"default.png"];
UIImage* flipImage = [UIImage imageWithCGImage:sourceImage.CGImage scale:1.0 orientation: UIImageOrientationUpMirrored];
myImageview.image = flipImage;
答案 3 :(得分:3)
如果当前语言是RTL(从右到左),我们可以使用返回翻转图像的imageFlippedForRightToLeftLayoutDirection
。即
<强>目标c 强>
UIImage * flippedImage = [[UIImage imageNamed:@"imageName"] imageFlippedForRightToLeftLayoutDirection];
Swift 3
let flippedImage = UIImage(named: "imageName")?.imageFlippedForRightToLeftLayoutDirection()
来源:Apple Docs
答案 4 :(得分:1)
我最后使用localized images作为向前和向后箭头。这样做的好处是不必在每个地方添加图像使用图像,并且如果有不能正常翻转的渐变,则有机会清理箭头。
答案 5 :(得分:0)
当我们等待iOS 9改进了从右到左的支持时,您可以创建一个UIImageView
子类并覆盖setImage
以镜像内部@ nikos-m建议并调用super.image = flipImage
。
通过这种方式,您可以使用Interface Builder中的自定义类轻松设置要翻转的所有图像视图,而不必添加IBOutlet
。
答案 6 :(得分:0)
快捷键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回答中在资产目录中进行配置相同。
答案 7 :(得分:0)
您可以尝试以下代码:
let image = RTLsupportBoolValue ? UIImage(named: "imagename")?.imageFlippedForRightToLeftLayoutDirection() : UIImage(named: "imagename")
imageView.image = image
imageFlippedForRightToLeftLayoutDirection() --> 该方法用于在X轴上翻转图片。如果变量即“RTLsupportBoolValue == true”来了,你会显示图片倒置。如果涉及“false”,您将打印相同的图像。 “图像”变量保存了这个图像,然后你设置了 ImageView。