#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, представляющую что-то под экраном?
Дайте мне знать, если это поможет или у вас возникнут еще какие-либо вопросы.
Спасибо.