SimpleRoulette 1.3.0

SimpleRoulette 1.3.0

fummicc1 维护。



Images

Pod Platform Pod License Pod Version Carthage Compatible Swift Package Manager compatible

SimpleRoulette

SimpleRoulette 帮助您使用 SwiftUI 创建可定制的轮盘赌。(兼容 macOS 和 iOS。)

演示

iOS

macOS

安装

Swift 包管理器

创建 Package.swift 文件并添加以下依赖项。

dependencies: [
    .package(url: "https://github.com/fummicc1/SimpleRoulette.git", from: "1.3.0")
    // or
    .package(url: "https://github.com/fummicc1/SimpleRoulette.git", branch: "main")
]

Cocoapods

创建 Podfile 文件并添加以下依赖项。

pod 'SimpleRoulette', '~> 1.3'

Carthage

创建 Cartfile 文件并添加以下依赖项。

github "fummicc1/SimpleRoulette"

Usage

RouletteView

您只需了解 RouletteViewPartData 即可。由于 RouletteView 符合 View 接口,您可以使用以下方式进行操作。

```swift
struct ContentView: View {

    var body: some View {
        RouletteView(
            parts: partDatas
        )
        .startOnAppear(automaticallyStopAfter: 5) { part in
            guard let text = part.content.text else {
                return
            }
            title = text
        }
    }

    var partDatas: [PartData] {
        [
            PartData(
                content: .label("Swift"),
                area: .flex(3),
                fillColor: Color.red
            ),
            PartData(
                content: .label("Kotlin"),
                area: .flex(1),
                fillColor: Color.purple
            ),
            PartData(
                content: .label("JavaScript"),
                area: .flex(2),
                fillColor: Color.yellow
            ),
            PartData(
                content: .label("Dart"),
                area: .flex(1),
                fillColor: Color.green
            ),
            PartData(
                content: .label("Python"),
                area: .flex(2),
                fillColor: Color.blue
            ),
            PartData(
                content: .label("C++"),
                area: .degree(60),
                fillColor: Color.orange
            ),
        ]
    }
}

RouletteModel

如果您想暂停/重启老虎机,请按照以下方式使用 RouletteModel

struct ContentView: View {

    @StateObject var model: RouletteModel

    var body: some View {
        VStack {
            RouletteView(model: model)
        }.onAppear {
            model.start()
            DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
                model.pause() // you can pause
                DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
                    model.restart() // you can restart
                }
            }
        }
    }
}

// Call ContentView
ContentView(
    model: RouletteModel(
        PartData(
            content: .label("Swift"),
            area: .flex(3),
            fillColor: Color.red
        ),
        PartData(
            content: .label("Kotlin"),
            area: .flex(1),
            fillColor: Color.purple
        ),
        PartData(
            content: .label("JavaScript"),
            area: .flex(2),
            fillColor: Color.yellow
        ),
        PartData(
            content: .label("Dart"),
            area: .flex(1),
            fillColor: Color.green
        ),
        PartData(
            content: .label("Python"),
            area: .flex(2),
            fillColor: Color.blue
        ),
        PartData(
            content: .label("C++"),
            area: .degree(60),
            fillColor: Color.orange
        ),
    )
)

Documentation

贡献

欢迎提交拉取请求、错误报告和功能请求🚀

许可证

MIT 许可证