ContentView.swift
// // ContentView.swift // Swiftuitest // // Created by Cairocoders // import SwiftUI struct ContentView: View { @State var show = false var body: some View { ZStack { List(0..<20) { list in Text("List View \(list)") } VStack { Spacer() HStack { Spacer() FloatingActionButton(show: $show) .padding(.trailing, 30) }.padding([.bottom], 20) } } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } struct FloatingActionButton : View { @Binding var show : Bool var body: some View { VStack(spacing : 20) { if self.show { Button(action: { self.show.toggle() }) { Image(systemName: "video").resizable().frame(width: 25, height: 15).padding(22) } .background(Color.gray) .foregroundColor(Color.white) .clipShape(Circle()) Button(action: { self.show.toggle() }) { Image(systemName: "message").resizable().frame(width: 25, height: 15).padding(22) } .background(Color.gray) .foregroundColor(Color.white) .clipShape(Circle()) Button(action: { self.show.toggle() }) { Image(systemName: "person.badge.plus").resizable().frame(width: 25, height: 15).padding(22) } .background(Color.gray) .foregroundColor(Color.white) .clipShape(Circle()) } Button(action: { self.show.toggle() }) { Image(systemName: "chevron.up").resizable().frame(width: 25, height: 15).padding(22) } .background(Color.green) .foregroundColor(Color.white) .clipShape(Circle()) .rotationEffect(.init(degrees: self.show ? 180 : 0)) }.animation(.spring()) } }