From d6f56c00b9dd230031a93264fa9d54fa4e1ee901 Mon Sep 17 00:00:00 2001 From: Luis Ezcurdia Date: Sat, 9 Dec 2023 14:42:27 -0600 Subject: [PATCH 1/2] Feature: Implement ratting star view --- SwiftUIBasics/Views/RatingView.swift | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/SwiftUIBasics/Views/RatingView.swift b/SwiftUIBasics/Views/RatingView.swift index 3ca74af..f47ba79 100644 --- a/SwiftUIBasics/Views/RatingView.swift +++ b/SwiftUIBasics/Views/RatingView.swift @@ -8,8 +8,22 @@ import SwiftUI struct RatingView: View { + @State var rating: Int = 0 var body: some View { - Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + HStack{ + ForEach((1..<6)) { idx in + Image(systemName: (rating >= idx) ? "star.fill": "star") + .font(.title) + .foregroundColor(.yellow) + .onTapGesture { + if rating == idx { + rating = 0 + } else { + rating = idx + } + } + } + } } } From e62eae5c9eae801470810a0b531107d0dbe2c6e4 Mon Sep 17 00:00:00 2001 From: Alex Silva <50441023+Alsxilva@users.noreply.github.com> Date: Tue, 23 Jan 2024 23:55:38 -0600 Subject: [PATCH 2/2] Add files via upload --- SwiftUIBasics/Views/RatingView.swift | 43 +++++++++++++++++++--------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/SwiftUIBasics/Views/RatingView.swift b/SwiftUIBasics/Views/RatingView.swift index f47ba79..96a65fb 100644 --- a/SwiftUIBasics/Views/RatingView.swift +++ b/SwiftUIBasics/Views/RatingView.swift @@ -8,25 +8,42 @@ import SwiftUI struct RatingView: View { - @State var rating: Int = 0 + + @State var rating: Int + + var offImage = Image(systemName: "star") + var onImage = Image(systemName: "star.fill") + var body: some View { - HStack{ - ForEach((1..<6)) { idx in - Image(systemName: (rating >= idx) ? "star.fill": "star") - .font(.title) - .foregroundColor(.yellow) - .onTapGesture { - if rating == idx { - rating = 0 - } else { - rating = idx + VStack { + Text("Rate:") + .font(.system(size: 111)) + .bold() + HStack{ + ForEach(1..<6, id:\.self){ number in + Image(systemName: + image(for: number)) + .font(.system(size: 45)) + .foregroundColor(number > rating ? + Color.gray : Color.yellow) + .onTapGesture { + rating = number } - } + } } } } + } #Preview { - RatingView() + RatingView(rating: 0) +} + +func image(for number: Int) -> String { + if number <= 5 { + return "star" + } else { + return "star.fill" + } }