首页 > 解决方案 > SwiftUI 中的相对大小

问题描述

在使用 HTML/CSS 来设置布局样式时,我喜欢使用单位vwem并且%我很少使用px单位。我的原因是用户可能会更改字体大小以获得更好的可读性,或者用户正在使用不同的设备或浏览器,它们可能具有不同的屏幕大小或不同的默认字体大小。

.example {
    font-size: 2em;
    padding: 2em;
}

在 SwiftUI 中,我能找到的CGFloat只是GeometryProxy. Apple 似乎知道在使用padding(nil)修饰符或省略spacingaHStackVStack. 但我不知道如何获得这些值。

我见过一些复杂的解决方案,但我的应用程序需要大量填充。现在我可以将一个计算出的相对填充从我的父视图传递给孩子和那些 and 和 and 的孩子。然而,这似乎是非常错误的。拥有这样ObservableObject的价值似乎也是一种不好的做法。

GeometryReader每个子视图中都有一个也是不可能的,因为GeometryReader占用了所有空间,我不希望我的子视图使用这些空间,因为它们应该与它们的内容一样高。

我是否忽略了某些东西,或者最好的方法是什么?

TL;博士

SwiftUI 中是否有任何相对单位可用于尺寸(如emvw在 CSS 中)而不GeometryProxy向下传递给每个子视图?我不能GeometryReader在每个子视图中使用,因为它破坏了我的布局。或者,如何获取默认的系统填充大小?

标签: swiftswiftui

解决方案


推荐阅读