我正在使用 SwiftUI 开发人员列表页面,iPhone X 屏幕足够大,但 iPhone 8 中的标题不在屏幕上:
然而,在 iPhone 8 或更小的屏幕中,“Find People”离左边太近,“Follow All”甚至在屏幕外:

我知道在 UIKit 自动布局中可以很容易地解决这个问题,但我想知道 SwiftUI 解决这个问题的最佳方法或正确方法是什么,有些答案说使用像 Spacer 或 HStack,但它们都没有实际工作。
var body: some View {
NavigationView {
List {
ForEach(people) {person in
PersonView(person: person)
}
}.navigationBarItems(leading:
VStack(spacing: 10) {
HStack(spacing: 100) {
Text("Find People").font(.system(size: 30)).bold()
Text("Follow All").foregroundColor(Color(ColorUtils.hexStringToUIColor(hex: Constants.THEME.THEME_COLOR)))
}
HStack(spacing: 20) {
Text("Import from: ")
ForEach(socialIcons, id: \.self) {icon in
Image(icon).resizable().frame(width: 25, height: 25)
}
}
}
)
}
}
Run Code Online (Sandbox Code Playgroud) 我知道很多人已经考虑过这个问题,但是我在 Stackoverflow 上找不到任何好的答案,或者即使在 Youtube 的一些著名频道上也找不到纯粹谈论这个的好的教程。
我的问题很简单:
在 SwiftUI 中,我们可能会做很多这样的事情:
Text("Hello World")
.padding(EdgeInsets(top: 3, leading: 3, bottom: 3, trailing: 3))
.background(Color.blue)
.cornerRadius(5)
Run Code Online (Sandbox Code Playgroud)
但是,正如您或任何其他非常有经验和专业的开发人员可能知道的那样,我们绝对不想.padding(EdgeInsets(top: 3, leading: 3, bottom: 3, trailing: 3)).background(Color.blue).cornerRadius(5)为每个“Text(...)”或其他类似“Button”或任何其他 SwiftUI 组件编写代码。我们确实想将 包装.padding(EdgeInsets(top: 3, leading: 3, bottom: 3, trailing: 3)).background(Color.blue).cornerRadius(5)
在某种方法或其他地方。我知道如何在 UIKit 中做到这一点,但问题是我们如何做到这一点,因为 SwiftUI 是一种构建 GUI 的声明性方式?
谢谢。
人们已经知道这看起来很简单,但 Stackoverflow 没有给我答案。基本上我想让图像变暗,就像下面北京古建筑的背景图像一样:
使其变暗,以便其上的标签对比更加明显。
我尝试添加一个图层(Stackoverflow 的答案之一)或添加tintColor,但它们都不起作用,有没有任何方法可以真正起作用?感谢你们。
我使用的是 iOS 13 和 swift 5.1