gpt4 book ai didi

swift - 在 View 中设置高度并忽略安全顶部边缘

转载 作者:行者123 更新时间:2023-11-30 10:42:27 24 4
gpt4 key购买 nike

我想显示一个 MKMapView ,其高度为屏幕高度的一半,并忽略顶部边缘。这是我的代码:

import SwiftUI
import MapKit

struct ContentView : View {
var body: some View {
VStack {
MapView()
.border(Color.red, width: 1)
.edgesIgnoringSafeArea(.top)
// .frame(height: UIScreen.main.bounds.height / 2)

Image("turtlerock")
.clipShape(Circle())
.overlay(Circle().stroke(Color.red, lineWidth: 1))

Text("Test")
.font(.title)

}
}
}

我注释掉了frame方法。这些是执行上述代码时的结果(左图),并且未注释掉框架方法(右图):

enter image description here enter image description here

我们可以检查左侧图像,因此如果没有框架方法,顶部的边缘将被忽略,这很好。在应用了帧高度方法的右侧图像中,顶部边缘不再被忽略。

根据我的理解,应用于 View 的修饰符的顺序很重要。我尝试了各种命令,但我无法弄清楚如何创建高度为屏幕高度一半并忽略顶部边缘的 MapView View 。 MapView结构体定义如下:

import MapKit
import SwiftUI

struct MapView : UIViewRepresentable {
func updateUIView(_ uiView: MKMapView, context: Context) {
let coordinate = CLLocationCoordinate2D(latitude: 34.011286, longitude: -116.166868)
let span = MKCoordinateSpan(latitudeDelta: 2.0, longitudeDelta: 2.0)
let region = MKCoordinateRegion(center: coordinate, span: span)

uiView.setRegion(region, animated: true)
}

func makeUIView(context: Context) -> MKMapView {
MKMapView(frame: .zero)
}
}

最佳答案

结果我只需要在最后添加一个 Spacer() 即可:

struct ContentView : View {
var body: some View {
VStack {
MapView()
.border(Color.red, width: 1)
.edgesIgnoringSafeArea(.top)
.frame(height: UIScreen.main.bounds.height / 2)

Image("turtlerock")
.clipShape(Circle())
.overlay(Circle().stroke(Color.red, lineWidth: 1))

Text("Test")
.font(.title)

Spacer() // New line
}
}
}

关于swift - 在 View 中设置高度并忽略安全顶部边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56493617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com