【问题标题】:RTL images are not flipped inside UITableViewCellRTL 图像不会在 UITableViewCell 内翻转
【发布时间】:2019-05-13 11:53:39
【问题描述】:

我有一个需要支持从右到左语言的应用。系统几乎自动处理所有事情。图片除外。

其中一些(箭头)需要翻转。在资产目录中,我将这些图像的“方向”属性设置为“从左到右,镜像”。

这适用于用于按钮(简单按钮和导航栏按钮)的图像,但当涉及用于表格视图单元格内的图像视图中的图像时会出现问题。

当表格显示时,它们不会翻转。当我点击一个单元格并选择它时,图像会翻转并在之后保持翻转。所以,我需要点击每个单元格来翻转它们的图像。

我尝试使用imageFlippedForRightToLeftLayoutDirection(),但没有效果。与withHorizontallyFlippedOrientation() 相同。

你有解决方法的想法吗?

附:根据要求添加屏幕截图。前 3 个单元格已被点击,因此箭头按预期翻转。底部单元格显示未翻转的图像。

前 3 个单元格已被点击,因此箭头按预期翻转。底部单元格显示未翻转的图像。

【问题讨论】:

  • 上传输出截图方便理解
  • 完成。请看一下。

标签: ios swift uitableview uiimage right-to-left


【解决方案1】:

好的,这是我目前找到的解决方法。

只要 iOS 由于某种原因无法正确镜像图像,我就将“Direction”属性设置为“Both”并添加从右到左的图像集。

这解决了问题。

【讨论】:

  • 我们可以在运行时进行 LTR 到 RTL 而不重新启动应用程序吗?
  • 您可以调用UIView.appearance().semanticContentAttribute = .forceRightToLeft 动态强制RTL,但这仅适用于UIView 及其后代。导航栏和图像不执行任何更改。这是因为它们依赖于UIApplication.shared.userInterfaceLayoutDirection,您无法在代码中对其进行修改。至少,我没有找到任何动态的方法来做到这一点。
【解决方案2】:

似乎是UIImageView 的一个错误,因为-正如您所说-它适用于UIButton 中的图像。诀窍是以编程方式设置图像(而不是在界面生成器中选择它)。然后 RTL 系统按预期工作:

yourImageView?.image = UIImage(named: "YourImageName")

【讨论】:

  • 这比@Evgeniy 上面提到的更简单。需要注意的是,如果您之前在 Interface Builder 中设置了图像,则必须删除该图像(即在 Interface Builder 中清除图像属性)才能使此解决方法正常工作。
猜你喜欢
  • 2021-01-26
  • 2018-09-16
  • 2021-06-05
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 2011-08-02
  • 1970-01-01
  • 2012-01-14
相关资源
最近更新 更多