Как сделать так, чтобы контент располагался сверху на листе SwiftUI, а не посередине?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать так, чтобы контент располагался сверху на листе SwiftUI, а не посередине?

Сообщение Anonymous »

У меня есть представление с картой и лист .sheet, который отображается при нажатии на маркер. Этот лист имеет некоторые .presentationDentents с .fraction, и если дробь слишком мала и не соответствует всему представлению, вместо того, чтобы приклеивать верхнюю часть представления к верхней части листа, она приклеивает середину его часть, оставляя верхнюю часть там, где пользователь ее не видит.
Это моя часть .sheet кода в MapView

Код: Выделить всё

    .sheet(item: $selectedCity) { city in
DetailCityView(for: city)
.presentationDetents([.fraction(0.15), .large])
}
А это мой DetailCityView:

Код: Выделить всё

 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Представление SwiftUI находится посередине, а не сверху.
    Гость » » в форуме IOS
    0 Ответы
    19 Просмотры
    Последнее сообщение Гость
  • Swiftui Phaseanimator сделайте джиттер в листе в листе.
    Anonymous » » в форуме IOS
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Swiftui Phaseanimator сделайте джиттер в листе в листе.
    Anonymous » » в форуме IOS
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Swiftui Phaseanimator сделайте джиттер в листе в листе.
    Anonymous » » в форуме IOS
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Управление диаграммой C#.Net. Мне нужно показать метку панели посередине панели, а не сверху.
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»