The code I create is not a secret just an experiments. Below you can find the examples:
AddictionListViewModel
import Foundation
class AddictionListViewModel: ObservableObject {
@Published var addictions = [Addiction]()
func removeAddiction(at offset: IndexSet) {
addictions.remove(atOffsets: offset)
}
func createExampleAddictions() {
let yesterday = Calendar.current.date(byAdding: .day,value: -1, to: Date())!
addictions.append(Addiction(id: 1,name: "example", dateStart: yesterday))
addictions.append(Addiction(id: 2,name: "example", dateStart: yesterday))
addictions.append(Addiction(id: 3,name: "example", dateStart: yesterday))
addictions.append(Addiction(id: 4,name: "example", dateStart: yesterday))
addictions.append(Addiction(id: 5,name: "example", dateStart: yesterday))
addictions.append(Addiction(id: 6,name: "example", dateStart: yesterday))
addictions.append(Addiction(id: 7,name: "example", dateStart: yesterday))
addictions.append(Addiction(id: 8,name: "example", dateStart: yesterday))
addictions.append(Addiction(id: 9,name: "example", dateStart: yesterday))
addictions.append(Addiction(id: 10,name: "example", dateStart: yesterday))
}
}
AddictionCellView
import Foundation
import SwiftUI
struct AddictionCellView: View {
@ObservedObject var viewModel: AddictionCellViewModel
var body: some View {
GeometryReader { geometry in
HStack {
Circle().foregroundColor(Color("DetailGrey")).frame(width: geometry.size.width * 0.2).overlay(Text("99999999").aspectRatio(1,contentMode: .fit).lineLimit(2))
VStack(alignment: .leading) {
Text(viewModel.addiction.name)
.lineLimit(1)
.font(.title)
Text("2012-01-01")
.font(.footnote)
Text("you saved now")
.font(.footnote)
.foregroundColor(Color("Citrine"))
}
}
.padding()
}
.frame(height: 100)
.background(Color("BackgroundCell").cornerRadius(25))
}
}
struct AddictionCellView_Previews: PreviewProvider {
static var previews: some View {
AddictionCellView(addiction: Addiction(id: 1, name: "BednarzBednarzBednarz", dateStart: Date()))
}
}
//MARK: - AddictionCellView init
extension AddictionCellView {
init(addiction: Addiction) {
self.viewModel = AddictionCellViewModel(addiction)
}
}
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: