我试图让图片翻转工作可靠,但我发现了一些问题。我在XCode资产目录中管理我的图像,并且需要在RTL语言中翻转的图像已使用' Direction'属性设置为'从左到右,镜子'。 在某些情况下,我有2个单独的资产,因为翻转是不够的。这些配置了'方向'属性设置为' Both'并提供两个单独的图像资产。 所有图像都是PDF资产,其中包含“保留矢量数据”和“保存矢量数据”。启用。
只要我使用iOS 11和XCode 9.2进行测试,这一切都很有效。 当我在iOS 9上测试时问题就出现了。当我启动应用程序时,为RTL配置的图像不会显示,即使我没有使用RTL语言运行。
自XCode 9.3以来,我似乎遇到了一个新问题。资产目录自动更新; RTL图像被重新配置为方向'两者'并对目录中的json文件进行更改。选择“从左到右,镜子'不起作用了。
是否有人知道如何让它可靠地运作?或者我只是看看XCode中的最新错误以及iOS9的一些老问题?
[编辑] 在进一步分析生成的IPA文件后,似乎Assets.car文件不包含RTL图像的.png文件。它们似乎没有生成(因为源文件是PDF),因此可以解释iOS 9中缺少的图像(不使用PDF图像)。
答案 0 :(得分:4)
我修复了它,但苹果开发者论坛上有人指出资产目录'方向'属性直到XCode 8 / iOS 10才被引入。
这意味着它在iOS 9中不起作用,它可能是一个XCode错误,当部署目标设置在iOS 10以下时,您甚至可以选择它。
因此,如果您想要与旧的iOS设备兼容,请不要尝试使用此功能!你仍然可以以编程方式使它工作。
如果您有一个图像,例如UIBarButtonItem,您可以为此按钮设置一个插座并在viewDidLoad中运行以下内容:
self.someButton.image = [self.someButton.image imageFlippedForRightToLeftLayoutDirection];
这是有效的,因为iOS 9支持imageFlippedForRightToLeftLayoutDirection 。它只会在您的应用处于RTL模式时翻转图像。
如果您需要加载完全不同的图像,可以按如下方式进行:
if ([UIApplication sharedApplication].userInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionRightToLeft) {
self.someButton.image = [UIImage imageNamed:@"someRTLImage"];
}