有没有任何方法可以使用SwiftUI查找父视图的大小,我已经浏览了文档和示例,并且似乎大多数(如果不是全部)都是硬编码的大小,理想情况下,我想找到父视图的大小然后根据父项大小的百分比设置子视图大小(可能是在某些快速帮助类中),例如
func getSizeFromParent(fractionHeight: Int, fractionWidth: Int) -> Size
{
var parentSize = // is there a way to get parent size somehow
var newHeight = parentSize.height * fractionHeight
var newWidth = parentSize.width * fractionWidth
return Size(newHeight, newWidth)
}
请注意,上面的代码并不意味着是一个工作示例,而只是伪代码
答案 0 :(得分:1)
在SwiftUI中,父母给孩子建议一个尺寸,但是孩子们决定如何处理。他们可以忽略它,部分使用它或完全听话。
正如Radagast在您的问题中评论的那样,GeometryReader是SwiftUI用来在视图树层次结构中传递尺寸的方式。
我写了一篇详细的文章,介绍如何使用GeometryReader和GeometryProxy,并提供了一些用例示例。 GeometryReader与.background()和.overlay()修饰符结合使用也非常有用,因为它可以让您“窃取” 另一个视图的几何。
有关更多信息,请检查:https://swiftui-lab.com/geometryreader-to-the-rescue/