Standard escape codes are prefixed with Escape
:
- Ctrl-Key:
^[
- Octal:
\033
- Unicode:
\u001b
- Hexadecimal:
\x1B
- Decimal:
27
class ViewController: UIViewController { | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
Task { | |
// 1️⃣❓ UIViewController is in a MainActor context, so this Task | |
// will inherit that, so the following pretend expensive call will | |
// be on the main thread and likely block? | |
ExpensiveOperationPerformer.doExpensiveLoopAndPrint() | |
} |
Author: https://www.cyanhall.com/
Core Animation's original name is Layer Kit
Core Animation is a compositing engine; its job is to compose different pieces of visual content on the screen, and to do so as fast as possible. The content in question is divided into individual layers stored in a hierarchy known as the layer tree
. This tree forms the underpinning for all of UIKit, and for everything that you see on the screen in an iOS application.
In UIView, tasks such as rendering, layout and animation are all managed by a Core Animation class called CALayer
. The only major feature of UIView that isn’t handled by CALayer is user interaction.
There are four hierarchies, each performing a different role:
// | |
// TaggerView.swift | |
// | |
// Created by Alex Hay on 21/11/2020. | |
// | |
// Simple interface for adding tags to an array in SwiftUI | |
// Example video: https://imgur.com/gallery/CcA1IXp | |
// alignmentGuide code from Asperi @ https://stackoverflow.com/a/58876712/11685049 | |
import SwiftUI |
import SwiftUI | |
struct ColorText: View { | |
// MARK:- Properties | |
/// The attributed string to display. | |
private let attributedString: AttributedString | |
var body: some View { |
import UIKit | |
struct IceCream { | |
let title: String | |
let icon: UIImage | |
} | |
struct AppSettings { | |
static var fontSize = 17.0 | |
} |
extension Error { | |
var code: Int { return (self as NSError).code } | |
var domain: String { return (self as NSError).domain } | |
var userInfo: [String:Any] { return (self as NSError).userInfo } | |
func timeAfterWhichToRetry(retryCount: Int) -> TimeInterval? { | |
// CloudKit suggests us retry too often, so slow us down as we retry a lot, up to 5 minutes | |
if let suggestedTimeout = suggestedTimeAfterWhichToRetry { | |
if suggestedTimeAfterWhichToRetry == 0 { | |
return 0 |
import SwiftUI | |
@main | |
struct testColorSchemeApp: App { | |
@StateObject private var appearanceManager = AppearanceManager() | |
var body: some Scene { | |
WindowGroup { | |
ContentView() | |
.environmentObject(appearanceManager) |
// | |
// RemindersAppIcon.swift | |
// RemindersAppIcon | |
// | |
// Created by David on 1/5/22. | |
// | |
import SwiftUI | |
struct RemindersAppIcon: View { |
// | |
// PomodoroPicker.swift | |
// pomodoro | |
// | |
// Created by David Rozmajzl on 1/1/22. | |
// | |
import SwiftUI | |
struct PomodoroPicker<Content, Item: Hashable>: View where Content: View { |