Моя цель состоит в том, чтобы сделать представленный лист, подходящий для его содержания на iOS 16 и выше, используя презентацию. Не хочу, чтобы второй нижний лист был перетаскиваемым, он должен оставаться размером, рассчитанным по высоте содержания. < /p>
Проблем очень раздражает и в конечном итоге с разными результатами в зависимости от версий. /p>
При запуске на iPhone 15 с использованием iOS 18 Отпечатана высота будет:
height: 0.0 < /p>
Я пытался использовать ключ предпочтения , но затем, когда лист будет перетаскиваться, высота листов, конечно, будет обновлена. Я также пытался использовать .background вместо наложения, задачи, а не на onpear и т. Д. /strong> < /p>
Это минимальный воспроизводимый пример код: < /p>
import SwiftUI
@main
struct experimentingApp: App {
var body: some Scene {
WindowGroup {
ContentView(viewModel: .init())
}
}
}
enum ActiveSheet: Identifiable {
case sheetOne, sheetTwo
var id: String {
switch self {
case .sheetOne:
"sheet-one"
case .sheetTwo:
"sheet-two"
}
}
}
final class ViewModel: ObservableObject {
@Published var activeSheet: ActiveSheet? = .sheetOne
}
struct ContentView: View {
@ObservedObject var viewModel: ViewModel
@State var sheetHeight: CGFloat = .zero
var body: some View {
Text("Parent view")
.sheet(isPresented: isPresented(for: .sheetOne), content: {
VStack {
Text("Sheet one")
Button(action: { viewModel.activeSheet = .sheetTwo}, label: { Text("Next")})
}
})
.sheet(isPresented: isPresented(for: .sheetTwo), content: {
VStack(spacing: 0) {
Text("Sheet two")
Text("Sheet two")
}
.overlay(content: {
GeometryReader { proxy in
Color.clear
.ignoresSafeArea(edges: .all)
.onAppear {
print("Height: \(proxy.size.height)")
sheetHeight = proxy.size.height
}
}
})
.presentationDetents([.height(sheetHeight)])
})
}
}
extension ContentView {
func isPresented(for sheet: ActiveSheet) -> Binding {
Binding(
get: { self.viewModel.activeSheet == sheet },
set: { if !$0 { self.viewModel.activeSheet = nil } }
)
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... sing-geome
Различные результаты для разных версий iOS при расчете высоты с использованием Geometry Reader Swiftui ⇐ IOS
Программируем под IOS
1739534704
Anonymous
Моя цель состоит в том, чтобы сделать представленный лист, подходящий для его содержания на iOS 16 и выше, используя презентацию. Не хочу, чтобы второй нижний лист был перетаскиваемым, он должен оставаться размером, рассчитанным по высоте содержания. < /p>
Проблем очень раздражает и в конечном итоге с разными результатами в зависимости от версий. /p>
При запуске на iPhone 15 с использованием iOS 18 Отпечатана высота будет:
height: 0.0 < /p>
Я пытался использовать ключ предпочтения , но затем, когда лист будет перетаскиваться, высота листов, конечно, будет обновлена. Я также пытался использовать .background вместо наложения, задачи, а не на onpear и т. Д. /strong> < /p>
Это минимальный воспроизводимый пример код: < /p>
import SwiftUI
@main
struct experimentingApp: App {
var body: some Scene {
WindowGroup {
ContentView(viewModel: .init())
}
}
}
enum ActiveSheet: Identifiable {
case sheetOne, sheetTwo
var id: String {
switch self {
case .sheetOne:
"sheet-one"
case .sheetTwo:
"sheet-two"
}
}
}
final class ViewModel: ObservableObject {
@Published var activeSheet: ActiveSheet? = .sheetOne
}
struct ContentView: View {
@ObservedObject var viewModel: ViewModel
@State var sheetHeight: CGFloat = .zero
var body: some View {
Text("Parent view")
.sheet(isPresented: isPresented(for: .sheetOne), content: {
VStack {
Text("Sheet one")
Button(action: { viewModel.activeSheet = .sheetTwo}, label: { Text("Next")})
}
})
.sheet(isPresented: isPresented(for: .sheetTwo), content: {
VStack(spacing: 0) {
Text("Sheet two")
Text("Sheet two")
}
.overlay(content: {
GeometryReader { proxy in
Color.clear
.ignoresSafeArea(edges: .all)
.onAppear {
print("Height: \(proxy.size.height)")
sheetHeight = proxy.size.height
}
}
})
.presentationDetents([.height(sheetHeight)])
})
}
}
extension ContentView {
func isPresented(for sheet: ActiveSheet) -> Binding {
Binding(
get: { self.viewModel.activeSheet == sheet },
set: { if !$0 { self.viewModel.activeSheet = nil } }
)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79439321/different-results-for-different-ios-versions-when-calculating-height-using-geome[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия