Untitled
unknown
swift
7 hours ago
809 B
6
No Index
import SwiftUI fileprivate struct SizeReader: ViewModifier { var onChange: (CGSize) -> () func body(content: Content) -> some View { if #available(iOS 16.0, *) { content .onGeometryChange(for: CGSize.self, of: { $0.size }, action: onChange) } else { content .background( GeometryReader { geometry in Color.clear .preference(key: SizePreferenceKey.self, value: geometry.size) } ) .onPreferenceChange(SizePreferenceKey.self, perform: onChange) } } struct SizePreferenceKey: PreferenceKey { static var defaultValue: CGSize = .zero static func reduce(value: inout CGSize, nextValue: () -> CGSize) {} } } extension View { public func onSizeChange(perform action: @escaping (CGSize) -> ()) -> some View { modifier(SizeReader(onChange: action)) } }
Editor is loading...