swiftui - SwiftUI - 切换工具栏状态
问题描述
目标:根据所选对象(图像、文本、形状)切换状态的工具栏
我做了什么:
iimport SwiftUI
struct ToolbarMaster : View {
@State var showtoolbar = false
var toolbarmaster: [ToolbarBezier] = []
var body: some View {
HStack {
Spacer()
VStack {
Button(action: {self.showtoolbar.toggle() }) {
Image(systemName: "gear")
}
.padding(.leading)
Image("dog")
Text("Im a text")
.font(.largeTitle)
.color(.black)
Path(ellipseIn: CGRect(x: 0, y: 0, width: 100, height: 100))
.fill(Color.black)
}
NavigationView {
ZStack {
ToolbarBezier()
ToolbarArtwork()
}
.navigationBarTitle(Text("Toolbar Name"), displayMode: .inline)
}
.frame(width: 320.0)
}
}
}
如何在选择不同对象的同时更改状态?
我需要以动态方式(不是硬编码)来做,这样当任何对象是图像时,它都会显示图像工具栏,等等。
解决方案
我会这样做:
@State
为工具栏的每个状态添加一个布尔变量
@State private var textSelected = false
.onTap
向场景中的每个“活动”视图添加一个事件:
Text("Tap me!")
.tapAction {
self.textSelected = true
}
- 根据“状态”变量更改工具栏的外观
if self.textSelected {
self.showTextToolbarContent()
}
当然,showTextToolbarContent()
是一个本地函数返回一个some View
带有为文本选择量身定制的工具栏内容。
这显然只是一个简单的例子。在您的实际实现中,您可能会为“选择”状态使用一个布尔数组,为当前选择的视图使用另一个状态变量。