SwiftUI (Blätter) – PresentationDetents verhält sich unter iOS 16–18 falsch, funktioniert aber unter iOS 26 ordnungsgemäIOS

Programmierung für iOS
Anonymous
 SwiftUI (Blätter) – PresentationDetents verhält sich unter iOS 16–18 falsch, funktioniert aber unter iOS 26 ordnungsgemä

Post by Anonymous »

Ich verwende einen benutzerdefinierten Modifikator namens AutoSheetDetentModifier, um die Größe eines Blatts automatisch basierend auf seinem Inhalt anzupassen.
Unter iOS 26 funktioniert es wie erwartet: Die Inhaltshöhe wird gemessen und das Blatt wird verkleinert, um dieser Höhe zu entsprechen.
Unter iOS 16, 17 und 18 funktioniert derselbe Code jedoch nicht.
Die Inhaltshöhe wird immer noch gemessen, das Blatt jedoch nicht seine Höhe reduzieren. Stattdessen bleibt das Blatt größer und der Inhalt erscheint vertikal zentriert. (Beachten Sie, dass content() ScrollView enthält)

Code: Select all

public struct AutoSheetDetentModifier: ViewModifier {
@State private var height: CGFloat = 380 // default value to avoid bouncing

public func body(content: Content) -> some View {
content
.modifier(MeasureHeightViewModifier(height: $height))
.presentationDetents([.height(height)])
}
}

public struct MeasureHeightViewModifier: ViewModifier {
@Binding var height: CGFloat

public func body(content: Content) -> some View {
content
.fixedSize(horizontal: false, vertical: true)
.background(
GeometryReader { geo -> Color in
DispatchQueue.main.async {
height = geo.size.height
}
return Color.clear
}
)
}
}

extension View {
public func applyAutoSheetDetent() -> some View {
self
.modifier(AutoSheetDetentModifier())
}
}

Code: Select all

public var body: some View {
VStack {
header()
content() // this content includes scrollview inside it
footer()
}
.background(Color.customGray)
.applyAutoSheetDetent()
}
Screenshot von iOS 26 (funktioniert wie erwartet):
Image

Screenshot von iOS 18 (funktioniert nicht):
Image

Wie kann ich dafür sorgen, dass .presentationDetents(.height) das Blatt unter iOS 16–18 korrekt verkleinert, genau wie unter iOS 26?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post