简体   繁体   English

使用 Geometry Reader 和 ScrollVIew 时,SwiftUI 视图会向右偏移

[英]SwiftUI View gets offset to the right when using Geometry Reader and ScrollVIew

I am using a ScrollView inside of a GeometryReader in SwiftUI, but everything inside the scroll view gets offset to the left, or at least the items inside the scroll view think that the boundary of the view extends far past the actual boundary of the view.我在 SwiftUI 中的 GeometryReader 内部使用了 ScrollView,但是滚动视图中的所有内容都向左偏移,或者至少滚动视图中的项目认为视图的边界远远超出了视图的实际边界。 as seen below.如下所示。 I am using the public release of Xcode 12 from the mac app store along with macOS Big Sur beta 8.我正在使用 Mac 应用商店中公开发布的 Xcode 12 以及 macOS Big Sur beta 8。

Here's the code to recreate this.这是重新创建它的代码。

struct TextClassifierMMLView: View {
    @State var nLayers = 5
    var body: some View {
        GeometryReader{ geo in
            ScrollView{
                VStack{
                    GrayNumberStepperCard(text: "Layers", geo: geo, upperRange: 1000, lowerRange: 1, value: self.$nLayers).padding()
                }
            }
        }.navigationTitle(Text("Text Classifier"))
    }
}


struct GrayNumberStepperCard: View {
    @State var text: String
    @State var geo: GeometryProxy
    @State var upperRange: Int
    @State var lowerRange: Int
    @Binding var value: Int
    
    var body: some View {
        HStack{
            Text(text)
                .font(.custom("OpenSans-SemiBold", size: 14))
                .foregroundColor(.accentColor)
            
            Spacer()
            
            Stepper(value: $value, in: lowerRange...upperRange) {
                Text("\(self.value)")
            }.padding()
        }.frame(width: geo.size.width, height: 15)
        .padding()
        .background(
            RoundedRectangle(cornerRadius: 4)
                .foregroundColor(Color(hex: "F0F5F5"))
        )
        .padding(.horizontal)
        .padding(.vertical, 5)
    }
}

查看项目离开屏幕的屏幕截图

You don't need GeometryReader in this layout at all, it only confuses automatic layout.在这个布局中你根本不需要GeometryReader ,它只会混淆自动布局。

Here is modified code.这是修改后的代码。 Tested with Xcode 12 / iOS 14使用 Xcode 12 / iOS 14 测试

在此处输入图片说明

struct TextClassifierMMLView: View {
    @State var nLayers = 5
    var body: some View {
            ScrollView{
                 VStack{
                      GrayNumberStepperCard(text: "Layers", upperRange: 1000, lowerRange: 1, value: self.$nLayers).padding()
                 }
        }.navigationTitle(Text("Text Classifier"))
    }
}


struct GrayNumberStepperCard: View {
    @State var text: String
    @State var upperRange: Int
    @State var lowerRange: Int
    @Binding var value: Int

    var body: some View {
        HStack{
            Text(text)
                .font(.custom("OpenSans-SemiBold", size: 14))
                .foregroundColor(.accentColor)

            Spacer()

            Stepper(value: $value, in: lowerRange...upperRange) {
                Text("\(self.value)")
            }.padding()
        }.frame(height: 15)
        .padding()
        .background(
            RoundedRectangle(cornerRadius: 4)
                .foregroundColor(Color.red)
        )
        .padding(.horizontal)
        .padding(.vertical, 5)
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 SwiftUI 使用带有 ForEach 的几何读取器 - SwiftUI Using Geometry Reader with ForEach 尝试使用几何阅读器和导航栏获得全宽视图 - SwiftUI - Trying to get full width of view using geometry reader and navigation bar - SwiftUI SwiftUI:如何在不使用几何阅读器的情况下根据框架的大小计算视图的大小? - SwiftUI: How to calculate a view's size based on it's frame's size without using a Geometry Reader? ScrollView SwiftUI 中的内容偏移 - Content offset in ScrollView SwiftUI SwiftUI:ScrollView 偏移滚动内容 - SwiftUI: ScrollView Offset Scroll Content 如何通过页面视图从视图传递滚动视图偏移值 Controller Swiftui - How to pass scrollview offset value from View through Page View Controller Swiftui 有没有办法使用几何阅读器将我的 SwiftUI 图像的宽度定义为相对于屏幕尺寸? - Is there a way to define the width of my SwiftUI Image to be relative to screen size using Geometry Reader? 在视图加载时滚动到滚动视图中选定的 position - SwiftUI - Scroll to selected position in scrollview when view loads - SwiftUI 在移动视图内部时出现奇怪的 ScrollView 行为。 SwiftUI - Weird ScrollView behaviour when its inside of moving View. SwiftUI 在位于滚动视图上方的 SwiftUI 视图上使用 .shadow 修饰符,当其他视图重叠时可以看到可见的阴影线 - Using the .shadow modifier on a SwiftUI View that sits above a scrollview, a visible shadow line can be seen when other views overlap
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM