Вам нужно посмотреть WWDC 2019 Сессия 237. Создание пользовательских представлений с помощью SwiftUI , потому что Дейв Абрахамс обсуждает эту тему и использует Text
в своих примерах.
Для краткого изложения, чтоДейв подробно объясняет:
- Родитель (в данном случае это корневое представление, созданное системой и заполняющее экран), предлагает размер своему дочернему элементу.
- child выбирает собственный размер , потребляя столько или меньше предлагаемого размера, сколько ему нужно.
- Родитель размещает дочерний элемент в координатном пространстве родителя на основе различных параметров, включая размер, выбранный дочерним элементом..
Таким образом, вы не можете заставить маленький Text
заполнить экран, потому что Text
откажется использовать больше места, чем необходимо для его содержимого.
Если выЕсли вы хотите, чтобы красный фон заполнил весь экран, вы можете обернуть Text
в расширяемый вид, принудительно развернуть расширяемый вид до полного размера и установить фон расширяемого вида.Это работает:
var body: some View {
ZStack {
Spacer()
Text("Hello")
}
.background(Color.red)
}
Spacer
принимает любой размер, предлагаемый его родителем, поэтому ZStack
не может уменьшиться до размера только Text
.