Библиотека лоадеров для работы с Foundation Models
Когда-то я делился примерами красоты с помощью математики. Но если подрубить TimelineView, Canvas и немного воображения, сейчас можно создать намного более весёлые и интересные кейсы.
Например, скорее всего если вы отдаете юзерам инфу поэтапно (или генерите изображения), а ваши модельки крутятся долго, и как раз в этот момент совершенно точно что-то нужно показывать.
Для этого можно создать библиотеку компонентов и юзать любую комбинацию, хоть разбивать поэтапно и показывать последовательность, хоть показывать какой-то один из них.
Вот, например, кит, который используется на гифке, которую вы видите:
А целиком примеры уже доступны: ⭐️ здесь или 💰 тут.
😃 iOS Dev
Когда-то я делился примерами красоты с помощью математики. Но если подрубить TimelineView, Canvas и немного воображения, сейчас можно создать намного более весёлые и интересные кейсы.
Например, скорее всего если вы отдаете юзерам инфу поэтапно (или генерите изображения), а ваши модельки крутятся долго, и как раз в этот момент совершенно точно что-то нужно показывать.
Для этого можно создать библиотеку компонентов и юзать любую комбинацию, хоть разбивать поэтапно и показывать последовательность, хоть показывать какой-то один из них.
Вот, например, кит, который используется на гифке, которую вы видите:
enum LoaderKit {
static let goldenAngle = Double.pi * (3 - (5.0).squareRoot())
static func fibonacciSphere(_ count: Int) -> [LDVec3] {
guard count > 1 else { return [LDVec3(x: 0, y: 0, z: 0)] }
var pts: [LDVec3] = []
pts.reserveCapacity(count)
for i in 0.. LDVec3 {
let c = cos(a), s = sin(a)
return LDVec3(x: p.x * c + p.z * s, y: p.y, z: -p.x * s + p.z * c)
}
static func rotateX(_ p: LDVec3, _ a: Double) -> LDVec3 {
let c = cos(a), s = sin(a)
return LDVec3(x: p.x, y: p.y * c - p.z * s, z: p.y * s + p.z * c)
}
static func rotateZ(_ p: LDVec3, _ a: Double) -> LDVec3 {
let c = cos(a), s = sin(a)
return LDVec3(x: p.x * c - p.y * s, y: p.x * s + p.y * c, z: p.z)
}
static func dot(_ x: CGFloat, _ y: CGFloat, _ r: CGFloat) -> Path {
Path(ellipseIn: CGRect(x: x - r, y: y - r, width: r * 2, height: r * 2))
}
static func hash(_ i: Int, _ salt: Double = 0) -> Double {
let v = sin(Double(i) * 12.9898 + salt * 78.233 + 0.5) * 43758.5453
return v - v.rounded(.down)
}
static func lerp(_ a: Double, _ b: Double, _ t: Double) -> Double { a + (b - a) * t }
static func smoothstep(_ t: Double) -> Double { let x = min(max(t, 0), 1); return x * x * (3 - 2 * x) }
static func easeOut(_ t: Double) -> Double { 1 - pow(1 - min(max(t, 0), 1), 3) }
}
А целиком примеры уже доступны: ⭐️ здесь или 💰 тут.
😃 iOS Dev