Установка высоты в представлении и игнорирование безопасного верхнего края - PullRequest
0 голосов
/ 07 июня 2019

Я хочу отобразить 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)

        }
    }
}

Я закомментировал метод фрейма.Вот результаты при выполнении приведенного выше кода (левое изображение) и без закомментированного метода кадра (правое изображение):

enter image description hereenter image description here

Мы можем проверить, что левое изображение, поэтому без метода рамки, края игнорируются в верхней части, что хорошо.На правом изображении с примененным методом высоты рамки верхний край больше не игнорируется.

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

1 Ответ

0 голосов
/ 07 июня 2019

Оказывается, мне просто нужно добавить 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
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...