我正在使用拖动手势来更改Color对象的色相/饱和度。想法是,您可以在屏幕上拖动并查看所有色相值(0.0-1.0),并且饱和度从上到下相同。
我需要屏幕的大小(或视图,这是一个单视图应用程序),以便将CGPoint值规范化/转换为0.0-1.0之间的范围,但是无论如何我都无法找到该信息。有很多讨论此话题的线程,但是当我只想检索它时,他们通常谈论如何设置视图的宽度/高度。
我一切正常,只是我正在使用硬编码值对其进行规范化。
查看GeometryReader。它允许您获取当前视图的大小:
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)
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句