Это моя часть .sheet кода в MapView
Код: Выделить всё
.sheet(item: $selectedCity) { city in
DetailCityView(for: city)
.presentationDetents([.fraction(0.15), .large])
}
Код: Выделить всё
struct DetailCityView: View {
var city: City
@Environment(\.dismiss) var dismiss
@Environment(\.modelContext) var modelContext
init(for city: City) {
self.city = city
}
var body: some View {
VStack {
HStack {
VStack(alignment: .leading) {
Text(city.name)
.font(.title2)
.fontWeight(.bold)
Text(city.country)
.font(.subheadline)
.foregroundStyle(.gray)
.lineLimit(2)
.padding(.trailing)
}
Spacer()
Button{
dismiss()
} label: {
Image(systemName: "xmark.circle.fill")
.resizable()
.frame(width: 24, height: 24)
.foregroundStyle(.gray, Color(.systemGray5))
}
}.padding(.bottom)
let uiImage = UIImage(data: city.mainImage.imageData)!
Image(uiImage: uiImage)
.resizable()
.aspectRatio(contentMode: .fill)
.frame(height: 150)
.clipShape(RoundedRectangle(cornerRadius: 15))
Button {
deleteCity(city: city)
dismiss()
} label: {
Label("Delete City", systemImage: "trash")
.bold()
.foregroundStyle(.white)
.frame(maxWidth: .infinity, alignment: .center)
.frame(height: 50)
.background(.red)
.clipShape(RoundedRectangle(cornerRadius: 10))
}
.buttonStyle(.custom)
.padding(.top)
}
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
.padding()
}
func deleteCity(city: City) {
withAnimation {
city.travel?.cities.removeAll { $0.id == city.id }
do { try modelContext.save() }
catch { print("Failed to save changes: \(error)") }
}
}
}
Использование ViewThatFits тоже не сработало.
Я видел этот ответ на вопрос другого пользователя, у которого была такая же проблема, и я не уверен, есть ли более простой способ сделать это.
Вот как это выглядит сейчас:

С увеличенной презентацией< /code>:

Как я хочу, чтобы это выглядело например:

На данный момент это не такая уж большая проблема, потому что я могу увеличить размер PresentationDetents, но я также хочу поместить немного текста и, возможно, что-то еще, что будет использовать большую часть этой высоты, и мне нравится, как это выглядит маленький.
Подробнее здесь: https://stackoverflow.com/questions/793 ... the-middle