Skip to content

Instantly share code, notes, and snippets.

🦅
Hacking in Swift

Adrian M. DevAndArtist

🦅
Hacking in Swift
Block or report user

Report or block DevAndArtist

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View swiftui_update_inconsistency.swift
// SOME OBSERVATIONS:
// * In Xcode 11.3.1 `V_Struct_Representable_ObservedObject` won't update
// which is clearly a bug. This bug is fixed in Xcode 11.4 beta 1.
//
// * `V_Struct` and `V_Struct_Representable` both never update because
// they shouldn't as the framework internal raw-diffing likely won't
// identify any change. (EXPECTED BEHAVIOR)
//
// * `V_Class` and `V_Class_ObservedObject` both produce a runtime crash,
// which might be a bug as well. `View` conforming types shouldn't be
View swiftui_preferenceview.swift
// This code uses 3 HIDDEN SwiftUI types, there is no guarantee
// that it will pass app review, so please use it with caution.
//
// * SwiftUI._PreferenceValue<Key>
// * SwiftUI._DelayedPreferenceView<Key, Content>
// * SwiftUI._PreferenceValue<Key>
//
// Feedback ID for an official support: (FB7577482)
//
// ⚠️ WARNING:
View swiftui_bugged_preferences.swift
struct PKey: PreferenceKey {
static var defaultValue: Int?
static func reduce(value: inout Int?, nextValue: () -> Int?) {
print(#function, "value:", value as Any, "nextValue:", nextValue() as Any)
value = nextValue()
}
}
struct ContentView: View {
let condition = true
View swiftui_non_rendering_view_with_preferences.swift
// BUG: FB7569572
struct GeometrySizeKey: PreferenceKey {
static func reduce(value: inout CGSize?, nextValue: () -> CGSize?) {
value = nextValue()
}
}
extension View {
func readGeometrySize() -> some View {
View swiftui_state_tests.swift
import SwiftUI
class Base: CustomDebugStringConvertible {
var debugDescription: String {
"\(type(of: self)) \(ObjectIdentifier(self))"
}
init() {
print("🟢 init\t", self)
}
View swiftui_helper_property_wrapper.swift
import Combine
import SwiftUI
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
@propertyWrapper
public struct Model<Value>: DynamicProperty {
private final class _Box: ObservableObject {
let objectWillChange = ObservableObjectPublisher()
var value: Value {
View NavigationView_Issue.swift
import SwiftUI
struct ContentView: View {
@State var flag = true
var body: some View {
let text = "\(flag ? "HStack" : "ZStack")"
return VStack {
Text(text)
Button("change the stack") {
@DevAndArtist
DevAndArtist / fake_animation_completion.swift
Created Sep 18, 2019
SwiftUI Fake Animation completion for animations that do not overshoot the final value
View fake_animation_completion.swift
fileprivate struct _CompletionPreferenceKey: PreferenceKey {
typealias Value = CGFloat
static let defaultValue: CGFloat = 0
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
value = nextValue()
}
}
@DevAndArtist
DevAndArtist / reimplemented_parts_of_swiftui.swift
Last active Feb 5, 2020
This is a custom implementation of some parts of SwiftUI which I could observe.
View reimplemented_parts_of_swiftui.swift
import CoreGraphics
final class TransactionStack {
static let shared = TransactionStack()
private var _transactions: [Transaction]
private init() {
dispatchPrecondition(condition: .onQueue(.main))
_transactions = []
@DevAndArtist
DevAndArtist / swiftui_to_uikit.swift
Last active Jul 8, 2019
Applying SwiftUI ideas to UIKit
View swiftui_to_uikit.swift
import RxSwift
import RxCocoa
import RxRelay
extension Disposable {
public func wrapIntoAnyDisposable() -> AnyDisposable {
return AnyDisposable(self)
}
}
You can’t perform that action at this time.