SwiftUI:奇怪的行为 ScrollView

Posted

技术标签:

【中文标题】SwiftUI:奇怪的行为 ScrollView【英文标题】:SwiftUI: strange behavior 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 修复了它。你解决了吗? 【参考方案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)
    

【讨论】:

看起来更好,但还是很奇怪

以上是关于SwiftUI:奇怪的行为 ScrollView的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:onAppear 的奇怪行为

SwiftUI:NavigationLink 奇怪的行为

SwiftUI TextField (MacOS) 的奇怪行为

SwiftUI:奇怪的行为 ScrollView

SwiftUI 奇怪的动画行为与 systemImage

SwiftUI 中 Stepper 的奇怪行为