【问题标题】:SwiftUI: strange behavior ScrollViewSwiftUI:奇怪的行为 ScrollView
【发布时间】:2019-11-28 18:41:31
【问题描述】:

使用垂直和水平滚动时,我看不到图像的左上角。 但同时右下角后还有一些空间。 如何解决?

struct TestView: View {
    var body: some View {
        VStack(alignment: .leading) {
            ScrollView([.horizontal, .vertical]) {
                Image(systemName: "keyboard")
                    .resizable()
                    .frame(width:  500.0, height: 500.0)
            }.frame(width:  300.0, height: 300.0)
        }
    }
}

【问题讨论】:

  • 我这里也有同样的问题。根据我的测试,它已在 Xcode 12 中修复,这意味着 SwiftUI 2.0 和/或 iOS 14 修复了它。你解决了吗?

标签: scrollview swiftui


【解决方案1】:

你只需为滚动视图的内容添加一个偏移量

   var body: some View {
      VStack(alignment: .leading) {
          ScrollView([.horizontal, .vertical]) {
              Image(systemName: "keyboard")
                  .resizable()
                .frame(width:  500.0, height: 500.0).offset(x: 100, y: 100)
          }.frame(width:  300.0, height: 300.0)
      }
  }

【讨论】:

  • 偏移值取决于分辨率和方向
  • 那是因为两个帧都是任意的。你可以使用geometryReader来调整它。
【解决方案2】:

怎么样

struct TestView: View {
    var body: some View {
        ScrollView([.horizontal, .vertical]) {
            VStack {
                Spacer(minLength: 200)
                HStack {
                    Spacer(minLength: 200)
                    Image(systemName: "keyboard")
                        .resizable()
                        .frame(width: 300.0, height: 300.0)
                }
            }
        }
        .frame(width: 300.0, height: 300.0)
    }
}

【讨论】:

  • 看起来更好,但还是很奇怪
猜你喜欢
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 2022-01-07
  • 2020-03-16
  • 1970-01-01
相关资源
最近更新 更多