56 lines
1.6 KiB
Swift
56 lines
1.6 KiB
Swift
//
|
|
// FortuneWheelModel.swift
|
|
// SodaLive
|
|
//
|
|
// Created by klaus on 2023/12/07.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct FortuneWheelModel {
|
|
|
|
let titles: [String]
|
|
let size: CGFloat
|
|
let onSpinEnd: ((Int) -> ())?
|
|
let colors: [Color]
|
|
let pointerColor: Color
|
|
let strokeWidth: CGFloat
|
|
let strokeColor: Color
|
|
let animDuration: Double
|
|
let animation: Animation
|
|
let getWheelItemIndex: (() -> (Int))?
|
|
|
|
public init(
|
|
titles: [String], size: CGFloat, onSpinEnd: ((Int) -> ())?,
|
|
colors: [Color]? = nil,
|
|
pointerColor: Color = .red,
|
|
strokeWidth: CGFloat = 5,
|
|
strokeColor: Color = .white,
|
|
animDuration: Double = Double(2),
|
|
animation: Animation? = nil,
|
|
getWheelItemIndex: (() -> (Int))? = nil
|
|
) {
|
|
self.titles = titles
|
|
self.size = size
|
|
self.onSpinEnd = onSpinEnd
|
|
self.colors = colors ?? [
|
|
Color(hex: "#D73535"),
|
|
Color(hex: "#FF5151"),
|
|
Color(hex: "#FF7C32"),
|
|
Color(hex: "#FFAF13"),
|
|
Color(hex: "#FFC658"),
|
|
Color(hex: "#8BDA70"),
|
|
Color(hex: "#06AB97"),
|
|
Color(hex: "#12AAFF"),
|
|
Color(hex: "#0052B3"),
|
|
Color(hex: "#7444FF"),
|
|
]
|
|
self.pointerColor = pointerColor
|
|
self.strokeWidth = strokeWidth
|
|
self.strokeColor = strokeColor
|
|
self.animDuration = animDuration
|
|
self.animation = animation ?? Animation.timingCurve(0.51, 0.97, 0.56, 0.99, duration: animDuration)
|
|
self.getWheelItemIndex = getWheelItemIndex
|
|
}
|
|
}
|