labik 4 zadanie 2
kodzik dla Adiegounknown
swift
2 years ago
3.7 kB
8
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