Skip to content

Instantly share code, notes, and snippets.

View chriseidhof's full-sized avatar

Chris Eidhof chriseidhof

View GitHub Profile
//
// ContentView.swift
//
// Created by Chris Eidhof on 20.04.20.
// Copyright © 2020 objc.io. All rights reserved.
//
import SwiftUI
import UIKit
@chriseidhof
chriseidhof / helpers.swift
Created March 9, 2020 13:31
SwiftUI helpers
struct <#MyView#>: View {
var body: some View {
<#body#>
}
}
extension View {
func geometryPreference<P: PreferenceKey>(_ key: P.Type, value: @escaping (GeometryProxy) -> P.Value) -> some View {
overlay(GeometryReader { proxy in
Color.clear.preference(key: P.self, value: value(proxy))
extension View {
func vertical(_ key: VerticalAlignment, relative: CGFloat) -> some View {
self.alignmentGuide(key, computeValue: { $0.height * relative })
}
func overlay<V: View>(alignment: Alignment, relative: UnitPoint = .center, _ other: V) -> some View {
self
.alignmentGuide(alignment.horizontal, computeValue: { $0.width * relative.x })
.alignmentGuide(alignment.vertical, computeValue: { $0.height * relative.y })
.overlay(other, alignment: alignment)
@chriseidhof
chriseidhof / contentview.swift
Created February 21, 2020 13:13
Relative Positioning
//
// ContentView.swift
// Clocks
//
// Created by Chris Eidhof on 21.02.20.
// Copyright © 2020 objc.io. All rights reserved.
//
import SwiftUI
//
// ContentView.swift
// QuickCheckTests
//
// Created by Chris Eidhof on 20.02.20.
// Copyright © 2020 objc.io. All rights reserved.
//
import SwiftUI
@chriseidhof
chriseidhof / racepace.swift
Created February 19, 2020 18:33
Race Pace Calculator
//
// ContentView.swift
// RunningPaceCalculator
//
// Created by Chris Eidhof on 19.02.20.
// Copyright © 2020 Chris Eidhof. All rights reserved.
//
import SwiftUI
struct MyView: View {
@State var text: String = "hello"
var body: some View {
TextField("title", text: $text)
}
}
struct ContentView: View {
@State var toggled: Bool = false
var body: some View {
@chriseidhof
chriseidhof / ContentView.swift
Last active February 13, 2020 09:14
Flexible Frames
import SwiftUI
extension View {
func assert(size: CGSize) -> some View {
self.overlay(GeometryReader { proxy in
Group {
if size == proxy.size {
Color.clear
} else {
Color.red.opacity(0.5)
//
// ContentView.swift
// Store
//
// Created by Chris Eidhof on 05.02.20.
// Copyright © 2020 Chris Eidhof. All rights reserved.
//
import SwiftUI
import SwiftSyntax
import SwiftSemantics
import Foundation
let source = try! String(contentsOf: URL(fileURLWithPath: "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/System/Library/Frameworks/SwiftUI.framework/Modules/SwiftUI.swiftmodule/arm64e.swiftinterface"))
var collector = DeclarationCollector()
let tree = try SyntaxParser.parse(source: source)
tree.walk(&collector)