Skip to content

Instantly share code, notes, and snippets.


Alex Grebenyuk kean

View GitHub Profile
View PinEdges.swift
public protocol LayoutItem { // `UIView`, `UILayoutGuide`
var superview: UIView? { get }
extension UIView: LayoutItem {}
extension UILayoutGuide: LayoutItem {
public var superview: UIView? { owningView }
public struct Alignment {
View StateObject.swift
// Version 1: Using initializer directly
struct ContentView: View {
@State var count = 0
let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
var body: some View {
VStack {
Text("container: \(count)")
View share.swift
//: A UIKit based Playground for presenting user interface
import UIKit
import PlaygroundSupport
extension NSAttributedString {
static func make(html: String, size: CGFloat, color: UIColor) -> NSAttributedString? {
// TODO: Size is configured programatically which means we can
// change it dynamically if needed (aka dynamic type)
View navigation-view.swift
struct ContentView: View {
@State private var isShowingDetailView = false
var body: some View {
NavigationView {
NavigationLink(destination: Text("Second View"), isActive: $isShowingDetailView) {
Text("Show Detail")

With @inlinable, Swift compiler is able to optimize the entire for in loop away, which is not possible without it.

kean / Example.swift
Last active Nov 13, 2020
View Example.swift
public struct ImageView: View {
@ObservedObject var image: FetchImage
public var body: some View {
ZStack {
.aspectRatio(contentMode: .fill)
View Future+Combine.swift
import Future
import Combine
public extension Future {
var publisher: Combine.Future<Value, Error> {
Combine.Future { fulfill in
self.on(success: {
}, failure: {
View SearchView.swift
struct SearchView: View {
@ObservedObject var viewModel: SearchViewModel
var body: some View {
VStack {
TextField("Search", text: $viewModel.query)
List(viewModel.songs) {
kean / _DynamicProperty.swift
Last active Feb 23, 2020
View _DynamicProperty.swift
// A speculative _ViewRendererHost implementation which uses Mirror (Swift reflection) to find all
// of the dynamic properties (`DynamicProperty`) associated with a given view (`View`), observe
// the changes to these properties and automatically refresh the view whenever any of these property change.
protocol _DynamicProperty {
var objectWillChange: AnyPublisher<Void, Never> { get }
extension ObservedObject: _DynamicProperty {
var objectWillChange: AnyPublisher<Void, Never> {
You can’t perform that action at this time.