├── App ├── Assets.xcassets │ ├── Contents.json │ ├── AccentColor.colorset │ │ └── Contents.json │ └── AppIcon.appiconset │ │ └── Contents.json ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json ├── WidgetAnimationApp.swift └── ContentView.swift ├── Widget ├── Fonts │ ├── Custom-Regular.otf │ ├── CatFont0-Regular.ttf │ ├── CatFont1-Regular.ttf │ ├── CatFont10-Regular.ttf │ ├── CatFont11-Regular.ttf │ ├── CatFont12-Regular.ttf │ ├── CatFont13-Regular.ttf │ ├── CatFont14-Regular.ttf │ ├── CatFont15-Regular.ttf │ ├── CatFont2-Regular.ttf │ ├── CatFont3-Regular.ttf │ ├── CatFont4-Regular.ttf │ ├── CatFont5-Regular.ttf │ ├── CatFont6-Regular.ttf │ ├── CatFont7-Regular.ttf │ ├── CatFont8-Regular.ttf │ └── CatFont9-Regular.ttf ├── Supporting Files │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── WidgetBackground.colorset │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── WidgetBundle.swift │ ├── Info.plist │ └── WidgetSetup.swift ├── Frameworks │ └── ClockHandRotationEffect.xcframework │ │ ├── ios-arm64 │ │ └── ClockHandRotationEffect.framework │ │ │ ├── Info.plist │ │ │ ├── ClockHandRotationEffect │ │ │ ├── Modules │ │ │ ├── ClockHandRotationEffect.swiftmodule │ │ │ │ ├── arm64-apple-ios.swiftdoc │ │ │ │ └── arm64-apple-ios.swiftinterface │ │ │ └── module.modulemap │ │ │ └── Headers │ │ │ ├── ClockHandRotationEffect.h │ │ │ └── ClockHandRotationEffect-Swift.h │ │ ├── ios-arm64_x86_64-simulator │ │ └── ClockHandRotationEffect.framework │ │ │ ├── Info.plist │ │ │ ├── ClockHandRotationEffect │ │ │ ├── Modules │ │ │ ├── module.modulemap │ │ │ └── ClockHandRotationEffect.swiftmodule │ │ │ │ ├── arm64-apple-ios-simulator.swiftdoc │ │ │ │ ├── x86_64-apple-ios-simulator.swiftdoc │ │ │ │ ├── arm64-apple-ios-simulator.swiftinterface │ │ │ │ └── x86_64-apple-ios-simulator.swiftinterface │ │ │ ├── Headers │ │ │ ├── ClockHandRotationEffect.h │ │ │ └── ClockHandRotationEffect-Swift.h │ │ │ └── _CodeSignature │ │ │ └── CodeResources │ │ └── Info.plist └── Widget.swift ├── WidgetAnimation.xcodeproj ├── project.xcworkspace │ └── contents.xcworkspacedata ├── xcuserdata │ └── brycepauken.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── xcshareddata │ └── xcschemes │ │ ├── WidgetAnimation.xcscheme │ │ └── WidgetExtension.xcscheme └── project.pbxproj ├── README.md └── LICENSE /App/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Widget/Fonts/Custom-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/Custom-Regular.otf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont0-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont0-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont1-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont1-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont10-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont10-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont11-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont11-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont12-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont12-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont13-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont13-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont14-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont14-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont15-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont15-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont2-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont2-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont3-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont3-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont4-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont4-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont5-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont5-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont6-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont6-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont7-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont7-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont8-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont8-Regular.ttf -------------------------------------------------------------------------------- /Widget/Fonts/CatFont9-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Fonts/CatFont9-Regular.ttf -------------------------------------------------------------------------------- /Widget/Supporting Files/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /App/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /App/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /WidgetAnimation.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Widget/Supporting Files/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Widget/Supporting Files/Assets.xcassets/WidgetBackground.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64/ClockHandRotationEffect.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64/ClockHandRotationEffect.framework/Info.plist -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64/ClockHandRotationEffect.framework/ClockHandRotationEffect: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64/ClockHandRotationEffect.framework/ClockHandRotationEffect -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/Info.plist -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/ClockHandRotationEffect: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/ClockHandRotationEffect -------------------------------------------------------------------------------- /Widget/Supporting Files/WidgetBundle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WidgetBundle.swift 3 | // Widget 4 | // 5 | // Created by Bryce Bostwick on 5/9/25. 6 | // 7 | 8 | import WidgetKit 9 | import SwiftUI 10 | 11 | @main 12 | struct AnimatedWidgetBundle: WidgetBundle { 13 | var body: some Widget { 14 | AnimatedWidget() 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /App/WidgetAnimationApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WidgetAnimationApp.swift 3 | // WidgetAnimation 4 | // 5 | // Created by Bryce Bostwick on 5/9/25. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct WidgetAnimationApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | ContentView() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /App/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // WidgetAnimation 4 | // 5 | // Created by Bryce Bostwick on 5/9/25. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct ContentView: View { 11 | var body: some View { 12 | Text("Check out the widget instead!") 13 | .padding() 14 | } 15 | } 16 | 17 | #Preview { 18 | ContentView() 19 | } 20 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64/ClockHandRotationEffect.framework/Modules/ClockHandRotationEffect.swiftmodule/arm64-apple-ios.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64/ClockHandRotationEffect.framework/Modules/ClockHandRotationEffect.swiftmodule/arm64-apple-ios.swiftdoc -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64/ClockHandRotationEffect.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module ClockHandRotationEffect { 2 | umbrella header "ClockHandRotationEffect.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | 8 | module ClockHandRotationEffect.Swift { 9 | header "ClockHandRotationEffect-Swift.h" 10 | requires objc 11 | } 12 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module ClockHandRotationEffect { 2 | umbrella header "ClockHandRotationEffect.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | 8 | module ClockHandRotationEffect.Swift { 9 | header "ClockHandRotationEffect-Swift.h" 10 | requires objc 11 | } 12 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/Modules/ClockHandRotationEffect.swiftmodule/arm64-apple-ios-simulator.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/Modules/ClockHandRotationEffect.swiftmodule/arm64-apple-ios-simulator.swiftdoc -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/Modules/ClockHandRotationEffect.swiftmodule/x86_64-apple-ios-simulator.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brycebostwick/WidgetAnimation/HEAD/Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/Modules/ClockHandRotationEffect.swiftmodule/x86_64-apple-ios-simulator.swiftdoc -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # iOS Widget Animation 2 | 3 | Example code to go along with this `bryce.co` YouTube video: 4 | 5 | [https://www.youtube.com/watch?v=NdJ_y1c_j_I](https://www.youtube.com/watch?v=NdJ_y1c_j_I) 6 | 7 | Creates a 30 second looping animation in an iOS Widget using public APIs — this example runs at 8 FPS, but you can get up to 30 FPS using the same technique. 8 | 9 | ![SimAnimation](https://github.com/user-attachments/assets/60d8c26b-6dca-4b27-a675-2a614cd36204) 10 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64/ClockHandRotationEffect.framework/Headers/ClockHandRotationEffect.h: -------------------------------------------------------------------------------- 1 | // 2 | // ClockHandRotationEffect.h 3 | // ClockHandRotationEffect 4 | // 5 | // Created by bryce on 4/12/25. 6 | // 7 | 8 | #import 9 | 10 | //! Project version number for ClockHandRotationEffect. 11 | FOUNDATION_EXPORT double ClockHandRotationEffectVersionNumber; 12 | 13 | //! Project version string for ClockHandRotationEffect. 14 | FOUNDATION_EXPORT const unsigned char ClockHandRotationEffectVersionString[]; 15 | 16 | // In this header, you should import all the public headers of your framework using statements like #import 17 | 18 | 19 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/Headers/ClockHandRotationEffect.h: -------------------------------------------------------------------------------- 1 | // 2 | // ClockHandRotationEffect.h 3 | // ClockHandRotationEffect 4 | // 5 | // Created by bryce on 4/12/25. 6 | // 7 | 8 | #import 9 | 10 | //! Project version number for ClockHandRotationEffect. 11 | FOUNDATION_EXPORT double ClockHandRotationEffectVersionNumber; 12 | 13 | //! Project version string for ClockHandRotationEffect. 14 | FOUNDATION_EXPORT const unsigned char ClockHandRotationEffectVersionString[]; 15 | 16 | // In this header, you should import all the public headers of your framework using statements like #import 17 | 18 | 19 | -------------------------------------------------------------------------------- /App/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "platform" : "ios", 6 | "size" : "1024x1024" 7 | }, 8 | { 9 | "appearances" : [ 10 | { 11 | "appearance" : "luminosity", 12 | "value" : "dark" 13 | } 14 | ], 15 | "idiom" : "universal", 16 | "platform" : "ios", 17 | "size" : "1024x1024" 18 | }, 19 | { 20 | "appearances" : [ 21 | { 22 | "appearance" : "luminosity", 23 | "value" : "tinted" 24 | } 25 | ], 26 | "idiom" : "universal", 27 | "platform" : "ios", 28 | "size" : "1024x1024" 29 | } 30 | ], 31 | "info" : { 32 | "author" : "xcode", 33 | "version" : 1 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Widget/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "platform" : "ios", 6 | "size" : "1024x1024" 7 | }, 8 | { 9 | "appearances" : [ 10 | { 11 | "appearance" : "luminosity", 12 | "value" : "dark" 13 | } 14 | ], 15 | "idiom" : "universal", 16 | "platform" : "ios", 17 | "size" : "1024x1024" 18 | }, 19 | { 20 | "appearances" : [ 21 | { 22 | "appearance" : "luminosity", 23 | "value" : "tinted" 24 | } 25 | ], 26 | "idiom" : "universal", 27 | "platform" : "ios", 28 | "size" : "1024x1024" 29 | } 30 | ], 31 | "info" : { 32 | "author" : "xcode", 33 | "version" : 1 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /WidgetAnimation.xcodeproj/xcuserdata/brycepauken.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | WidgetAnimation.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | WidgetExtension.xcscheme_^#shared#^_ 13 | 14 | orderHint 15 | 1 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | 0210CBA22DCF0A10000BA705 21 | 22 | primary 23 | 24 | 25 | 0210CBB82DCF0AA6000BA705 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Bryce Bostwick 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Widget/Supporting Files/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSExtension 6 | 7 | NSExtensionPointIdentifier 8 | com.apple.widgetkit-extension 9 | 10 | UIAppFonts 11 | 12 | Custom-Regular.otf 13 | CatFont0-Regular.ttf 14 | CatFont1-Regular.ttf 15 | CatFont2-Regular.ttf 16 | CatFont3-Regular.ttf 17 | CatFont4-Regular.ttf 18 | CatFont5-Regular.ttf 19 | CatFont6-Regular.ttf 20 | CatFont7-Regular.ttf 21 | CatFont8-Regular.ttf 22 | CatFont9-Regular.ttf 23 | CatFont10-Regular.ttf 24 | CatFont11-Regular.ttf 25 | CatFont12-Regular.ttf 26 | CatFont13-Regular.ttf 27 | CatFont14-Regular.ttf 28 | CatFont15-Regular.ttf 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64/ClockHandRotationEffect.framework/Modules/ClockHandRotationEffect.swiftmodule/arm64-apple-ios.swiftinterface: -------------------------------------------------------------------------------- 1 | // swift-interface-format-version: 1.0 2 | // swift-compiler-version: Apple Swift version 5.6.1 (swiftlang-5.6.0.323.66 clang-1316.0.20.12) 3 | // swift-module-flags: -target arm64-apple-ios15.5 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name ClockHandRotationEffect 4 | @_exported import ClockHandRotationEffect 5 | import Foundation 6 | import Swift 7 | import SwiftUI 8 | import WidgetKit 9 | import _Concurrency 10 | public struct ClockHandRotationEffectModifier : SwiftUI.ViewModifier { 11 | public init(period: Foundation.TimeInterval) 12 | @_Concurrency.MainActor(unsafe) public func body(content: ClockHandRotationEffect.ClockHandRotationEffectModifier.Content) -> some SwiftUI.View 13 | 14 | public typealias Body = @_opaqueReturnTypeOf("$s23ClockHandRotationEffect0abcD8ModifierV4body7contentQr7SwiftUI05_ViewE8_ContentVyACG_tF", 0) __ 15 | } 16 | extension SwiftUI.View { 17 | public func clockHandRotationEffect(period: Foundation.TimeInterval) -> some SwiftUI.View 18 | 19 | } 20 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/Modules/ClockHandRotationEffect.swiftmodule/arm64-apple-ios-simulator.swiftinterface: -------------------------------------------------------------------------------- 1 | // swift-interface-format-version: 1.0 2 | // swift-compiler-version: Apple Swift version 5.6.1 (swiftlang-5.6.0.323.66 clang-1316.0.20.12) 3 | // swift-module-flags: -target arm64-apple-ios15.5-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name ClockHandRotationEffect 4 | @_exported import ClockHandRotationEffect 5 | import Foundation 6 | import Swift 7 | import SwiftUI 8 | import WidgetKit 9 | import _Concurrency 10 | public struct ClockHandRotationEffectModifier : SwiftUI.ViewModifier { 11 | public init(period: Foundation.TimeInterval) 12 | @_Concurrency.MainActor(unsafe) public func body(content: ClockHandRotationEffect.ClockHandRotationEffectModifier.Content) -> some SwiftUI.View 13 | 14 | public typealias Body = @_opaqueReturnTypeOf("$s23ClockHandRotationEffect0abcD8ModifierV4body7contentQr7SwiftUI05_ViewE8_ContentVyACG_tF", 0) __ 15 | } 16 | extension SwiftUI.View { 17 | public func clockHandRotationEffect(period: Foundation.TimeInterval) -> some SwiftUI.View 18 | 19 | } 20 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/Modules/ClockHandRotationEffect.swiftmodule/x86_64-apple-ios-simulator.swiftinterface: -------------------------------------------------------------------------------- 1 | // swift-interface-format-version: 1.0 2 | // swift-compiler-version: Apple Swift version 5.6.1 (swiftlang-5.6.0.323.66 clang-1316.0.20.12) 3 | // swift-module-flags: -target x86_64-apple-ios15.5-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name ClockHandRotationEffect 4 | @_exported import ClockHandRotationEffect 5 | import Foundation 6 | import Swift 7 | import SwiftUI 8 | import WidgetKit 9 | import _Concurrency 10 | public struct ClockHandRotationEffectModifier : SwiftUI.ViewModifier { 11 | public init(period: Foundation.TimeInterval) 12 | @_Concurrency.MainActor(unsafe) public func body(content: ClockHandRotationEffect.ClockHandRotationEffectModifier.Content) -> some SwiftUI.View 13 | 14 | public typealias Body = @_opaqueReturnTypeOf("$s23ClockHandRotationEffect0abcD8ModifierV4body7contentQr7SwiftUI05_ViewE8_ContentVyACG_tF", 0) __ 15 | } 16 | extension SwiftUI.View { 17 | public func clockHandRotationEffect(period: Foundation.TimeInterval) -> some SwiftUI.View 18 | 19 | } 20 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AvailableLibraries 6 | 7 | 8 | LibraryIdentifier 9 | ios-arm64 10 | LibraryPath 11 | ClockHandRotationEffect.framework 12 | SupportedArchitectures 13 | 14 | arm64 15 | 16 | SupportedPlatform 17 | ios 18 | 19 | 20 | LibraryIdentifier 21 | ios-arm64_x86_64-simulator 22 | LibraryPath 23 | ClockHandRotationEffect.framework 24 | SupportedArchitectures 25 | 26 | arm64 27 | x86_64 28 | 29 | SupportedPlatform 30 | ios 31 | SupportedPlatformVariant 32 | simulator 33 | 34 | 35 | CFBundlePackageType 36 | XFWK 37 | XCFrameworkFormatVersion 38 | 1.0 39 | 40 | 41 | -------------------------------------------------------------------------------- /Widget/Supporting Files/WidgetSetup.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WidgetSetup.swift 3 | // WidgetAnimation 4 | // 5 | // Created by Bryce Pauken on 5/10/25. 6 | // 7 | 8 | import SwiftUI 9 | import WidgetKit 10 | 11 | // This file contains Widget boilerplate that isn't super interesting for the animation 12 | 13 | struct AnimatedWidgetEntry: TimelineEntry { 14 | 15 | var date: Date 16 | 17 | init(date: Date = Date()) { 18 | self.date = date 19 | } 20 | 21 | } 22 | 23 | 24 | struct Provider: TimelineProvider { 25 | func placeholder(in context: Context) -> AnimatedWidgetEntry { 26 | AnimatedWidgetEntry() 27 | } 28 | 29 | func getSnapshot(in context: Context, completion: @escaping (AnimatedWidgetEntry) -> ()) { 30 | completion(AnimatedWidgetEntry()) 31 | } 32 | 33 | func getTimeline(in context: Context, completion: @escaping (Timeline) -> ()) { 34 | completion(Timeline(entries: [AnimatedWidgetEntry()], policy: .never)) 35 | } 36 | 37 | } 38 | 39 | struct AnimatedWidget: Widget { 40 | let kind: String = "Widget" 41 | 42 | var body: some WidgetConfiguration { 43 | StaticConfiguration(kind: kind, provider: Provider()) { entry in 44 | if #available(iOS 17.0, *) { 45 | WidgetEntryView(entry: entry) 46 | .containerBackground(.fill.tertiary, for: .widget) 47 | } else { 48 | WidgetEntryView(entry: entry) 49 | .padding() 50 | .background() 51 | } 52 | } 53 | .configurationDisplayName("My Widget") 54 | .description("This is an example widget.") 55 | } 56 | } 57 | 58 | -------------------------------------------------------------------------------- /WidgetAnimation.xcodeproj/xcshareddata/xcschemes/WidgetAnimation.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 9 | 10 | 16 | 22 | 23 | 24 | 25 | 26 | 32 | 33 | 43 | 45 | 51 | 52 | 53 | 54 | 60 | 62 | 68 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /WidgetAnimation.xcodeproj/xcshareddata/xcschemes/WidgetExtension.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 6 | 10 | 11 | 17 | 23 | 24 | 25 | 31 | 37 | 38 | 39 | 40 | 41 | 47 | 48 | 60 | 63 | 69 | 70 | 71 | 72 | 78 | 79 | 80 | 81 | 85 | 86 | 90 | 91 | 95 | 96 | 97 | 98 | 106 | 108 | 114 | 115 | 116 | 117 | 119 | 120 | 123 | 124 | 125 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Headers/ClockHandRotationEffect-Swift.h 8 | 9 | hrKRGpn7H0+tXWTOn9tXuAdRhHw= 10 | 11 | Headers/ClockHandRotationEffect.h 12 | 13 | hyWNxLS7lnlV2qf1HqrZRwtwAKY= 14 | 15 | Info.plist 16 | 17 | KS+cov462AbJXmi8OB0RjyIJsqg= 18 | 19 | Modules/ClockHandRotationEffect.swiftmodule/arm64-apple-ios-simulator.swiftdoc 20 | 21 | vPayIb5oWilEmgLeBcqfVmJfbC4= 22 | 23 | Modules/ClockHandRotationEffect.swiftmodule/arm64-apple-ios-simulator.swiftinterface 24 | 25 | 716Ahtm2Nm8ST8JmMbtK6BVZDIc= 26 | 27 | Modules/ClockHandRotationEffect.swiftmodule/arm64-apple-ios-simulator.swiftmodule 28 | 29 | khPuwxHSY510Auj91ditcTi8LNQ= 30 | 31 | Modules/ClockHandRotationEffect.swiftmodule/x86_64-apple-ios-simulator.swiftdoc 32 | 33 | M2yBAVhlX67uhUWMRtcgHvkhm2I= 34 | 35 | Modules/ClockHandRotationEffect.swiftmodule/x86_64-apple-ios-simulator.swiftinterface 36 | 37 | j4O7RknovyYwlMPqlnbeLEFIQOM= 38 | 39 | Modules/ClockHandRotationEffect.swiftmodule/x86_64-apple-ios-simulator.swiftmodule 40 | 41 | XsWV0kZKoSmFjDLYu36N3kzHdTQ= 42 | 43 | Modules/module.modulemap 44 | 45 | a/nfhsw6dlVy541QqT0cl62tXNU= 46 | 47 | 48 | files2 49 | 50 | Headers/ClockHandRotationEffect-Swift.h 51 | 52 | hash2 53 | 54 | ukjfAI+BE6WvqdwJ0WoWjp9+FVAXAjX7sBewVUeAEJI= 55 | 56 | 57 | Headers/ClockHandRotationEffect.h 58 | 59 | hash2 60 | 61 | PvbJDa3lD38QZdf/0HqibTmkGqC4D/t+elQPs9IqWS0= 62 | 63 | 64 | Modules/ClockHandRotationEffect.swiftmodule/arm64-apple-ios-simulator.swiftdoc 65 | 66 | hash2 67 | 68 | mqi2421+M+MnWhkJ78LmprKCg7DYB0hZ1Di3rx/jBRU= 69 | 70 | 71 | Modules/ClockHandRotationEffect.swiftmodule/arm64-apple-ios-simulator.swiftinterface 72 | 73 | hash2 74 | 75 | Zio+CSE6SUb5zbv6Xr5eMjLVj23G/Kq/PUIn4L+pHE4= 76 | 77 | 78 | Modules/ClockHandRotationEffect.swiftmodule/arm64-apple-ios-simulator.swiftmodule 79 | 80 | hash2 81 | 82 | q98svsddvj10evDUQvVDfbEfCSRF7XKzdBGwvAOxpYc= 83 | 84 | 85 | Modules/ClockHandRotationEffect.swiftmodule/x86_64-apple-ios-simulator.swiftdoc 86 | 87 | hash2 88 | 89 | Ci+vhtv6RdiVR7Hn0HxALcQRVLZ+z/b0OR77hbqvBfU= 90 | 91 | 92 | Modules/ClockHandRotationEffect.swiftmodule/x86_64-apple-ios-simulator.swiftinterface 93 | 94 | hash2 95 | 96 | Ej3Km9wrmF2/ksF+2boIORCNs+zwG87T8LAEEmKoZmM= 97 | 98 | 99 | Modules/ClockHandRotationEffect.swiftmodule/x86_64-apple-ios-simulator.swiftmodule 100 | 101 | hash2 102 | 103 | HeS468gSjKUDci/bzMufk1fOOioVFz3PCR8CcxhT2Yw= 104 | 105 | 106 | Modules/module.modulemap 107 | 108 | hash2 109 | 110 | DMx8FvhS7XlKxYYy0FDlUkXUXpl3p+8a4Fhurr47fdo= 111 | 112 | 113 | 114 | rules 115 | 116 | ^.* 117 | 118 | ^.*\.lproj/ 119 | 120 | optional 121 | 122 | weight 123 | 1000 124 | 125 | ^.*\.lproj/locversion.plist$ 126 | 127 | omit 128 | 129 | weight 130 | 1100 131 | 132 | ^Base\.lproj/ 133 | 134 | weight 135 | 1010 136 | 137 | ^version.plist$ 138 | 139 | 140 | rules2 141 | 142 | .*\.dSYM($|/) 143 | 144 | weight 145 | 11 146 | 147 | ^(.*/)?\.DS_Store$ 148 | 149 | omit 150 | 151 | weight 152 | 2000 153 | 154 | ^.* 155 | 156 | ^.*\.lproj/ 157 | 158 | optional 159 | 160 | weight 161 | 1000 162 | 163 | ^.*\.lproj/locversion.plist$ 164 | 165 | omit 166 | 167 | weight 168 | 1100 169 | 170 | ^Base\.lproj/ 171 | 172 | weight 173 | 1010 174 | 175 | ^Info\.plist$ 176 | 177 | omit 178 | 179 | weight 180 | 20 181 | 182 | ^PkgInfo$ 183 | 184 | omit 185 | 186 | weight 187 | 20 188 | 189 | ^embedded\.provisionprofile$ 190 | 191 | weight 192 | 20 193 | 194 | ^version\.plist$ 195 | 196 | weight 197 | 20 198 | 199 | 200 | 201 | 202 | -------------------------------------------------------------------------------- /Widget/Widget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Widget.swift 3 | // Widget 4 | // 5 | // Created by Bryce Bostwick on 5/9/25. 6 | // 7 | 8 | import WidgetKit 9 | import SwiftUI 10 | 11 | struct WidgetEntryView : View { 12 | 13 | var entry: Provider.Entry 14 | 15 | /** 16 | Shows a 30-second long looping animation running at 8 FPS 17 | (though you can get up to 30+ FPS with this technique). 18 | 19 | Uses 17 custom fonts — 16 of the fonts contain the actual frames for the animation, where each 20 | font contains every 16th frame: 21 | 22 | `CatFont0` - Contains frames 0, 16, 32, 48, etc 23 | `CatFont1` - Contains frames 1, 17, 33, 49, etc 24 | `CatFont2` - Contains frames 2, 18, 34, 50, etc 25 | 26 | The 17th font contains a square that blinks on and off - e.g., shows a solid square for one second, 27 | then nothing for a second, then a solid square again. 28 | 29 | The cat fonts are then used in timers that are stacked on top of eachother — the blinking font is then 30 | used to reveal each timer in sequence, so that we see `CatFont0`, and then `CatFont1` a frame later, 31 | then `CatFont2` a frame after that, all the way up to `CatFont15`. 32 | 33 | The frame after `CatFont15` is shown, we hide it to loop back to `CatFont0` — which at this point, 34 | has moved on to now show frame 16 (since it itself is a timer!). The next frame show `CatFont1` 35 | (whichi s now showing frame 17), and so on. 36 | */ 37 | var body: some View { 38 | 39 | // Since we're creating a bunch of timers, we want them to all 40 | // be animating relative to the same predictable starting date. 41 | // We set that date to be a bit in the past since we add some time offsets 42 | // to different timers; we want to make sure after those additions, 43 | // all timers still started sometime in the past. 44 | let referenceDate = Date() - 60 45 | 46 | // Hardcoded frame count: we are showing 8 frames per second, and 47 | // we need to show at least 2 seconds' worth of frames (because 48 | // of the periodic nature of our blinking timer view, which blinks 49 | // on for a second, then of for a second). 8 * 2 = 16 total frames 50 | let frameCount = 16 51 | 52 | // Animate at 8 frames per second 53 | let frameDuration = 1 / CGFloat(8) 54 | 55 | // Hardcoded widget size to make life a bit easier. 56 | // In an actual application, you'd obviously want to read this 57 | // value from elsewhere 58 | let size: CGFloat = 364 59 | 60 | // Create two different stacks of frames: one for the first half 61 | // of frames, and one for the second half 62 | ZStack { 63 | 64 | // The first stack of frames (always on-screen, so sometimes 65 | // blocked by the second stack) 66 | ZStack { 67 | 68 | // The first frame should always be on-screen; it will mostly 69 | // be blocked by other frames, but if all other frames are currently 70 | // hidden, we want this frame to be visible by default 71 | Text(referenceDate + 1, style: .timer) 72 | .font(Font.custom("CatFont0-Regular", size: size)) 73 | .centerLastCharacer(size: size) 74 | 75 | // For the rest of the first half of frames, create each frame... 76 | ForEach(1 ..< (frameCount / 2), id: \.self) { i in 77 | Text(referenceDate + 1 + frameDuration * CGFloat(i), style: .timer) 78 | .font(Font.custom("CatFont\(i)-Regular", size: size)) 79 | .centerLastCharacer(size: size) 80 | .mask( 81 | // ... and set the frame to appear one `frameDuration` after the last 82 | SimpleBlinkingView(blinkOffset: CGFloat(-i) * frameDuration) 83 | .frame(width: size, height: size) 84 | ) 85 | } 86 | } 87 | 88 | // The second stack of frames (only on-screen half the time). 89 | // This allows us to stack all these frames on top of the first, and then 90 | // when it comes time to loop the entire animation, hide this entire stack 91 | // so that we can see the initial frames again 92 | ZStack { 93 | 94 | // Very similar to above; create a stack of frames, 95 | // and show each frame one `frameDuration` after the last 96 | ForEach((frameCount / 2) ..< frameCount, id: \.self) { i in 97 | Text(referenceDate + 1 + frameDuration * CGFloat(i), style: .timer) 98 | .font(Font.custom("CatFont\(i)-Regular", size: size)) 99 | .centerLastCharacer(size: size) 100 | .mask( 101 | SimpleBlinkingView(blinkOffset: CGFloat(-i) * frameDuration) 102 | .frame(width: size, height: size) 103 | ) 104 | } 105 | } 106 | .mask( 107 | // Mask the entire second stack so that it's only visible from t=0 to t=1, 108 | // then invisble from t=1 to t=2, etc 109 | SimpleBlinkingView(blinkOffset: 1) 110 | .frame(width: size, height: size) 111 | ) 112 | } 113 | } 114 | } 115 | 116 | /** 117 | A simple blinking view — uses a timer with a custom font to blink on for a second, 118 | then off for a second, repeating infinitely 119 | */ 120 | struct SimpleBlinkingView: View { 121 | 122 | static let referenceDate = Date() - 60 123 | var blinkOffset: TimeInterval 124 | 125 | init(blinkOffset: TimeInterval) { 126 | self.blinkOffset = blinkOffset 127 | } 128 | 129 | var body: some View { 130 | GeometryReader { geometry in 131 | let maxSize = max( 132 | geometry.size.width, 133 | geometry.size.height 134 | ) 135 | 136 | Text(Self.referenceDate - blinkOffset, style: .timer) 137 | .font(Font.custom("Custom-Regular", size: maxSize)) 138 | .centerLastCharacer(size: maxSize, isInGeometryReader: true) 139 | } 140 | .clipped() 141 | } 142 | 143 | } 144 | 145 | extension Text { 146 | 147 | /** 148 | Small extension on `Text` to do three things: 149 | 1) Set a predictable frame size (reserve enough room to 150 | always show 9 digits of a timer; this makes the rest easier) 151 | 2) Give the last character of the timer a predictable position 152 | by using a trailing alignment (so that the last character is always 153 | at the end of the frame, rather than being pushed around depending 154 | on how many minutes / hours digits are visible) 155 | 3) Shift the entire timer so that the last character is now in the center of the view 156 | */ 157 | func centerLastCharacer(size: CGFloat, isInGeometryReader: Bool = false) -> some View { 158 | self 159 | .frame(width: size * 9, height: size) 160 | .multilineTextAlignment(.trailing) 161 | .offset(x: -size * (isInGeometryReader ? 8 : 4)) 162 | } 163 | 164 | 165 | } 166 | 167 | #Preview(as: .systemSmall) { 168 | AnimatedWidget() 169 | } timeline: { 170 | AnimatedWidgetEntry() 171 | } 172 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64/ClockHandRotationEffect.framework/Headers/ClockHandRotationEffect-Swift.h: -------------------------------------------------------------------------------- 1 | // Generated by Apple Swift version 5.6.1 (swiftlang-5.6.0.323.66 clang-1316.0.20.12) 2 | #ifndef CLOCKHANDROTATIONEFFECT_SWIFT_H 3 | #define CLOCKHANDROTATIONEFFECT_SWIFT_H 4 | #pragma clang diagnostic push 5 | #pragma clang diagnostic ignored "-Wgcc-compat" 6 | 7 | #if !defined(__has_include) 8 | # define __has_include(x) 0 9 | #endif 10 | #if !defined(__has_attribute) 11 | # define __has_attribute(x) 0 12 | #endif 13 | #if !defined(__has_feature) 14 | # define __has_feature(x) 0 15 | #endif 16 | #if !defined(__has_warning) 17 | # define __has_warning(x) 0 18 | #endif 19 | 20 | #if __has_include() 21 | # include 22 | #endif 23 | 24 | #pragma clang diagnostic ignored "-Wauto-import" 25 | #include 26 | #include 27 | #include 28 | #include 29 | 30 | #if !defined(SWIFT_TYPEDEFS) 31 | # define SWIFT_TYPEDEFS 1 32 | # if __has_include() 33 | # include 34 | # elif !defined(__cplusplus) 35 | typedef uint_least16_t char16_t; 36 | typedef uint_least32_t char32_t; 37 | # endif 38 | typedef float swift_float2 __attribute__((__ext_vector_type__(2))); 39 | typedef float swift_float3 __attribute__((__ext_vector_type__(3))); 40 | typedef float swift_float4 __attribute__((__ext_vector_type__(4))); 41 | typedef double swift_double2 __attribute__((__ext_vector_type__(2))); 42 | typedef double swift_double3 __attribute__((__ext_vector_type__(3))); 43 | typedef double swift_double4 __attribute__((__ext_vector_type__(4))); 44 | typedef int swift_int2 __attribute__((__ext_vector_type__(2))); 45 | typedef int swift_int3 __attribute__((__ext_vector_type__(3))); 46 | typedef int swift_int4 __attribute__((__ext_vector_type__(4))); 47 | typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); 48 | typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); 49 | typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); 50 | #endif 51 | 52 | #if !defined(SWIFT_PASTE) 53 | # define SWIFT_PASTE_HELPER(x, y) x##y 54 | # define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) 55 | #endif 56 | #if !defined(SWIFT_METATYPE) 57 | # define SWIFT_METATYPE(X) Class 58 | #endif 59 | #if !defined(SWIFT_CLASS_PROPERTY) 60 | # if __has_feature(objc_class_property) 61 | # define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ 62 | # else 63 | # define SWIFT_CLASS_PROPERTY(...) 64 | # endif 65 | #endif 66 | 67 | #if __has_attribute(objc_runtime_name) 68 | # define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) 69 | #else 70 | # define SWIFT_RUNTIME_NAME(X) 71 | #endif 72 | #if __has_attribute(swift_name) 73 | # define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) 74 | #else 75 | # define SWIFT_COMPILE_NAME(X) 76 | #endif 77 | #if __has_attribute(objc_method_family) 78 | # define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) 79 | #else 80 | # define SWIFT_METHOD_FAMILY(X) 81 | #endif 82 | #if __has_attribute(noescape) 83 | # define SWIFT_NOESCAPE __attribute__((noescape)) 84 | #else 85 | # define SWIFT_NOESCAPE 86 | #endif 87 | #if __has_attribute(ns_consumed) 88 | # define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) 89 | #else 90 | # define SWIFT_RELEASES_ARGUMENT 91 | #endif 92 | #if __has_attribute(warn_unused_result) 93 | # define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) 94 | #else 95 | # define SWIFT_WARN_UNUSED_RESULT 96 | #endif 97 | #if __has_attribute(noreturn) 98 | # define SWIFT_NORETURN __attribute__((noreturn)) 99 | #else 100 | # define SWIFT_NORETURN 101 | #endif 102 | #if !defined(SWIFT_CLASS_EXTRA) 103 | # define SWIFT_CLASS_EXTRA 104 | #endif 105 | #if !defined(SWIFT_PROTOCOL_EXTRA) 106 | # define SWIFT_PROTOCOL_EXTRA 107 | #endif 108 | #if !defined(SWIFT_ENUM_EXTRA) 109 | # define SWIFT_ENUM_EXTRA 110 | #endif 111 | #if !defined(SWIFT_CLASS) 112 | # if __has_attribute(objc_subclassing_restricted) 113 | # define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA 114 | # define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA 115 | # else 116 | # define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA 117 | # define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA 118 | # endif 119 | #endif 120 | #if !defined(SWIFT_RESILIENT_CLASS) 121 | # if __has_attribute(objc_class_stub) 122 | # define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) 123 | # define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) 124 | # else 125 | # define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) 126 | # define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) 127 | # endif 128 | #endif 129 | 130 | #if !defined(SWIFT_PROTOCOL) 131 | # define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA 132 | # define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA 133 | #endif 134 | 135 | #if !defined(SWIFT_EXTENSION) 136 | # define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) 137 | #endif 138 | 139 | #if !defined(OBJC_DESIGNATED_INITIALIZER) 140 | # if __has_attribute(objc_designated_initializer) 141 | # define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) 142 | # else 143 | # define OBJC_DESIGNATED_INITIALIZER 144 | # endif 145 | #endif 146 | #if !defined(SWIFT_ENUM_ATTR) 147 | # if defined(__has_attribute) && __has_attribute(enum_extensibility) 148 | # define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) 149 | # else 150 | # define SWIFT_ENUM_ATTR(_extensibility) 151 | # endif 152 | #endif 153 | #if !defined(SWIFT_ENUM) 154 | # define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type 155 | # if __has_feature(generalized_swift_name) 156 | # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type 157 | # else 158 | # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) 159 | # endif 160 | #endif 161 | #if !defined(SWIFT_UNAVAILABLE) 162 | # define SWIFT_UNAVAILABLE __attribute__((unavailable)) 163 | #endif 164 | #if !defined(SWIFT_UNAVAILABLE_MSG) 165 | # define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) 166 | #endif 167 | #if !defined(SWIFT_AVAILABILITY) 168 | # define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) 169 | #endif 170 | #if !defined(SWIFT_WEAK_IMPORT) 171 | # define SWIFT_WEAK_IMPORT __attribute__((weak_import)) 172 | #endif 173 | #if !defined(SWIFT_DEPRECATED) 174 | # define SWIFT_DEPRECATED __attribute__((deprecated)) 175 | #endif 176 | #if !defined(SWIFT_DEPRECATED_MSG) 177 | # define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) 178 | #endif 179 | #if __has_feature(attribute_diagnose_if_objc) 180 | # define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) 181 | #else 182 | # define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) 183 | #endif 184 | #if !defined(IBSegueAction) 185 | # define IBSegueAction 186 | #endif 187 | #if !defined(SWIFT_EXTERN) 188 | # if defined(__cplusplus) 189 | # define SWIFT_EXTERN extern "C" 190 | # else 191 | # define SWIFT_EXTERN extern 192 | # endif 193 | #endif 194 | #if __has_feature(modules) 195 | #if __has_warning("-Watimport-in-framework-header") 196 | #pragma clang diagnostic ignored "-Watimport-in-framework-header" 197 | #endif 198 | #endif 199 | 200 | #pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" 201 | #pragma clang diagnostic ignored "-Wduplicate-method-arg" 202 | #if __has_warning("-Wpragma-clang-attribute") 203 | # pragma clang diagnostic ignored "-Wpragma-clang-attribute" 204 | #endif 205 | #pragma clang diagnostic ignored "-Wunknown-pragmas" 206 | #pragma clang diagnostic ignored "-Wnullability" 207 | 208 | #if __has_attribute(external_source_symbol) 209 | # pragma push_macro("any") 210 | # undef any 211 | # pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="ClockHandRotationEffect",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) 212 | # pragma pop_macro("any") 213 | #endif 214 | 215 | #if __has_attribute(external_source_symbol) 216 | # pragma clang attribute pop 217 | #endif 218 | #pragma clang diagnostic pop 219 | #endif 220 | -------------------------------------------------------------------------------- /Widget/Frameworks/ClockHandRotationEffect.xcframework/ios-arm64_x86_64-simulator/ClockHandRotationEffect.framework/Headers/ClockHandRotationEffect-Swift.h: -------------------------------------------------------------------------------- 1 | #if 0 2 | #elif defined(__arm64__) && __arm64__ 3 | // Generated by Apple Swift version 5.6.1 (swiftlang-5.6.0.323.66 clang-1316.0.20.12) 4 | #ifndef CLOCKHANDROTATIONEFFECT_SWIFT_H 5 | #define CLOCKHANDROTATIONEFFECT_SWIFT_H 6 | #pragma clang diagnostic push 7 | #pragma clang diagnostic ignored "-Wgcc-compat" 8 | 9 | #if !defined(__has_include) 10 | # define __has_include(x) 0 11 | #endif 12 | #if !defined(__has_attribute) 13 | # define __has_attribute(x) 0 14 | #endif 15 | #if !defined(__has_feature) 16 | # define __has_feature(x) 0 17 | #endif 18 | #if !defined(__has_warning) 19 | # define __has_warning(x) 0 20 | #endif 21 | 22 | #if __has_include() 23 | # include 24 | #endif 25 | 26 | #pragma clang diagnostic ignored "-Wauto-import" 27 | #include 28 | #include 29 | #include 30 | #include 31 | 32 | #if !defined(SWIFT_TYPEDEFS) 33 | # define SWIFT_TYPEDEFS 1 34 | # if __has_include() 35 | # include 36 | # elif !defined(__cplusplus) 37 | typedef uint_least16_t char16_t; 38 | typedef uint_least32_t char32_t; 39 | # endif 40 | typedef float swift_float2 __attribute__((__ext_vector_type__(2))); 41 | typedef float swift_float3 __attribute__((__ext_vector_type__(3))); 42 | typedef float swift_float4 __attribute__((__ext_vector_type__(4))); 43 | typedef double swift_double2 __attribute__((__ext_vector_type__(2))); 44 | typedef double swift_double3 __attribute__((__ext_vector_type__(3))); 45 | typedef double swift_double4 __attribute__((__ext_vector_type__(4))); 46 | typedef int swift_int2 __attribute__((__ext_vector_type__(2))); 47 | typedef int swift_int3 __attribute__((__ext_vector_type__(3))); 48 | typedef int swift_int4 __attribute__((__ext_vector_type__(4))); 49 | typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); 50 | typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); 51 | typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); 52 | #endif 53 | 54 | #if !defined(SWIFT_PASTE) 55 | # define SWIFT_PASTE_HELPER(x, y) x##y 56 | # define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) 57 | #endif 58 | #if !defined(SWIFT_METATYPE) 59 | # define SWIFT_METATYPE(X) Class 60 | #endif 61 | #if !defined(SWIFT_CLASS_PROPERTY) 62 | # if __has_feature(objc_class_property) 63 | # define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ 64 | # else 65 | # define SWIFT_CLASS_PROPERTY(...) 66 | # endif 67 | #endif 68 | 69 | #if __has_attribute(objc_runtime_name) 70 | # define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) 71 | #else 72 | # define SWIFT_RUNTIME_NAME(X) 73 | #endif 74 | #if __has_attribute(swift_name) 75 | # define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) 76 | #else 77 | # define SWIFT_COMPILE_NAME(X) 78 | #endif 79 | #if __has_attribute(objc_method_family) 80 | # define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) 81 | #else 82 | # define SWIFT_METHOD_FAMILY(X) 83 | #endif 84 | #if __has_attribute(noescape) 85 | # define SWIFT_NOESCAPE __attribute__((noescape)) 86 | #else 87 | # define SWIFT_NOESCAPE 88 | #endif 89 | #if __has_attribute(ns_consumed) 90 | # define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) 91 | #else 92 | # define SWIFT_RELEASES_ARGUMENT 93 | #endif 94 | #if __has_attribute(warn_unused_result) 95 | # define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) 96 | #else 97 | # define SWIFT_WARN_UNUSED_RESULT 98 | #endif 99 | #if __has_attribute(noreturn) 100 | # define SWIFT_NORETURN __attribute__((noreturn)) 101 | #else 102 | # define SWIFT_NORETURN 103 | #endif 104 | #if !defined(SWIFT_CLASS_EXTRA) 105 | # define SWIFT_CLASS_EXTRA 106 | #endif 107 | #if !defined(SWIFT_PROTOCOL_EXTRA) 108 | # define SWIFT_PROTOCOL_EXTRA 109 | #endif 110 | #if !defined(SWIFT_ENUM_EXTRA) 111 | # define SWIFT_ENUM_EXTRA 112 | #endif 113 | #if !defined(SWIFT_CLASS) 114 | # if __has_attribute(objc_subclassing_restricted) 115 | # define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA 116 | # define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA 117 | # else 118 | # define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA 119 | # define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA 120 | # endif 121 | #endif 122 | #if !defined(SWIFT_RESILIENT_CLASS) 123 | # if __has_attribute(objc_class_stub) 124 | # define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) 125 | # define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) 126 | # else 127 | # define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) 128 | # define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) 129 | # endif 130 | #endif 131 | 132 | #if !defined(SWIFT_PROTOCOL) 133 | # define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA 134 | # define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA 135 | #endif 136 | 137 | #if !defined(SWIFT_EXTENSION) 138 | # define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) 139 | #endif 140 | 141 | #if !defined(OBJC_DESIGNATED_INITIALIZER) 142 | # if __has_attribute(objc_designated_initializer) 143 | # define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) 144 | # else 145 | # define OBJC_DESIGNATED_INITIALIZER 146 | # endif 147 | #endif 148 | #if !defined(SWIFT_ENUM_ATTR) 149 | # if defined(__has_attribute) && __has_attribute(enum_extensibility) 150 | # define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) 151 | # else 152 | # define SWIFT_ENUM_ATTR(_extensibility) 153 | # endif 154 | #endif 155 | #if !defined(SWIFT_ENUM) 156 | # define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type 157 | # if __has_feature(generalized_swift_name) 158 | # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type 159 | # else 160 | # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) 161 | # endif 162 | #endif 163 | #if !defined(SWIFT_UNAVAILABLE) 164 | # define SWIFT_UNAVAILABLE __attribute__((unavailable)) 165 | #endif 166 | #if !defined(SWIFT_UNAVAILABLE_MSG) 167 | # define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) 168 | #endif 169 | #if !defined(SWIFT_AVAILABILITY) 170 | # define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) 171 | #endif 172 | #if !defined(SWIFT_WEAK_IMPORT) 173 | # define SWIFT_WEAK_IMPORT __attribute__((weak_import)) 174 | #endif 175 | #if !defined(SWIFT_DEPRECATED) 176 | # define SWIFT_DEPRECATED __attribute__((deprecated)) 177 | #endif 178 | #if !defined(SWIFT_DEPRECATED_MSG) 179 | # define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) 180 | #endif 181 | #if __has_feature(attribute_diagnose_if_objc) 182 | # define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) 183 | #else 184 | # define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) 185 | #endif 186 | #if !defined(IBSegueAction) 187 | # define IBSegueAction 188 | #endif 189 | #if !defined(SWIFT_EXTERN) 190 | # if defined(__cplusplus) 191 | # define SWIFT_EXTERN extern "C" 192 | # else 193 | # define SWIFT_EXTERN extern 194 | # endif 195 | #endif 196 | #if __has_feature(modules) 197 | #if __has_warning("-Watimport-in-framework-header") 198 | #pragma clang diagnostic ignored "-Watimport-in-framework-header" 199 | #endif 200 | #endif 201 | 202 | #pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" 203 | #pragma clang diagnostic ignored "-Wduplicate-method-arg" 204 | #if __has_warning("-Wpragma-clang-attribute") 205 | # pragma clang diagnostic ignored "-Wpragma-clang-attribute" 206 | #endif 207 | #pragma clang diagnostic ignored "-Wunknown-pragmas" 208 | #pragma clang diagnostic ignored "-Wnullability" 209 | 210 | #if __has_attribute(external_source_symbol) 211 | # pragma push_macro("any") 212 | # undef any 213 | # pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="ClockHandRotationEffect",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) 214 | # pragma pop_macro("any") 215 | #endif 216 | 217 | #if __has_attribute(external_source_symbol) 218 | # pragma clang attribute pop 219 | #endif 220 | #pragma clang diagnostic pop 221 | #endif 222 | 223 | #elif defined(__x86_64__) && __x86_64__ 224 | // Generated by Apple Swift version 5.6.1 (swiftlang-5.6.0.323.66 clang-1316.0.20.12) 225 | #ifndef CLOCKHANDROTATIONEFFECT_SWIFT_H 226 | #define CLOCKHANDROTATIONEFFECT_SWIFT_H 227 | #pragma clang diagnostic push 228 | #pragma clang diagnostic ignored "-Wgcc-compat" 229 | 230 | #if !defined(__has_include) 231 | # define __has_include(x) 0 232 | #endif 233 | #if !defined(__has_attribute) 234 | # define __has_attribute(x) 0 235 | #endif 236 | #if !defined(__has_feature) 237 | # define __has_feature(x) 0 238 | #endif 239 | #if !defined(__has_warning) 240 | # define __has_warning(x) 0 241 | #endif 242 | 243 | #if __has_include() 244 | # include 245 | #endif 246 | 247 | #pragma clang diagnostic ignored "-Wauto-import" 248 | #include 249 | #include 250 | #include 251 | #include 252 | 253 | #if !defined(SWIFT_TYPEDEFS) 254 | # define SWIFT_TYPEDEFS 1 255 | # if __has_include() 256 | # include 257 | # elif !defined(__cplusplus) 258 | typedef uint_least16_t char16_t; 259 | typedef uint_least32_t char32_t; 260 | # endif 261 | typedef float swift_float2 __attribute__((__ext_vector_type__(2))); 262 | typedef float swift_float3 __attribute__((__ext_vector_type__(3))); 263 | typedef float swift_float4 __attribute__((__ext_vector_type__(4))); 264 | typedef double swift_double2 __attribute__((__ext_vector_type__(2))); 265 | typedef double swift_double3 __attribute__((__ext_vector_type__(3))); 266 | typedef double swift_double4 __attribute__((__ext_vector_type__(4))); 267 | typedef int swift_int2 __attribute__((__ext_vector_type__(2))); 268 | typedef int swift_int3 __attribute__((__ext_vector_type__(3))); 269 | typedef int swift_int4 __attribute__((__ext_vector_type__(4))); 270 | typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); 271 | typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); 272 | typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); 273 | #endif 274 | 275 | #if !defined(SWIFT_PASTE) 276 | # define SWIFT_PASTE_HELPER(x, y) x##y 277 | # define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) 278 | #endif 279 | #if !defined(SWIFT_METATYPE) 280 | # define SWIFT_METATYPE(X) Class 281 | #endif 282 | #if !defined(SWIFT_CLASS_PROPERTY) 283 | # if __has_feature(objc_class_property) 284 | # define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ 285 | # else 286 | # define SWIFT_CLASS_PROPERTY(...) 287 | # endif 288 | #endif 289 | 290 | #if __has_attribute(objc_runtime_name) 291 | # define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) 292 | #else 293 | # define SWIFT_RUNTIME_NAME(X) 294 | #endif 295 | #if __has_attribute(swift_name) 296 | # define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) 297 | #else 298 | # define SWIFT_COMPILE_NAME(X) 299 | #endif 300 | #if __has_attribute(objc_method_family) 301 | # define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) 302 | #else 303 | # define SWIFT_METHOD_FAMILY(X) 304 | #endif 305 | #if __has_attribute(noescape) 306 | # define SWIFT_NOESCAPE __attribute__((noescape)) 307 | #else 308 | # define SWIFT_NOESCAPE 309 | #endif 310 | #if __has_attribute(ns_consumed) 311 | # define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) 312 | #else 313 | # define SWIFT_RELEASES_ARGUMENT 314 | #endif 315 | #if __has_attribute(warn_unused_result) 316 | # define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) 317 | #else 318 | # define SWIFT_WARN_UNUSED_RESULT 319 | #endif 320 | #if __has_attribute(noreturn) 321 | # define SWIFT_NORETURN __attribute__((noreturn)) 322 | #else 323 | # define SWIFT_NORETURN 324 | #endif 325 | #if !defined(SWIFT_CLASS_EXTRA) 326 | # define SWIFT_CLASS_EXTRA 327 | #endif 328 | #if !defined(SWIFT_PROTOCOL_EXTRA) 329 | # define SWIFT_PROTOCOL_EXTRA 330 | #endif 331 | #if !defined(SWIFT_ENUM_EXTRA) 332 | # define SWIFT_ENUM_EXTRA 333 | #endif 334 | #if !defined(SWIFT_CLASS) 335 | # if __has_attribute(objc_subclassing_restricted) 336 | # define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA 337 | # define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA 338 | # else 339 | # define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA 340 | # define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA 341 | # endif 342 | #endif 343 | #if !defined(SWIFT_RESILIENT_CLASS) 344 | # if __has_attribute(objc_class_stub) 345 | # define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) 346 | # define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) 347 | # else 348 | # define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) 349 | # define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) 350 | # endif 351 | #endif 352 | 353 | #if !defined(SWIFT_PROTOCOL) 354 | # define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA 355 | # define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA 356 | #endif 357 | 358 | #if !defined(SWIFT_EXTENSION) 359 | # define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) 360 | #endif 361 | 362 | #if !defined(OBJC_DESIGNATED_INITIALIZER) 363 | # if __has_attribute(objc_designated_initializer) 364 | # define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) 365 | # else 366 | # define OBJC_DESIGNATED_INITIALIZER 367 | # endif 368 | #endif 369 | #if !defined(SWIFT_ENUM_ATTR) 370 | # if defined(__has_attribute) && __has_attribute(enum_extensibility) 371 | # define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) 372 | # else 373 | # define SWIFT_ENUM_ATTR(_extensibility) 374 | # endif 375 | #endif 376 | #if !defined(SWIFT_ENUM) 377 | # define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type 378 | # if __has_feature(generalized_swift_name) 379 | # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type 380 | # else 381 | # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) 382 | # endif 383 | #endif 384 | #if !defined(SWIFT_UNAVAILABLE) 385 | # define SWIFT_UNAVAILABLE __attribute__((unavailable)) 386 | #endif 387 | #if !defined(SWIFT_UNAVAILABLE_MSG) 388 | # define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) 389 | #endif 390 | #if !defined(SWIFT_AVAILABILITY) 391 | # define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) 392 | #endif 393 | #if !defined(SWIFT_WEAK_IMPORT) 394 | # define SWIFT_WEAK_IMPORT __attribute__((weak_import)) 395 | #endif 396 | #if !defined(SWIFT_DEPRECATED) 397 | # define SWIFT_DEPRECATED __attribute__((deprecated)) 398 | #endif 399 | #if !defined(SWIFT_DEPRECATED_MSG) 400 | # define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) 401 | #endif 402 | #if __has_feature(attribute_diagnose_if_objc) 403 | # define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) 404 | #else 405 | # define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) 406 | #endif 407 | #if !defined(IBSegueAction) 408 | # define IBSegueAction 409 | #endif 410 | #if !defined(SWIFT_EXTERN) 411 | # if defined(__cplusplus) 412 | # define SWIFT_EXTERN extern "C" 413 | # else 414 | # define SWIFT_EXTERN extern 415 | # endif 416 | #endif 417 | #if __has_feature(modules) 418 | #if __has_warning("-Watimport-in-framework-header") 419 | #pragma clang diagnostic ignored "-Watimport-in-framework-header" 420 | #endif 421 | #endif 422 | 423 | #pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" 424 | #pragma clang diagnostic ignored "-Wduplicate-method-arg" 425 | #if __has_warning("-Wpragma-clang-attribute") 426 | # pragma clang diagnostic ignored "-Wpragma-clang-attribute" 427 | #endif 428 | #pragma clang diagnostic ignored "-Wunknown-pragmas" 429 | #pragma clang diagnostic ignored "-Wnullability" 430 | 431 | #if __has_attribute(external_source_symbol) 432 | # pragma push_macro("any") 433 | # undef any 434 | # pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="ClockHandRotationEffect",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) 435 | # pragma pop_macro("any") 436 | #endif 437 | 438 | #if __has_attribute(external_source_symbol) 439 | # pragma clang attribute pop 440 | #endif 441 | #pragma clang diagnostic pop 442 | #endif 443 | 444 | #endif 445 | -------------------------------------------------------------------------------- /WidgetAnimation.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 77; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 0210CBBC2DCF0AA6000BA705 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0210CBBB2DCF0AA6000BA705 /* WidgetKit.framework */; }; 11 | 0210CBBE2DCF0AA6000BA705 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0210CBBD2DCF0AA6000BA705 /* SwiftUI.framework */; }; 12 | 0210CBC92DCF0AAA000BA705 /* WidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 0210CBB92DCF0AA6000BA705 /* WidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 13 | /* End PBXBuildFile section */ 14 | 15 | /* Begin PBXContainerItemProxy section */ 16 | 0210CBC72DCF0AAA000BA705 /* PBXContainerItemProxy */ = { 17 | isa = PBXContainerItemProxy; 18 | containerPortal = 0210CB9B2DCF0A10000BA705 /* Project object */; 19 | proxyType = 1; 20 | remoteGlobalIDString = 0210CBB82DCF0AA6000BA705; 21 | remoteInfo = WidgetExtension; 22 | }; 23 | /* End PBXContainerItemProxy section */ 24 | 25 | /* Begin PBXCopyFilesBuildPhase section */ 26 | 0210CBCE2DCF0AAA000BA705 /* Embed Foundation Extensions */ = { 27 | isa = PBXCopyFilesBuildPhase; 28 | buildActionMask = 2147483647; 29 | dstPath = ""; 30 | dstSubfolderSpec = 13; 31 | files = ( 32 | 0210CBC92DCF0AAA000BA705 /* WidgetExtension.appex in Embed Foundation Extensions */, 33 | ); 34 | name = "Embed Foundation Extensions"; 35 | runOnlyForDeploymentPostprocessing = 0; 36 | }; 37 | /* End PBXCopyFilesBuildPhase section */ 38 | 39 | /* Begin PBXFileReference section */ 40 | 0210CBA32DCF0A10000BA705 /* WidgetAnimation.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WidgetAnimation.app; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 0210CBB92DCF0AA6000BA705 /* WidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = WidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 42 | 0210CBBB2DCF0AA6000BA705 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; 43 | 0210CBBD2DCF0AA6000BA705 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; 44 | /* End PBXFileReference section */ 45 | 46 | /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ 47 | 0210CBCA2DCF0AAA000BA705 /* Exceptions for "Widget" folder in "WidgetExtension" target */ = { 48 | isa = PBXFileSystemSynchronizedBuildFileExceptionSet; 49 | membershipExceptions = ( 50 | "Supporting Files/Info.plist", 51 | ); 52 | target = 0210CBB82DCF0AA6000BA705 /* WidgetExtension */; 53 | }; 54 | /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ 55 | 56 | /* Begin PBXFileSystemSynchronizedRootGroup section */ 57 | 0210CBBF2DCF0AA6000BA705 /* Widget */ = { 58 | isa = PBXFileSystemSynchronizedRootGroup; 59 | exceptions = ( 60 | 0210CBCA2DCF0AAA000BA705 /* Exceptions for "Widget" folder in "WidgetExtension" target */, 61 | ); 62 | path = Widget; 63 | sourceTree = ""; 64 | }; 65 | 0210CBD42DCF0AC1000BA705 /* App */ = { 66 | isa = PBXFileSystemSynchronizedRootGroup; 67 | path = App; 68 | sourceTree = ""; 69 | }; 70 | /* End PBXFileSystemSynchronizedRootGroup section */ 71 | 72 | /* Begin PBXFrameworksBuildPhase section */ 73 | 0210CBA02DCF0A10000BA705 /* Frameworks */ = { 74 | isa = PBXFrameworksBuildPhase; 75 | buildActionMask = 2147483647; 76 | files = ( 77 | ); 78 | runOnlyForDeploymentPostprocessing = 0; 79 | }; 80 | 0210CBB62DCF0AA6000BA705 /* Frameworks */ = { 81 | isa = PBXFrameworksBuildPhase; 82 | buildActionMask = 2147483647; 83 | files = ( 84 | 0210CBBE2DCF0AA6000BA705 /* SwiftUI.framework in Frameworks */, 85 | 0210CBBC2DCF0AA6000BA705 /* WidgetKit.framework in Frameworks */, 86 | ); 87 | runOnlyForDeploymentPostprocessing = 0; 88 | }; 89 | /* End PBXFrameworksBuildPhase section */ 90 | 91 | /* Begin PBXGroup section */ 92 | 0210CB9A2DCF0A10000BA705 = { 93 | isa = PBXGroup; 94 | children = ( 95 | 0210CBD42DCF0AC1000BA705 /* App */, 96 | 0210CBBF2DCF0AA6000BA705 /* Widget */, 97 | 0210CBBA2DCF0AA6000BA705 /* Frameworks */, 98 | 0210CBA42DCF0A10000BA705 /* Products */, 99 | ); 100 | sourceTree = ""; 101 | }; 102 | 0210CBA42DCF0A10000BA705 /* Products */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | 0210CBA32DCF0A10000BA705 /* WidgetAnimation.app */, 106 | 0210CBB92DCF0AA6000BA705 /* WidgetExtension.appex */, 107 | ); 108 | name = Products; 109 | sourceTree = ""; 110 | }; 111 | 0210CBBA2DCF0AA6000BA705 /* Frameworks */ = { 112 | isa = PBXGroup; 113 | children = ( 114 | 0210CBBB2DCF0AA6000BA705 /* WidgetKit.framework */, 115 | 0210CBBD2DCF0AA6000BA705 /* SwiftUI.framework */, 116 | ); 117 | name = Frameworks; 118 | sourceTree = ""; 119 | }; 120 | /* End PBXGroup section */ 121 | 122 | /* Begin PBXNativeTarget section */ 123 | 0210CBA22DCF0A10000BA705 /* WidgetAnimation */ = { 124 | isa = PBXNativeTarget; 125 | buildConfigurationList = 0210CBB12DCF0A11000BA705 /* Build configuration list for PBXNativeTarget "WidgetAnimation" */; 126 | buildPhases = ( 127 | 0210CB9F2DCF0A10000BA705 /* Sources */, 128 | 0210CBA02DCF0A10000BA705 /* Frameworks */, 129 | 0210CBA12DCF0A10000BA705 /* Resources */, 130 | 0210CBCE2DCF0AAA000BA705 /* Embed Foundation Extensions */, 131 | ); 132 | buildRules = ( 133 | ); 134 | dependencies = ( 135 | 0210CBC82DCF0AAA000BA705 /* PBXTargetDependency */, 136 | ); 137 | fileSystemSynchronizedGroups = ( 138 | 0210CBD42DCF0AC1000BA705 /* App */, 139 | ); 140 | name = WidgetAnimation; 141 | packageProductDependencies = ( 142 | ); 143 | productName = WidgetAnimation; 144 | productReference = 0210CBA32DCF0A10000BA705 /* WidgetAnimation.app */; 145 | productType = "com.apple.product-type.application"; 146 | }; 147 | 0210CBB82DCF0AA6000BA705 /* WidgetExtension */ = { 148 | isa = PBXNativeTarget; 149 | buildConfigurationList = 0210CBCB2DCF0AAA000BA705 /* Build configuration list for PBXNativeTarget "WidgetExtension" */; 150 | buildPhases = ( 151 | 0210CBB52DCF0AA6000BA705 /* Sources */, 152 | 0210CBB62DCF0AA6000BA705 /* Frameworks */, 153 | 0210CBB72DCF0AA6000BA705 /* Resources */, 154 | ); 155 | buildRules = ( 156 | ); 157 | dependencies = ( 158 | ); 159 | fileSystemSynchronizedGroups = ( 160 | 0210CBBF2DCF0AA6000BA705 /* Widget */, 161 | ); 162 | name = WidgetExtension; 163 | packageProductDependencies = ( 164 | ); 165 | productName = WidgetExtension; 166 | productReference = 0210CBB92DCF0AA6000BA705 /* WidgetExtension.appex */; 167 | productType = "com.apple.product-type.app-extension"; 168 | }; 169 | /* End PBXNativeTarget section */ 170 | 171 | /* Begin PBXProject section */ 172 | 0210CB9B2DCF0A10000BA705 /* Project object */ = { 173 | isa = PBXProject; 174 | attributes = { 175 | BuildIndependentTargetsInParallel = 1; 176 | LastSwiftUpdateCheck = 1620; 177 | LastUpgradeCheck = 1620; 178 | TargetAttributes = { 179 | 0210CBA22DCF0A10000BA705 = { 180 | CreatedOnToolsVersion = 16.2; 181 | }; 182 | 0210CBB82DCF0AA6000BA705 = { 183 | CreatedOnToolsVersion = 16.2; 184 | }; 185 | }; 186 | }; 187 | buildConfigurationList = 0210CB9E2DCF0A10000BA705 /* Build configuration list for PBXProject "WidgetAnimation" */; 188 | developmentRegion = en; 189 | hasScannedForEncodings = 0; 190 | knownRegions = ( 191 | en, 192 | Base, 193 | ); 194 | mainGroup = 0210CB9A2DCF0A10000BA705; 195 | minimizedProjectReferenceProxies = 1; 196 | preferredProjectObjectVersion = 77; 197 | productRefGroup = 0210CBA42DCF0A10000BA705 /* Products */; 198 | projectDirPath = ""; 199 | projectRoot = ""; 200 | targets = ( 201 | 0210CBA22DCF0A10000BA705 /* WidgetAnimation */, 202 | 0210CBB82DCF0AA6000BA705 /* WidgetExtension */, 203 | ); 204 | }; 205 | /* End PBXProject section */ 206 | 207 | /* Begin PBXResourcesBuildPhase section */ 208 | 0210CBA12DCF0A10000BA705 /* Resources */ = { 209 | isa = PBXResourcesBuildPhase; 210 | buildActionMask = 2147483647; 211 | files = ( 212 | ); 213 | runOnlyForDeploymentPostprocessing = 0; 214 | }; 215 | 0210CBB72DCF0AA6000BA705 /* Resources */ = { 216 | isa = PBXResourcesBuildPhase; 217 | buildActionMask = 2147483647; 218 | files = ( 219 | ); 220 | runOnlyForDeploymentPostprocessing = 0; 221 | }; 222 | /* End PBXResourcesBuildPhase section */ 223 | 224 | /* Begin PBXSourcesBuildPhase section */ 225 | 0210CB9F2DCF0A10000BA705 /* Sources */ = { 226 | isa = PBXSourcesBuildPhase; 227 | buildActionMask = 2147483647; 228 | files = ( 229 | ); 230 | runOnlyForDeploymentPostprocessing = 0; 231 | }; 232 | 0210CBB52DCF0AA6000BA705 /* Sources */ = { 233 | isa = PBXSourcesBuildPhase; 234 | buildActionMask = 2147483647; 235 | files = ( 236 | ); 237 | runOnlyForDeploymentPostprocessing = 0; 238 | }; 239 | /* End PBXSourcesBuildPhase section */ 240 | 241 | /* Begin PBXTargetDependency section */ 242 | 0210CBC82DCF0AAA000BA705 /* PBXTargetDependency */ = { 243 | isa = PBXTargetDependency; 244 | target = 0210CBB82DCF0AA6000BA705 /* WidgetExtension */; 245 | targetProxy = 0210CBC72DCF0AAA000BA705 /* PBXContainerItemProxy */; 246 | }; 247 | /* End PBXTargetDependency section */ 248 | 249 | /* Begin XCBuildConfiguration section */ 250 | 0210CBAF2DCF0A11000BA705 /* Debug */ = { 251 | isa = XCBuildConfiguration; 252 | buildSettings = { 253 | ALWAYS_SEARCH_USER_PATHS = NO; 254 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 255 | CLANG_ANALYZER_NONNULL = YES; 256 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 257 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 258 | CLANG_ENABLE_MODULES = YES; 259 | CLANG_ENABLE_OBJC_ARC = YES; 260 | CLANG_ENABLE_OBJC_WEAK = YES; 261 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 262 | CLANG_WARN_BOOL_CONVERSION = YES; 263 | CLANG_WARN_COMMA = YES; 264 | CLANG_WARN_CONSTANT_CONVERSION = YES; 265 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 266 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 267 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 268 | CLANG_WARN_EMPTY_BODY = YES; 269 | CLANG_WARN_ENUM_CONVERSION = YES; 270 | CLANG_WARN_INFINITE_RECURSION = YES; 271 | CLANG_WARN_INT_CONVERSION = YES; 272 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 273 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 274 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 275 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 276 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 277 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 278 | CLANG_WARN_STRICT_PROTOTYPES = YES; 279 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 280 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 281 | CLANG_WARN_UNREACHABLE_CODE = YES; 282 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 283 | COPY_PHASE_STRIP = NO; 284 | DEBUG_INFORMATION_FORMAT = dwarf; 285 | ENABLE_STRICT_OBJC_MSGSEND = YES; 286 | ENABLE_TESTABILITY = YES; 287 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 288 | GCC_C_LANGUAGE_STANDARD = gnu17; 289 | GCC_DYNAMIC_NO_PIC = NO; 290 | GCC_NO_COMMON_BLOCKS = YES; 291 | GCC_OPTIMIZATION_LEVEL = 0; 292 | GCC_PREPROCESSOR_DEFINITIONS = ( 293 | "DEBUG=1", 294 | "$(inherited)", 295 | ); 296 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 297 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 298 | GCC_WARN_UNDECLARED_SELECTOR = YES; 299 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 300 | GCC_WARN_UNUSED_FUNCTION = YES; 301 | GCC_WARN_UNUSED_VARIABLE = YES; 302 | IPHONEOS_DEPLOYMENT_TARGET = 18.2; 303 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES; 304 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 305 | MTL_FAST_MATH = YES; 306 | ONLY_ACTIVE_ARCH = YES; 307 | SDKROOT = iphoneos; 308 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; 309 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 310 | }; 311 | name = Debug; 312 | }; 313 | 0210CBB02DCF0A11000BA705 /* Release */ = { 314 | isa = XCBuildConfiguration; 315 | buildSettings = { 316 | ALWAYS_SEARCH_USER_PATHS = NO; 317 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 318 | CLANG_ANALYZER_NONNULL = YES; 319 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 320 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 321 | CLANG_ENABLE_MODULES = YES; 322 | CLANG_ENABLE_OBJC_ARC = YES; 323 | CLANG_ENABLE_OBJC_WEAK = YES; 324 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 325 | CLANG_WARN_BOOL_CONVERSION = YES; 326 | CLANG_WARN_COMMA = YES; 327 | CLANG_WARN_CONSTANT_CONVERSION = YES; 328 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 329 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 330 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 331 | CLANG_WARN_EMPTY_BODY = YES; 332 | CLANG_WARN_ENUM_CONVERSION = YES; 333 | CLANG_WARN_INFINITE_RECURSION = YES; 334 | CLANG_WARN_INT_CONVERSION = YES; 335 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 336 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 337 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 338 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 339 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 340 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 341 | CLANG_WARN_STRICT_PROTOTYPES = YES; 342 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 343 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 344 | CLANG_WARN_UNREACHABLE_CODE = YES; 345 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 346 | COPY_PHASE_STRIP = NO; 347 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 348 | ENABLE_NS_ASSERTIONS = NO; 349 | ENABLE_STRICT_OBJC_MSGSEND = YES; 350 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 351 | GCC_C_LANGUAGE_STANDARD = gnu17; 352 | GCC_NO_COMMON_BLOCKS = YES; 353 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 354 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 355 | GCC_WARN_UNDECLARED_SELECTOR = YES; 356 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 357 | GCC_WARN_UNUSED_FUNCTION = YES; 358 | GCC_WARN_UNUSED_VARIABLE = YES; 359 | IPHONEOS_DEPLOYMENT_TARGET = 18.2; 360 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES; 361 | MTL_ENABLE_DEBUG_INFO = NO; 362 | MTL_FAST_MATH = YES; 363 | SDKROOT = iphoneos; 364 | SWIFT_COMPILATION_MODE = wholemodule; 365 | VALIDATE_PRODUCT = YES; 366 | }; 367 | name = Release; 368 | }; 369 | 0210CBB22DCF0A11000BA705 /* Debug */ = { 370 | isa = XCBuildConfiguration; 371 | buildSettings = { 372 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 373 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 374 | CODE_SIGN_STYLE = Automatic; 375 | CURRENT_PROJECT_VERSION = 1; 376 | DEVELOPMENT_ASSET_PATHS = "\"App/Preview Content\""; 377 | DEVELOPMENT_TEAM = FGFSR7EX83; 378 | ENABLE_PREVIEWS = YES; 379 | GENERATE_INFOPLIST_FILE = YES; 380 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 381 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 382 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 383 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 384 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 385 | LD_RUNPATH_SEARCH_PATHS = ( 386 | "$(inherited)", 387 | "@executable_path/Frameworks", 388 | ); 389 | MARKETING_VERSION = 1.0; 390 | PRODUCT_BUNDLE_IDENTIFIER = co.bryce.WidgetAnimation; 391 | PRODUCT_NAME = "$(TARGET_NAME)"; 392 | SWIFT_EMIT_LOC_STRINGS = YES; 393 | SWIFT_VERSION = 5.0; 394 | TARGETED_DEVICE_FAMILY = "1,2"; 395 | }; 396 | name = Debug; 397 | }; 398 | 0210CBB32DCF0A11000BA705 /* Release */ = { 399 | isa = XCBuildConfiguration; 400 | buildSettings = { 401 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 402 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 403 | CODE_SIGN_STYLE = Automatic; 404 | CURRENT_PROJECT_VERSION = 1; 405 | DEVELOPMENT_ASSET_PATHS = "\"App/Preview Content\""; 406 | DEVELOPMENT_TEAM = FGFSR7EX83; 407 | ENABLE_PREVIEWS = YES; 408 | GENERATE_INFOPLIST_FILE = YES; 409 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 410 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 411 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 412 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 413 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 414 | LD_RUNPATH_SEARCH_PATHS = ( 415 | "$(inherited)", 416 | "@executable_path/Frameworks", 417 | ); 418 | MARKETING_VERSION = 1.0; 419 | PRODUCT_BUNDLE_IDENTIFIER = co.bryce.WidgetAnimation; 420 | PRODUCT_NAME = "$(TARGET_NAME)"; 421 | SWIFT_EMIT_LOC_STRINGS = YES; 422 | SWIFT_VERSION = 5.0; 423 | TARGETED_DEVICE_FAMILY = "1,2"; 424 | }; 425 | name = Release; 426 | }; 427 | 0210CBCC2DCF0AAA000BA705 /* Debug */ = { 428 | isa = XCBuildConfiguration; 429 | buildSettings = { 430 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 431 | ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; 432 | CODE_SIGN_STYLE = Automatic; 433 | CURRENT_PROJECT_VERSION = 1; 434 | DEVELOPMENT_TEAM = FGFSR7EX83; 435 | GENERATE_INFOPLIST_FILE = YES; 436 | INFOPLIST_FILE = "Widget/Supporting Files/Info.plist"; 437 | INFOPLIST_KEY_CFBundleDisplayName = Widget; 438 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 439 | LD_RUNPATH_SEARCH_PATHS = ( 440 | "$(inherited)", 441 | "@executable_path/Frameworks", 442 | "@executable_path/../../Frameworks", 443 | ); 444 | MARKETING_VERSION = 1.0; 445 | PRODUCT_BUNDLE_IDENTIFIER = co.bryce.WidgetAnimation.Widget; 446 | PRODUCT_NAME = "$(TARGET_NAME)"; 447 | SKIP_INSTALL = YES; 448 | SWIFT_EMIT_LOC_STRINGS = YES; 449 | SWIFT_VERSION = 5.0; 450 | TARGETED_DEVICE_FAMILY = "1,2"; 451 | }; 452 | name = Debug; 453 | }; 454 | 0210CBCD2DCF0AAA000BA705 /* Release */ = { 455 | isa = XCBuildConfiguration; 456 | buildSettings = { 457 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 458 | ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; 459 | CODE_SIGN_STYLE = Automatic; 460 | CURRENT_PROJECT_VERSION = 1; 461 | DEVELOPMENT_TEAM = FGFSR7EX83; 462 | GENERATE_INFOPLIST_FILE = YES; 463 | INFOPLIST_FILE = "Widget/Supporting Files/Info.plist"; 464 | INFOPLIST_KEY_CFBundleDisplayName = Widget; 465 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 466 | LD_RUNPATH_SEARCH_PATHS = ( 467 | "$(inherited)", 468 | "@executable_path/Frameworks", 469 | "@executable_path/../../Frameworks", 470 | ); 471 | MARKETING_VERSION = 1.0; 472 | PRODUCT_BUNDLE_IDENTIFIER = co.bryce.WidgetAnimation.Widget; 473 | PRODUCT_NAME = "$(TARGET_NAME)"; 474 | SKIP_INSTALL = YES; 475 | SWIFT_EMIT_LOC_STRINGS = YES; 476 | SWIFT_VERSION = 5.0; 477 | TARGETED_DEVICE_FAMILY = "1,2"; 478 | }; 479 | name = Release; 480 | }; 481 | /* End XCBuildConfiguration section */ 482 | 483 | /* Begin XCConfigurationList section */ 484 | 0210CB9E2DCF0A10000BA705 /* Build configuration list for PBXProject "WidgetAnimation" */ = { 485 | isa = XCConfigurationList; 486 | buildConfigurations = ( 487 | 0210CBAF2DCF0A11000BA705 /* Debug */, 488 | 0210CBB02DCF0A11000BA705 /* Release */, 489 | ); 490 | defaultConfigurationIsVisible = 0; 491 | defaultConfigurationName = Release; 492 | }; 493 | 0210CBB12DCF0A11000BA705 /* Build configuration list for PBXNativeTarget "WidgetAnimation" */ = { 494 | isa = XCConfigurationList; 495 | buildConfigurations = ( 496 | 0210CBB22DCF0A11000BA705 /* Debug */, 497 | 0210CBB32DCF0A11000BA705 /* Release */, 498 | ); 499 | defaultConfigurationIsVisible = 0; 500 | defaultConfigurationName = Release; 501 | }; 502 | 0210CBCB2DCF0AAA000BA705 /* Build configuration list for PBXNativeTarget "WidgetExtension" */ = { 503 | isa = XCConfigurationList; 504 | buildConfigurations = ( 505 | 0210CBCC2DCF0AAA000BA705 /* Debug */, 506 | 0210CBCD2DCF0AAA000BA705 /* Release */, 507 | ); 508 | defaultConfigurationIsVisible = 0; 509 | defaultConfigurationName = Release; 510 | }; 511 | /* End XCConfigurationList section */ 512 | }; 513 | rootObject = 0210CB9B2DCF0A10000BA705 /* Project object */; 514 | } 515 | --------------------------------------------------------------------------------