Как это `UIScreen.main.bounds.высота кадра(в: .global).минИ » ниже края экрана в iOS?

#ios #swift #swiftui

Вопрос:

Я делал (это)[https://www.vadimbulavin.com/swiftui-popup-sheet-popover/] учебник, и я понимаю в нем все, кроме этого расширения.

 private extension GeometryProxy {
    var belowScreenEdge: CGFloat {
        UIScreen.main.bounds.height - frame(in: .global).minY
    }
}
 

Я сделал тест, чтобы посмотреть, что происходит

 import SwiftUI

struct ContentView: View {
    var body: some View {
        GeometryReader {gproxy in
            Button("Do something") {
                print("The bounds height is: (UIScreen.main.bounds.height)")
                print("The frame global: (gproxy.frame(in: .global))")
                print("The minY is: (gproxy.frame(in: .global).minY)")
                print("The belowScreenEdge is: (UIScreen.main.bounds.height - gproxy.frame(in: .global).minY)")
            }
        }
    }
}
 

и распечатка, которую я получаю в консоли, такова

 The bounds height is: 844.0
The frame global: (0.0, 47.0, 390.0, 763.0)
The minY is: 47.0
The belowScreenEdge is: 797.0
 

Мой вопрос в том, как 797.0 может представлять что-то под экраном?

Ответ №1:

Я вижу, что ниже экрана на самом деле высота экрана — gproxy.frame.y

Таким образом, он в основном вычисляет, насколько далеко находится верхняя часть gproxy от нижней части экрана.

Если вы видите, что minY равен: 47,0, а нижний экран равен: 797,0, всего получается высота экрана, т. е. 844,0

Я думаю, вы неправильно поняли часть 797.0, представляющую что-то под экраном?

Дайте мне знать, если это поможет или у вас возникнут еще какие-либо вопросы.

Спасибо.