Ingen beskrivning

FlowerCard.swift 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. //
  2. // FowerCard.swift
  3. // Flowerdex
  4. //
  5. // Created by Víctor A. Hernández on 10/25/20.
  6. //
  7. import SwiftUI
  8. struct FlowerCard: View {
  9. var flower: FlowerItem
  10. @ObservedObject var imageManager = ImageManager()
  11. var size: CGFloat = 150
  12. @Environment(\.colorScheme) var colorScheme
  13. var body: some View {
  14. HStack {
  15. HStack(alignment: .top, spacing: 0) {
  16. // TODO: make placeholder and actual image look equally good
  17. Image(uiImage: self.imageManager.image!)
  18. .resizable()
  19. // .scaledToFit()
  20. .aspectRatio(contentMode: .fill)
  21. .frame(width: self.size, height: self.size)
  22. .background(colorScheme == .dark ? Constants.Colors.darkGrayColor : Color.white)
  23. CardDescription(commonName: self.flower.commonName, genus: self.flower.genus, family: self.flower.family, size: self.size, isFavorite: self.flower.isFavorite)
  24. }
  25. }
  26. .cornerRadius(15)
  27. .shadow(radius: 5)
  28. .padding(.horizontal, 20)
  29. .padding(.vertical, 5)
  30. .onAppear {
  31. self.imageManager.fetchImage(self.flower.imageURL)
  32. }
  33. }
  34. }
  35. struct CardDescription: View {
  36. var commonName: String
  37. var genus: String
  38. var family: String
  39. var size: CGFloat
  40. var isFavorite: Bool
  41. @Environment(\.colorScheme) var colorScheme
  42. var body: some View {
  43. VStack(alignment: .leading) {
  44. Text(self.commonName.capitalized)
  45. .font(.headline)
  46. Spacer()
  47. HStack {
  48. Text(self.genus + " > " + self.family)
  49. .font(.caption)
  50. Spacer()
  51. Button(action: {print("hello")}) { //
  52. if self.isFavorite {
  53. Image(systemName: "star.fill")
  54. .foregroundColor(.yellow)
  55. } else {
  56. Image(systemName: "star")
  57. .foregroundColor(.black)
  58. }
  59. }
  60. }
  61. }
  62. .padding(.vertical, 20)
  63. .padding(.horizontal, 15)
  64. .frame(maxWidth: .infinity, maxHeight: self.size, alignment: .topLeading)
  65. .background(colorScheme == .dark ? Constants.Colors.darkGrayColor : Color.white)
  66. }
  67. }
  68. struct FowerCardView_Previews: PreviewProvider {
  69. static var previews: some View {
  70. Group {
  71. FlowerCard(flower: dummyFlowers[0])
  72. FlowerCard(flower: dummyFlowers[1])
  73. }
  74. .previewLayout(.sizeThatFits)
  75. }
  76. }