我开始尝试SwiftUI,我很惊讶,它似乎不是简单的改变一个视图的背景颜色。你如何使用SwiftUI做到这一点?
当前回答
你可以这样做:
.background(Color.black)
围绕着你的视野。
如。从默认模板(我把它包围在一个组):
var body: some View {
VStack {
Text("Hello SwiftUI!")
}
.background(Color.black)
}
为了添加一些不透明度,你也可以添加.opacity方法:
.background(Color.black.opacity(0.5))
你也可以通过CMD +单击视图,然后单击Show SwiftUI Inspector > Background > Your Color来使用视图的inspect元素
其他回答
解决方案:
你可以创建一个彩色视图,并将其设置为VStack背景。
struct ColoredView: UIViewRepresentable {
var color: Color
func makeUIView(context: Context) -> UIView {
let view = UIView()
view.backgroundColor = UIColor(color)
DispatchQueue.main.async {
view.superview?.superview?.backgroundColor = .clear
}
return view
}
func updateUIView(_ uiView: UIView, context: Context) {}
}
用法:
VStack {
Text("VStack with Red backgound")
Text("VStack with Red backgound")
Text("VStack with Red backgound")
Text("VStack with Red backgound")
}.background(ColoredView(color: .red))
结果:
你可以这样做:
.background(Color.black)
围绕着你的视野。
如。从默认模板(我把它包围在一个组):
var body: some View {
VStack {
Text("Hello SwiftUI!")
}
.background(Color.black)
}
为了添加一些不透明度,你也可以添加.opacity方法:
.background(Color.black.opacity(0.5))
你也可以通过CMD +单击视图,然后单击Show SwiftUI Inspector > Background > Your Color来使用视图的inspect元素
要制作一个中央/可重用的后台小部件,您可以这样做-
import SwiftUI
struct BgView<Content>: View where Content: View {
private let content: Content
public init(@ViewBuilder content: () -> Content) {
self.content = content()
}
var body : some View {
ZStack {
Color.black.ignoresSafeArea()
content
}
}
}
并且可以像下面这样轻松地在所有视图中使用-
import SwiftUI
struct TestView: View {
var body: some View {
BgView{
Text("Hello, World!")
}.foregroundColor(.white)
}
}
struct TestView_Previews: PreviewProvider {
static var previews: some View {
TestView()
}
}
Xcode 11.5
简单地使用ZStack添加背景颜色或图像到你的SwiftUI的主视图
struct ContentView: View {
var body: some View {
ZStack {
Color.black
}
.edgesIgnoringSafeArea(.vertical)
}
}
列表:
所有SwiftUI的列表都是由uitableview iOS支持的。所以你需要改变tableView的背景颜色。但由于Color和UIColor值略有不同,你可以去掉UIColor。
struct ContentView : View {
init(){
UITableView.appearance().backgroundColor = .clear
}
var body: some View {
List {
Section(header: Text("First Section")) {
Text("First Cell")
}
Section(header: Text("Second Section")) {
Text("First Cell")
}
}
.background(Color.yellow)
}
}
现在你可以使用你想要的任何背景(包括所有颜色)
首先看看这个结果:
正如你所看到的,你可以像这样设置视图层次结构中每个元素的颜色:
struct ContentView: View {
init(){
UINavigationBar.appearance().backgroundColor = .green
//For other NavigationBar changes, look here:(https://stackoverflow.com/a/57509555/5623035)
}
var body: some View {
ZStack {
Color.yellow
NavigationView {
ZStack {
Color.blue
Text("Some text")
}
}.background(Color.red)
}
}
}
第一个是window:
window.backgroundColor = .magenta
常见的问题是我们还不能删除SwiftUI的HostingViewController的背景色,所以我们不能通过视图层次结构看到一些视图,比如navigationView。您应该等待API或尝试伪造这些视图(不推荐)。
推荐文章
- 我如何改变一个视图的背景颜色?
- 是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
- 如何使用@Binding变量实现自定义初始化
- 如何在PostgreSQL中查看视图的CREATE VIEW代码?
- 如何在Android中进行平滑的图像旋转?
- setBackground vs setBackgroundDrawable (Android)
- 谷歌Chrome显示JSON AJAX响应树,而不是纯文本
- Sass -转换十六进制为RGBa的背景不透明度
- 在ViewPager中替换Fragment
- 在Visual Studio调试器中查看数组?
- SwiftUI文本对齐方式
- 在线性布局中以编程方式设置边距
- 背景图像上的半透明彩色层?
- 如何使梯度背景在android
- 如何创建圆角EditText ?