SwiftUI-切换工具栏状态

时间:2019-06-24 18:20:26

标签: swiftui xcode11

目标:根据所选对象(图像,文本,形状)切换状态的工具栏

我做了什么:

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)

        }

    }

}

我的结果: enter image description here

在选择其他对象时如何更改状态?

我需要以动态方式(而不是硬编码)进行操作,以便当任何对象是图像时,它将显示图像工具栏,依此类推。

1 个答案:

答案 0 :(得分:0)

我会这样:

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

当然,showTextToolbarContent()是一个局部函数,它返回一个some View以及专门用于文本选择的工具栏内容。

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