59 lines
1.3 KiB
Swift
59 lines
1.3 KiB
Swift
|
//
|
||
|
// TextRatingView.swift
|
||
|
// Jel
|
||
|
//
|
||
|
// Created by zerocool on 1/9/24.
|
||
|
//
|
||
|
|
||
|
import SwiftUI
|
||
|
|
||
|
enum TextRatingViewStyle {
|
||
|
case stroke
|
||
|
case fill
|
||
|
}
|
||
|
|
||
|
struct TextRatingView: View {
|
||
|
var text: String
|
||
|
var fillStyle: TextRatingViewStyle
|
||
|
|
||
|
init(_ text: String, fillStyle: TextRatingViewStyle = .stroke) {
|
||
|
self.text = text
|
||
|
self.fillStyle = fillStyle
|
||
|
}
|
||
|
|
||
|
var body: some View {
|
||
|
switch (fillStyle) {
|
||
|
case .stroke:
|
||
|
Text(text)
|
||
|
.font(.caption)
|
||
|
.bold()
|
||
|
.padding(EdgeInsets(top: 1, leading: 4, bottom: 1, trailing: 4))
|
||
|
.overlay {
|
||
|
RoundedRectangle(cornerRadius: 2, style: .continuous)
|
||
|
.stroke(.gray, lineWidth: 1.5)
|
||
|
}
|
||
|
.foregroundStyle(.gray)
|
||
|
case .fill:
|
||
|
Text(text)
|
||
|
.font(.caption)
|
||
|
.bold()
|
||
|
.padding(EdgeInsets(top: 1, leading: 4, bottom: 1, trailing: 4))
|
||
|
.hidden()
|
||
|
.background {
|
||
|
Color(.gray)
|
||
|
.clipShape(RoundedRectangle(cornerRadius: 2, style: .continuous))
|
||
|
.inverseMask(
|
||
|
Text(text)
|
||
|
.font(.caption)
|
||
|
.bold()
|
||
|
.padding(EdgeInsets(top: 1, leading: 4, bottom: 1, trailing: 4))
|
||
|
)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//#Preview {
|
||
|
// TextRatingView()
|
||
|
//}
|