Skip to content

Instantly share code, notes, and snippets.

View Codelaby's full-sized avatar

Codelaby Codelaby

View GitHub Profile
@Codelaby
Codelaby / inspector.swift
Created January 25, 2024 10:27
Inspector SwiftUI
import SwiftUI
//https://dimillian.medium.com/how-to-use-the-new-inspector-swiftui-view-modifier-9cefb8353beb
struct InspectorPanel: View {
@State var isShowingInspector = false
var body: some View {
NavigationStack {
VStack {
@Codelaby
Codelaby / validate_fields.swift
Last active May 4, 2024 09:04
validate_field.swift
//https://betterprogramming.pub/a-data-validation-solution-utilizing-swift-property-wrappers-and-swiftui-view-extensions-ae2db2209a32
import SwiftUI
public protocol ValidationRule {
associatedtype Value: Equatable
associatedtype Failure: Error
typealias ValidationResult = Result<Value, Failure>
init()
@Codelaby
Codelaby / BinaryClock.swift
Last active May 4, 2024 09:13
Binary Clock System in Swift
import Foundation
struct BinaryClock {
private(set) var hours24: [Int] = Array(repeating: 0, count: 6)
private(set) var hours12: [Int] = Array(repeating: 0, count: 4)
private(set) var minutes: [Int] = Array(repeating: 0, count: 6)
private(set) var seconds: [Int] = Array(repeating: 0, count: 6)
mutating func update(withSeconds seconds: TimeInterval) {
let totalSeconds = Int(seconds)
import SwiftUI
//RandomAccessCollection & MutableCollection & RangeReplaceableCollection & Equatable & Hashable
struct CoverFlowCarousel<Content: View, Data: RandomAccessCollection>: View where Data.Element: Identifiable {
@Environment(\.layoutDirection) var direction
private var config: Config
private let data: Data
@Binding var selection: Data.Element.ID?
private let content: (Data.Element) -> Content
//
// CoverFlowCarousel.swift
// ClockSample
//
// Created by Codelaby on 25/7/24.
//
import SwiftUI
//RandomAccessCollection & MutableCollection & RangeReplaceableCollection & Equatable & Hashable
struct CoverFlowCarousel<Content: View, Data: RandomAccessCollection>: View where Data.Element: Identifiable {
@Codelaby
Codelaby / tmd_movie.json
Created August 23, 2024 09:24
TMD Movie json
{
"adult": false,
"backdrop_path": "/ifUfE79O1raUwbaQRIB7XnFz5ZC.jpg",
"belongs_to_collection": {
"id": 2602,
"name": "Scream Collection",
"poster_path": "/p3EjClFy20jjT0u06dzBs4lvvhi.jpg",
"backdrop_path": "/oUcscMECv8DOBsAPCh3KnDZqAC4.jpg"
},
"budget": 24000000,
@Codelaby
Codelaby / DemoSplashScreen.swift
Created September 23, 2024 09:14
Demo SplaschScreen
import SwiftUI
struct SplashScreen: View {
var body: some View {
ZStack {
Rectangle().fill(Color.blue.gradient)
Image(systemName: "apple.logo")
.resizable()
@Codelaby
Codelaby / gist:859d6601e497dc15b068ab98527a343b
Created October 3, 2024 13:14
timezone_playground.swift
import SwiftUI
fileprivate extension Date.FormatStyle {
func withTimeZone(_ timeZone: TimeZone?) -> Date.FormatStyle {
var copy = self
if let timeZone = timeZone {
copy.timeZone = timeZone
}
return copy
}
import SwiftUI
import MetalKit
struct Particle {
let color: SIMD4<Float>
let radius: Float
let lifespan: Float
let position: SIMD2<Float>
let velocity: SIMD2<Float>
}
@Codelaby
Codelaby / RemotePhotoDemoModel.swift
Last active October 22, 2024 13:53
Prefetch big images
struct RemotePhotoDemoModel: Identifiable {
let id: UUID = .init()
let image: String
var imageData: Data?
static let allPhotos: [RemotePhotoDemoModel] = [
//RemotePhotoDemoModel(image: "https://images.unsplash.com/photo-1531737212413-667205e1cda"), // error sample
RemotePhotoDemoModel(image: "https://images.unsplash.com/photo-1510001618818-4b4e3d86bf0f"),
RemotePhotoDemoModel(image: "https://images.unsplash.com/photo-1504284992506-f6d82d0f2f2a"),
RemotePhotoDemoModel(image: "https://images.unsplash.com/photo-1465447142348-e9952c393450"),