首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SwiftUI ScrollView水平RTL不能正常工作

SwiftUI ScrollView水平RTL不能正常工作
EN

Stack Overflow用户
提问于 2020-04-12 03:19:43
回答 4查看 1.5K关注 0票数 3

我试图在我的ios上支持RTL模式,它是使用swiftUI构建的,虽然这样做可以改变分层方向:

代码语言:javascript
运行
复制
.environment(\.layoutDirection, .rightToLeft)

只使用水平ScrollView,它不能正常工作

当我这么做时:

代码语言:javascript
运行
复制
 ScrollView(.horizontal) {
            HStack{
                Text("b1")
                Text("b2")
                Text("b3")
            }
        } .environment(\.layoutDirection, .rightToLeft)

项目位置将旋转,但HSTACK将始终停留在左侧,如下图所示:

有什么解决办法或黑客可以让它向右走吗?

EN

Stack Overflow用户

发布于 2022-08-17 15:41:26

如果.scrollTo.rightToLeft,则通过编程滚动(与layoutDirection一起)到onAppear中的视图锚点,可以得到正确的滚动位置。如果layoutDirection.leftToRight,也可以工作。

代码语言:javascript
运行
复制
struct ScrollViewRTL<Content: View>: View {
    var showsIndicators: Bool
    @ViewBuilder var content: Content
    @Environment(\.layoutDirection) private var layoutDirection
        
    init(showsIndicators: Bool = true, @ViewBuilder content: () -> Content) {
        self.showsIndicators = showsIndicators             
        self.content = content()
    }
        
    var body: some View {
       ScrollViewReader { proxy in
         ScrollView(.horizontal, showsIndicators: showsIndicators) {
             content
                 .id("RTL")
                 .onAppear {
                     if layoutDirection == .rightToLeft {
                           proxy.scrollTo("RTL", anchor: .trailing)
                     }
                 }
             }
         }
     }
}

用法:

代码语言:javascript
运行
复制
 ScrollViewRTL {
     HStack {
         Text("b1")
         Text("b2")
         Text("b3")
     }
 }
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61166423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档