【问题标题】:SwiftUI simple question following Apple's guide遵循 Apple 指南的 SwiftUI 简单问题
【发布时间】:2020-11-23 11:11:55
【问题描述】:

我刚刚开始在名为 creating and combining views 的网站上关注 Apple 的 SwiftUI 课程。

我注意到 ContentView 结构中显示的代码中有一个我无法理解的奇怪行为,这是代码和结果的图像。

struct ContentView: View {
var body: some View {
    VStack {
        MapView()
            .edgesIgnoringSafeArea(.top)
            .frame(height: 300)
        
        CircleImage()
            .offset(y : -130)
            .padding(.bottom, -130)

        VStack(alignment: .leading) {
            Text("Turtle Rock")
                .font(.title)
            HStack {
                Text("Joshua Tree National Park")
                    .font(.subheadline)
                Spacer()
                Text("California")
                    .font(.subheadline)
            }
        }
        .padding()
        
        Spacer()
    }
}

}

这里特别注意,但是将 MapView 的修饰符的顺序更改为时。

        MapView()
            .frame(height: 300)
            .edgesIgnoringSafeArea(.top)

circleView 的中心不再位于 mapView 的底部,见图。

我注意到当我删除底部的 Spacer() 时不会发生这种情况,

那么,这里到底发生了什么?为什么修饰符的顺序很重要? Spacer() 如何以这种方式影响其他视图?

感谢您的帮助。

【问题讨论】:

  • 这就是为什么:Why modifier order matters。因为您正在创建一个框架而没有忽略第二个代码上的安全区域。

标签: ios swiftui mkmapview


【解决方案1】:

Why modifier order matters.

因为您在创建框架时没有忽略第二个代码上的安全区域。

此外,当您添加垫片时,您的底部床单会变得更高。所以看起来不错,但是一点效果都没有。

在这种情况下,最好将圆形图像和底部内容放在同一个容器中。所以它将始终居中。例如:

VStack {
    CircleImage()
        .offset(y : -130)
        .padding(.bottom, -130)
    
    VStack(alignment: .leading) {
        Text("Turtle Rock")
            .font(.title)
        HStack {
            Text("Joshua Tree National Park")
                .font(.subheadline)
            Spacer()
            Text("California")
                .font(.subheadline)
        }
    }
    .padding()
    
    Spacer()
}

【讨论】:

  • 感谢您的回答!我确实希望有一些像样的约束系统,因为部分问题是硬编码的偏移量,我想我会发现
  • 是的,我同意。 Tt 也不是很有效 :) 我认为他们不在乎,因为他们试图专注于教程的要点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2020-10-20
相关资源
最近更新 更多