При работе с HTML / CSS, для стилизации макета мне нравится использовать единицы измерения vw
, em
и %
, я редко использую единицы px
. Для меня причина в том, что пользователь может изменить размер шрифта для лучшей читабельности, или пользователь использует другое устройство или браузер, который может иметь другой размер экрана или другой размер шрифта по умолчанию.
.example {
font-size: 2em;
padding: 2em;
}
В SwiftUI все, что я могу найти, это CGFloat
, данное мне GeometryProxy
. Похоже, Apple знает, какой размер системы использовать при использовании модификатора padding(nil)
или опускании spacing
в HStack
или VStack
. Но я не могу понять, как получить эти значения.
Я видел несколько сложных решений, но мое приложение требует много заполнения. Теперь я могу передать вычисленное относительное отступление от моего родительского представления детям и детям тех и, и и и. Тем не менее, это кажется крайне неправильным. Наличие ObservableObject
с таким значением также кажется плохой практикой.
Наличие GeometryReader
в каждом дочернем представлении также невозможно, поскольку GeometryReader
занимает все пространство, которое я надеваю не хотят с моими дочерними взглядами, потому что они должны быть такими же высокими, как их содержание.
Я что-то пропускаю, или как лучше это сделать?
TL; DR
Есть ли в SwiftUI относительные единицы измерения для размеров (например, em
или vw
в CSS), не передавая GeometryProxy
каждому дочернему виду? Я не могу использовать GeometryReader
в каждом дочернем виде, потому что это нарушает мой макет. Или как получить размер системного отступа по умолчанию?