gpt4 book ai didi

ios - 如何在 SwiftUI 中获取 View 或屏幕的高度和宽度

转载 作者:行者123 更新时间:2023-12-01 18:35:28 43 4
gpt4 key购买 nike

我正在使用拖动手势来更改颜色对象的色相/饱和度。这个想法是您可以在屏幕上拖动并查看所有色相值 (0.0 - 1.0),以及饱和度从上到下相同。

我需要屏幕的大小(或 View ,这是一个单 View 应用程序),以便将 CGPoint 值规范化/转换为 0.0 - 1.0 之间的范围,但无论如何我都无法找到获取此信息的方法。有很多线程在讨论这个,但他们通常会讨论如何在我只想检索 View 时设置 View 的宽度/高度。

我一切正常,只是我使用硬编码值来规范化它。

最佳答案

调查 GeometryReader .它允许您获取当前 View 的大小:

struct ContentView: View {

var body: some View {
GeometryReader { geo in
VStack {
Text("Hello World!")
Text("Size: (\(geo.size.width), \(geo.size.height))")
}
}
}
}
这是一个示例,您可以在屏幕上拖动以更改色调值:
struct ContentView: View {

@State private var hue: CGFloat = 0

var body: some View {
GeometryReader { geo in
ZStack {
Color.white
.gesture(DragGesture().onChanged({ value in
self.hue = value.location.y / geo.size.height
}))

VStack {
Text("Hello World!")
Text("Size: (\(geo.size.width), \(geo.size.height))")
Text("Hue: \(self.hue)")
}.allowsHitTesting(false)
}
}
.edgesIgnoringSafeArea(.all)
}
}
GeometryReader打破你的 View 布局?看看这个 gist .

关于ios - 如何在 SwiftUI 中获取 View 或屏幕的高度和宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60021403/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com