获取父级尺寸SwiftUI

时间:2019-07-09 14:00:59

标签: swiftui

有没有任何方法可以使用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)
}

请注意,上面的代码并不意味着是一个工作示例,而只是伪代码

1 个答案:

答案 0 :(得分:1)

在SwiftUI中,父母给孩子建议一个尺寸,但是孩子们决定如何处理。他们可以忽略它,部分使用它或完全听话。

正如Radagast在您的问题中评论的那样,GeometryReader是SwiftUI用来在视图树层次结构中传递尺寸的方式。

我写了一篇详细的文章,介绍如何使用GeometryReader和GeometryProxy,并提供了一些用例示例。 GeometryReader与.background()和.overlay()修饰符结合使用也非常有用,因为它可以让您“窃取” 另一个视图的几何。

有关更多信息,请检查:https://swiftui-lab.com/geometryreader-to-the-rescue/