gpt4 book ai didi

swift - 在 SwiftUI 中使用获取 View 的宽度

转载 作者:可可西里 更新时间:2023-11-01 00:38:25 42 4
gpt4 key购买 nike

我需要在 SwiftUI 中获取渲染 View 的宽度,这显然不是那么容易。

我的看法是我需要一个返回 View 维度的函数,就这么简单。

var body: some View {
VStack(alignment: .leading) {
Text(timer.name)
.font(.largeTitle)
.fontWeight(.heavy)
Text(timer.time)
.font(.largeTitle)
.fontWeight(.heavy)
.opacity(0.5)
}
}

最佳答案

获取View 尺寸的唯一方法是使用GeometryReader。读取器返回容器的尺寸。

什么是几何阅读器?文档说:

A container view that defines its content as a function of its own size and coordinate space. Apple Doc

所以你可以通过这样做来获得尺寸:

struct ContentView: View {

@State var frame: CGSize = .zero

var body: some View {
HStack {
GeometryReader { (geometry) in
self.makeView(geometry)
}
}

}

func makeView(_ geometry: GeometryProxy) -> some View {
print(geometry.size.width, geometry.size.height)

DispatchQueue.main.async { self.frame = geometry.size }

return Text("Test")
.frame(width: geometry.size.width)
}
}

打印的尺寸是作为内部 View 容器的HStack的尺寸。

您可能会使用另一个 GeometryReader 来获取内部维度。

但请记住,SwiftUI 是一个声明式框架。所以你应该避免计算 View 的维度:

阅读更多示例:

关于swift - 在 SwiftUI 中使用获取 View 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57577462/

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