如何在 SwiftUI 中更改视图
How to alter a View in SwiftUI
View使用后如何修改?
例如:
var body: some View {
Button (action: {
// Code to move button's position. self.offset(x:y:) doesn't work, Xcode says 'result of call to offset is unused'
}) {
Text("How to I alter the colour of this text?") // Change colour somewhere else in my script
.background(Color.black)
}
.frame(alignment: .leading)
}
我需要修改实例化后的视图。因为一切都是视图,从 .frame
到 .background
,难道我不需要将它们 reference/delete/modify/add 到堆栈吗?
颜色的变化就是状态的变化。
您可以使用 属性 包装器 @State
,它是 SwiftUI 的一部分。
在精彩的 WWDC 2019 演讲中了解更多信息:
Introducing SwiftUI: Building Your First App
struct ContentView: View {
@State var someState: Bool = true
var body: some View {
Button (action: {
// The state is toggled, and a redraw is triggered
self.someState.toggle()
}) {
Text("How do I alter the colour of this text?")
// Set color according to the state
.foregroundColor(someState ? Color.black : Color.pink)
}
.frame(alignment: .leading)
}
}
当 @State
发生变化时,将重绘视图 body
。
SwiftUI
与使用 UIKit 相比,需要彻底改变思维模式。
您所指的"view"实际上并不是视图。它是一组关于如何将某些内容渲染到屏幕上的说明。所以你不能通过引用等访问它...
要更改视图的外观,您可以在创建视图时对其使用修饰符。
例如...
Button(action: {}) {
Text("Hello world!")
.foregroundColor(.yellow)
}
这真的取决于你想用它做什么。
话虽如此。很明显,您没有花任何时间观看 WWDC 视频或浏览 SwiftUI 教程。
我建议您在继续之前先做这些。
View使用后如何修改? 例如:
var body: some View {
Button (action: {
// Code to move button's position. self.offset(x:y:) doesn't work, Xcode says 'result of call to offset is unused'
}) {
Text("How to I alter the colour of this text?") // Change colour somewhere else in my script
.background(Color.black)
}
.frame(alignment: .leading)
}
我需要修改实例化后的视图。因为一切都是视图,从 .frame
到 .background
,难道我不需要将它们 reference/delete/modify/add 到堆栈吗?
颜色的变化就是状态的变化。
您可以使用 属性 包装器 @State
,它是 SwiftUI 的一部分。
在精彩的 WWDC 2019 演讲中了解更多信息:
Introducing SwiftUI: Building Your First App
struct ContentView: View {
@State var someState: Bool = true
var body: some View {
Button (action: {
// The state is toggled, and a redraw is triggered
self.someState.toggle()
}) {
Text("How do I alter the colour of this text?")
// Set color according to the state
.foregroundColor(someState ? Color.black : Color.pink)
}
.frame(alignment: .leading)
}
}
当 @State
发生变化时,将重绘视图 body
。
SwiftUI
与使用 UIKit 相比,需要彻底改变思维模式。
您所指的"view"实际上并不是视图。它是一组关于如何将某些内容渲染到屏幕上的说明。所以你不能通过引用等访问它...
要更改视图的外观,您可以在创建视图时对其使用修饰符。
例如...
Button(action: {}) {
Text("Hello world!")
.foregroundColor(.yellow)
}
这真的取决于你想用它做什么。
话虽如此。很明显,您没有花任何时间观看 WWDC 视频或浏览 SwiftUI 教程。
我建议您在继续之前先做这些。