swiftui - 获取父大小 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)
}
请注意,上面的代码并不是一个工作示例,只是伪代码
解决方案
在 SwiftUI 中,父母会向孩子建议尺寸,但孩子自己决定如何处理。他们可以忽略它,部分使用它,或者完全听话。
正如 Radagast 在您的问题中评论的那样,GeometryReader 是 SwiftUI 用来在视图树层次结构中传递大小的方式。
我写了一篇关于如何使用 GeometryReader 和 GeometryProxy 的详细文章,并包含了一些用例示例。GeometryReader 与 .background() 和 .overlay() 修饰符结合使用也非常有用,因为它可以让您“窃取”另一个视图的几何图形。
有关更多信息,请查看:https ://swiftui-lab.com/geometryreader-to-the-rescue/
推荐阅读
- css - Bootstrap 4工具提示文本左对齐
- mysql - SQL:返回关于另一个值的唯一值列表
- hadoop - 我可以将 API 与 STORM 或 KAFKA 连接吗
- java - 我可以在两个 openapi 客户端之间共享模型吗?
- haskell - 用纯函数式语言制作游戏
- node.js - 未使用自制 npm,正在使用 npm 系统
- angular-material - 如何在多列下拉列表中过滤 Angular Mat Table
- c# - 如何在 asp.net core 2.0 Web 应用程序中获取浏览网站的用户的用户名?
- javascript - 如何使用来自另一个数组的值的 javascript 标记我的数组?
- flutter - 在没有 onPressed 的情况下自动运行 StatefulWidget