如何在 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 教程。

我建议您在继续之前先做这些。

https://developer.apple.com/tutorials/swiftui/