【问题标题】:How ScrollView Layout Direction to right-to-left in SwiftUI?如何在 SwiftUI 中将 ScrollView 布局方向从右到左?
【发布时间】:2019-11-16 09:41:54
【问题描述】:

swiftUI的Horizo​​ntal ScrollView如何设置从右到左的布局方向?

类似这样的:

ScrollView(showsHorizontalIndicator: false) {
    HStack {
        VStack {
            Image("1")
            Text("one")
        }
        VStack {
            Image("2")
            Text("two")
        }
        VStack {
            Image("3")
            Text("three")
        }
    }
}

所以当模拟器运行时,我想在右侧看到Image("1"),然后向右滑动即可访问Image("3")

【问题讨论】:

  • 您可能应该更新您的问题以使其更清晰。我会改写它:“我有一个带有 .rigthToLeft 的 ScrollView 设置,但是当创建视图时,它看起来向左滚动,而不是向右滚动。”。或类似的东西。
  • 我的问题是这样的,但在 SwiftUI 中! stackoverflow.com/questions/9140959/…
  • 当我在SwiftUI 中使用transformEffect(.init(scaleX: -1, y: 1)) 时,滚动视图中的内容消失了
  • transformEffect 完成了它的工作,但是视图移出了屏幕。如果你使用 .offset() 你可以把它带回来。然而,现在的问题是,图像和文字显示出来就好像它们是在镜子上反射的一样!

标签: ios swift swiftui xcode11


【解决方案1】:

您可以通过以下修饰符将view 指定为从右到左的任何view

.flipsForRightToLeftLayoutDirection(true)
.environment(\.layoutDirection, .rightToLeft)

在你的情况下,它将是这样的:

ScrollView(showsHorizontalIndicator: false) {
    HStack {
        VStack {
            Image("1")
            Text("one")
        }
        VStack {
            Image("2")
            Text("two")
        }
        VStack {
            Image("3")
            Text("three")
        }
    }
}
.flipsForRightToLeftLayoutDirection(true)
.environment(\.layoutDirection, .rightToLeft)

祝你好运;)

【讨论】:

  • 谢谢!但是当我在文本中使用波斯语(rtl 语言)字符时,我的文本已经镜像了!
  • 将 '''.flipsForRightToLeftLayoutDirection(true)''' 转为 false。@MoeenKashisaz
  • 为其他人澄清上述内容:.environment(.layoutDirection, .rightToLeft) 强制发生从右到左的布局,即使在 L2R 语言环境中也是如此。翻转修饰符使视图服从环境。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 1970-01-01
  • 2013-10-02
  • 2012-09-12
相关资源
最近更新 更多