轨迹

可在 iOStvOSwatchOSmacOS 上运行

安装

Swift 包

.package(url: "https://github.com/hexagons/Trails.git", from: "1.1.1")

设置

import SwiftUI
import Trails
struct ContentView: View {
    var main: Main = Main()
    var body: some View {
        TrailsView(trailer: main.trailer)
    }
}
class Main {
    
    let trailer: Trailer
    
    init() {
        
        let trailCount: Int = 3
        let seconds: Double = 10.0
        trailer = Trailer(count: trailCount,
                          duration: seconds)
        trailer.circlesActive = true
        
        startTimer()
        
    }
    
    func startTimer()  {
        
        let startDate: Date = Date()
        let timer: Timer = Timer(timeInterval: 0.5, repeats: true) { _ in
            let time: Double = -startDate.timeIntervalSinceNow
            let valueA: Double = cos(time)
            let valueB: Double = cos(time + (.pi * 2) * (1.0 / 3.0))
            let valueC: Double = cos(time + (.pi * 2) * (2.0 / 3.0))
            self.trailer.add(valueA, at: 0)
            self.trailer.add(valueB, at: 1)
            self.trailer.add(valueC, at: 2)
        }
        RunLoop.current.add(timer, forMode: .common)
        
    }
}

属性

trailer.duration = 10.0

duration 的单位是

.duration 可以在运行时更改

早于 duration 的时间添加的值将被删除

trailer.circlesActive = true

.circlesActive 默认值false

trailer.circleBorder = false
trailer.circleRadius = 2.0

.circleBorder 默认值true

.circleRadius 默认值3.0

trailer.lineWidth = 3.0

.lineWidth 默认值1.0

trailer.colorsActive = false

当 count 为 1 时,.colorsActive 默认false

当 count 为 2 或更多时,.colorsActive 默认true

trailer.hues = [0.0, 0.1, 0.2]

色调的数量必须匹配传递给 Trailer 的 count

.hues 默认为 "rainbow"

色调是 0.01.0 之间的值,低值:红色到绿色,中间值:绿色到蓝色,高值:蓝色到红色

trailer.colorBlend = false

.colorBlendfalse 时,线条将不会混合。当很多线条重叠时,此选项可见

.colorBlendtrue 时,浅色模式使用 .multiply 混合,深色模式使用 .lighten 混合

.colorBlend 默认true

trailer.drawValueEndLines = false

.drawValueEndLines 默认true

trailer.drawValueBackground = false

.drawValueBackgroundiOSwatchOS默认true,如果您的背景是透明的,将其设置为 false 会很有用

trailer.drawDefaultTextBackground = false

.drawValueBackgroundiOSwatchOS默认true,如果您的背景是透明的,将其设置为 false 会很有用

trailer.fontSize = 12.0

.fontSize 默认8.0

trailer.leftSpacing = 10.0
trailer.rightSpacing = 10.0

.leftSpacing.rightSpacing 默认20.0

模拟

要复制本 readme 顶部 gif 中看到的随机性,请使用以下代码

let trailer: Trailer = TrailerMock.make()

TrailerMock.swift 提供