mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
Fixing safearea detection in media stream sheet (iOS 16)
This commit is contained in:
parent
7238477952
commit
4ead717431
2 changed files with 19 additions and 4 deletions
|
|
@ -345,11 +345,19 @@ public final class MediaStreamComponent: CombinedComponent {
|
|||
let sheetHeight: CGFloat = isFullscreen
|
||||
? context.availableSize.height
|
||||
: (44 + videoHeight + 40 + 69 + 16 + 32 + 70 + bottomPadding)
|
||||
let isFullyDragged = context.availableSize.height - sheetHeight + state.dismissOffset - context.view.safeAreaInsets.top < 30
|
||||
|
||||
let safeAreaTopInView: CGFloat
|
||||
if #available(iOS 16.0, *) {
|
||||
safeAreaTopInView = context.view.window.flatMap { $0.convert(CGPoint(x: 0, y: $0.safeAreaInsets.top), to: context.view).y } ?? 0
|
||||
} else {
|
||||
safeAreaTopInView = context.view.safeAreaInsets.top
|
||||
}
|
||||
|
||||
let isFullyDragged = context.availableSize.height - sheetHeight + state.dismissOffset - safeAreaTopInView < 30
|
||||
|
||||
var dragOffset = context.state.dismissOffset
|
||||
if isFullyDragged {
|
||||
dragOffset = max(context.state.dismissOffset, sheetHeight - context.availableSize.height + context.view.safeAreaInsets.top)
|
||||
dragOffset = max(context.state.dismissOffset, sheetHeight - context.availableSize.height + safeAreaTopInView)
|
||||
}
|
||||
|
||||
let dismissTapAreaHeight = isFullscreen ? 0 : (context.availableSize.height - sheetHeight + dragOffset)
|
||||
|
|
@ -687,7 +695,7 @@ public final class MediaStreamComponent: CombinedComponent {
|
|||
))
|
||||
}
|
||||
let availableSize = context.availableSize
|
||||
let safeAreaTop = context.view.safeAreaInsets.top
|
||||
let safeAreaTop = safeAreaTopInView
|
||||
|
||||
let onPanGesture: ((Gesture.PanGestureState) -> Void) = { [weak state] panState in
|
||||
guard let state = state else {
|
||||
|
|
|
|||
|
|
@ -132,7 +132,14 @@ final class StreamSheetComponent: CombinedComponent {
|
|||
let size = context.availableSize
|
||||
|
||||
let topOffset = context.component.topOffset
|
||||
let backgroundExtraOffset = context.component.isFullyExtended ? -context.view.safeAreaInsets.top : 0
|
||||
let backgroundExtraOffset: CGFloat
|
||||
if #available(iOS 16.0, *) {
|
||||
// In iOS context.view does not inherit safeAreaInsets, quick fix until figure out how to deal properly:
|
||||
let safeAreaTopInView = context.view.window.flatMap { $0.convert(CGPoint(x: 0, y: $0.safeAreaInsets.top), to: context.view).y } ?? 0
|
||||
backgroundExtraOffset = context.component.isFullyExtended ? -safeAreaTopInView : 0
|
||||
} else {
|
||||
backgroundExtraOffset = context.component.isFullyExtended ? -context.view.safeAreaInsets.top : 0
|
||||
}
|
||||
|
||||
let background = background.update(
|
||||
component: SheetBackgroundComponent(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue