gpt4 book ai didi

ios - SwiftUI:如何将初始化程序分配给特定对象?

转载 作者:行者123 更新时间:2023-11-28 18:46:06 26 4
gpt4 key购买 nike

我使用 UIScrollView.appearance().backgroundColor 更改我的 ContentView 的背景颜色。但不幸的是,这会产生副作用,即我的 ModalView() 的颜色不再很正常了。

为了解决这个问题,我看到了三种可能的解决方案:

第一个选项是以某种方式将 UIScrollView.appearance().backgroundColor = UIColor.red 分配给第一个 ScrollView

第二个是找到另一种方法来更改我的 ContentView() 的背景颜色。

第三个选项是将 ModalView() 中的 UIScrollView.appearance().backgroundColor 重置为默认设置。 (编辑:我认为现在第三种选择是不可能的)

谢谢你的每一个回答

import SwiftUI

struct ContentView: View {
@State private var show_modal: Bool = false

var body: some View {
UIScrollView.appearance().backgroundColor = UIColor.red // This how I change the backgroundcolor of this View

return NavigationView {
ScrollView { // This ScrollView should be affected by the initializer
VStack(spacing: 12) {
HStack {
Text("Only unimportant content")
Spacer()
}
} .padding(.horizontal).padding(.bottom)
}

.navigationBarTitle(Text("Header"))
.navigationBarItems(
leading:
Button(action: { self.show_modal = true }) {
Image(systemName: "plus")
.padding(.all, 10)
} .sheet(isPresented: self.$show_modal) { ModalView() }.padding(.leading, -10)
)
}
}
}

struct ModalView: View { // This should not be affected by the initializer
@Environment(\.presentationMode) var presentationMode
@State private var name: String = ""

var body: some View {
// UIScrollView.appearance().backgroundColor = UIColor.red // If anyone knows the default value, please enter this here

return NavigationView {
Form {
List {
TextField("This is a TextField", text: $name)
}
}

.navigationBarTitle(Text(""), displayMode: .inline)
.navigationBarBackButtonHidden(true)
.navigationBarItems(
leading:
Button(action: { self.presentationMode.wrappedValue.dismiss() }) {
Text("Cancel")
}.padding(.vertical, 5)
)
}
}
}


这是我的 ModalView() 具有“漂亮”的副作用 enter image description here

在这张图片中,您可以看到是什么让我相信第三种选择是不可能的:
- 所选文本字段的内部变色
- 自动更正建议也变色了
- 开启深色模式后,情况会变得更糟
enter image description here

最佳答案

只需将背景颜色直接应用到 ScrollView 即可。

return VStack{
ScrollView { // This ScrollView should be affected by the initializer
Text("Text 1")
}
.background(Color.red)
ScrollView { // This ScrollView should NOT be affected by the initializer
Text("Text 2")
}
}

关于ios - SwiftUI:如何将初始化程序分配给特定对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58952751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com