小编Oua*_*lal的帖子

SwiftUI ScrollView 水平 RTL 无法正常工作

我正在尝试在我的 ios 上支持 RTL 模式,该模式是使用 swiftUI 构建的,在执行此操作以更改布局方向时一切都很好:

.environment(\.layoutDirection, .rightToLeft)
Run Code Online (Sandbox Code Playgroud)

仅使用水平 ScrollView ,它无法正常工作

当我这样做时:

 ScrollView(.horizontal) {
            HStack{
                Text("b1")
                Text("b2")
                Text("b3")
            }
        } .environment(\.layoutDirection, .rightToLeft)
Run Code Online (Sandbox Code Playgroud)

项目位置将旋转,但 HSTACK 将始终保持在左侧,如下面的屏幕截图所示: 在此输入图像描述

有什么解决方案或技巧可以使其向右吗?

uiscrollview right-to-left swiftui hstack

10
推荐指数
2
解决办法
2625
查看次数

当 ObservedObject 更改时,SwiftUI 视图不会更新

我有一个内容视图,其中使用 ForEach 显示项目列表

@ObservedObject var homeVM : HomeViewModel

var body: some View {
    ScrollView (.horizontal, showsIndicators: false) {
        HStack(spacing: 10) {
            Spacer().frame(width:8)
            ForEach(homeVM.favoriteStores , id: \._id){ item in
                StoreRowOneView(storeVM: item)
            }
            Spacer().frame(width:8)
        }
    }.frame(height: 100)
}
Run Code Online (Sandbox Code Playgroud)

而我的ObservableObject包含

@Published var favoriteStores = [StoreViewModel]()

StoreViewModel定义如下

class StoreViewModel  : ObservableObject {
    @Published var store:ItemStore

    init(store:ItemStore) {
        self.store = store
    }

    var _id:String {
        return store._id!
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我直接填充数组,它工作正常,我可以看到商店列表,但如果我在网络调用(后台作业)后填充数组,则视图没有收到更改通知

 StoreApi().getFavedStores(userId: userId) { (response) in
            guard response != nil else { …
Run Code Online (Sandbox Code Playgroud)

xcode mvvm observable swift swiftui

6
推荐指数
1
解决办法
3701
查看次数

标签 统计

swiftui ×2

hstack ×1

mvvm ×1

observable ×1

right-to-left ×1

swift ×1

uiscrollview ×1

xcode ×1