Skip to content

chrisrecalis/swiftui-infinite-canvas

Repository files navigation

InfiniteCanvas

Example

import SwiftUI
import InfiniteCanvas

struct ContentView: View {
    @StateObject private var controller = InfiniteCanvasController()
    private var items = [
        Item(canvasX: 0, canvasY: 0),
        Item(canvasX: 100, canvasY: 100),
        Item(canvasX: 200, canvasY: 200),
    ]
    
    var body: some View {
        InfiniteCanvas(controller: controller) {
            ForEach(items, id: \.id) { item in
                ItemView(item: item)
            }
        }
    }
}


struct ItemView: View {
    @ObservedObject var item: Item
    
    var body: some View {
        Circle()
            .fill(Color.red)
            .frame(width: 50, height: 50)
            .canvasOffset(x: item.canvasX, y: item.canvasY)
    }
}

class Item: Identifiable, ObservableObject {
    let id = UUID()
    @Published var canvasX: CGFloat
    @Published var canvasY: CGFloat
    
    init(canvasX: CGFloat, canvasY: CGFloat) {
        self.canvasX = canvasX
        self.canvasY = canvasY
    }
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages