Я хочу отобразить 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)
}
}
}
Я закомментировал метод фрейма.Вот результаты при выполнении приведенного выше кода (левое изображение) и без закомментированного метода кадра (правое изображение):
Мы можем проверить, что левое изображение, поэтому без метода рамки, края игнорируются в верхней части, что хорошо.На правом изображении с примененным методом высоты рамки верхний край больше не игнорируется.
Насколько я понимаю, порядок модификаторов, применяемых к представлениям, важен.Я пробовал различные заказы, но я не могу понять, как создать представление MapView с половиной высоты экрана высоты и игнорируя верхний край.Структура 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)
}
}