labik 4 zadanie 2
kodzik dla Adiegounknown
swift
a year ago
3.7 kB
7
Indexable
// // ContentView.swift // import SwiftUI struct ContentView: View { @StateObject var dataForView = DataForView() @State var fillColor = Color.green @State var height = "" @State var width = "" @State var border = false var body: some View { let floatWidth = dataForView.toCGFloat(width) let floatHeight = dataForView.toCGFloat(height) VStack { VStack { HStack { FigurePickerView( selectedFigure: $dataForView.selectedFigure, figures: dataForView.figures) ColorPicker("Wybierz kolor", selection: $fillColor) } HStack { Text("Wysokosc: ") TextField("Wysokosc", text: $height) } HStack { Text("Szerokosc: ") TextField("Szerokosc", text: $width) } HStack { Toggle("Ramka", isOn: $border) } } .padding() .border(/*@START_MENU_TOKEN@*/Color.black/*@END_MENU_TOKEN@*/) if floatWidth > 0 && floatHeight > 0 { switch $dataForView.selectedFigure.id { case 1: Rectangle() .frame(width: floatWidth, height: floatHeight) .foregroundColor(fillColor) .border(border ? .black : .clear) case 2: Circle() .frame(width: floatWidth, height: floatHeight) .foregroundColor(fillColor) .border(border ? .black : .clear) case 3: Ellipse() .frame(width: floatWidth, height: floatHeight) .foregroundColor(fillColor) .border(border ? .black : .clear) default: Rectangle() } } else if (!width.isEmpty && !height.isEmpty) { Text("Nieprawidlowe dane") } Spacer() } .padding() } } #Preview { ContentView() } // // FigurePickerElement.swift // import Foundation struct FigurePickerElement: Hashable, Identifiable { let name: String let icon: String let id: Int } // // FigurePickerView.swift import SwiftUI struct FigurePickerView: View { @Binding var selectedFigure: FigurePickerElement let figures: [FigurePickerElement] var body: some View { Picker(selection: $selectedFigure, label: Text("Wybierz figure"), content: { ForEach(figures) { figure in HStack { Image(systemName: figure.icon) Text(figure.name) } .tag(figure) } }) } } // // DataForView.swift // import Foundation class DataForView: ObservableObject { let figures: [FigurePickerElement]; @Published var selectedFigure : FigurePickerElement init() { self.figures = [ FigurePickerElement(name: "Kwadrat", icon: "square", id: 1), FigurePickerElement(name: "Okrag", icon: "circle", id: 2), FigurePickerElement(name: "Elipsa", icon: "oval", id: 3) ] self.selectedFigure = figures[0] } func toCGFloat(_ value: String) -> CGFloat { if let doubleValue = Double(value) { return CGFloat(doubleValue) } return 0 }
Editor is loading...
Leave a Comment