首页 > 解决方案 > 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)

        }

    }

}

我的结果: 在此处输入图像描述

如何在选择不同对象的同时更改状态?

我需要以动态方式(不是硬编码)来做,这样当任何对象是图像时,它都会显示图像工具栏,等等。

标签: swiftuixcode11

解决方案


我会这样做:

  • @State为工具栏的每个状态添加一个布尔变量
@State private var textSelected = false
  • .onTap向场景中的每个“活动”视图添加一个事件:
Text("Tap me!")
    .tapAction {
        self.textSelected = true
    }
  • 根据“状态”变量更改工具栏的外观
if self.textSelected {
   self.showTextToolbarContent() 
}

当然,showTextToolbarContent()是一个本地函数返回一个some View带有为文本选择量身定制的工具栏内容。

这显然只是一个简单的例子。在您的实际实现中,您可能会为“选择”状态使用一个布尔数组,为当前选择的视图使用另一个状态变量。


推荐阅读