Forráskód Böngészése

Combine SwiftUI demo to the main iOS demo

onevcat 5 éve
szülő
commit
d3ff773d3c

+ 36 - 2
Demo/Demo/Kingfisher-Demo/Base.lproj/Main.storyboard

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="peg-r0-mlo">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="peg-r0-mlo">
     <device id="retina5_5" orientation="portrait" appearance="dark"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17125"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17703"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
@@ -395,6 +395,30 @@
                                             <segue destination="m5P-35-yHH" kind="show" id="iY4-PO-rZO"/>
                                         </connections>
                                     </tableViewCell>
+                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" id="TIF-8x-GLM">
+                                        <rect key="frame" x="0.0" y="512" width="414" height="44"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="TIF-8x-GLM" id="ykx-Ds-PkP">
+                                            <rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SwiftUI" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8BM-EA-MyK">
+                                                    <rect key="frame" x="19.999999999999996" y="11.666666666666664" width="54.666666666666657" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="8BM-EA-MyK" secondAttribute="trailing" constant="20" symbolic="YES" id="HIp-se-68O"/>
+                                                <constraint firstItem="8BM-EA-MyK" firstAttribute="centerY" secondItem="ykx-Ds-PkP" secondAttribute="centerY" id="YjV-XQ-ZBh"/>
+                                                <constraint firstItem="8BM-EA-MyK" firstAttribute="leading" secondItem="ykx-Ds-PkP" secondAttribute="leading" constant="20" symbolic="YES" id="wxa-xN-XPx"/>
+                                            </constraints>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <segue destination="7fx-Ak-QCf" kind="show" id="1FN-t9-66q"/>
+                                        </connections>
+                                    </tableViewCell>
                                 </cells>
                             </tableViewSection>
                         </sections>
@@ -888,6 +912,16 @@
             </objects>
             <point key="canvasLocation" x="1850.7246376811595" y="1735.5978260869567"/>
         </scene>
+        <!--SwiftUI View Controller-->
+        <scene sceneID="rw7-vi-6Ep">
+            <objects>
+                <hostingController id="7fx-Ak-QCf" customClass="SwiftUIViewController" customModule="Kingfisher_Demo" customModuleProvider="target" sceneMemberID="viewController">
+                    <navigationItem key="navigationItem" id="TII-JX-FOz"/>
+                </hostingController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="ep4-jy-p4V" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1043" y="1452"/>
+        </scene>
     </scenes>
     <resources>
         <systemColor name="secondaryLabelColor">

+ 16 - 19
Demo/Demo/Kingfisher-SwiftUI-Demo/MainView.swift → Demo/Demo/Kingfisher-Demo/SwiftUIViews/MainView.swift

@@ -25,33 +25,30 @@
 //  THE SOFTWARE.
 
 import SwiftUI
-import class Kingfisher.KingfisherManager
+import Kingfisher
 
+@available(iOS 13.0, *)
 struct MainView: View {
     var body: some View {
-
-        NavigationView {
-            List {
-                Button(
-                    action: {
-                        KingfisherManager.shared.cache.clearMemoryCache()
-                        KingfisherManager.shared.cache.clearDiskCache()
-                    },
-                    label: {
-                        Text("Clear Cache").foregroundColor(.blue)
-                    }
-                )
-                NavigationLink(destination: SwiftUIView()) { Text("Basic Image") }
-                NavigationLink(destination: SwiftUIList()) { Text("List") }
-            }.navigationBarTitle(Text("Kingfisher"))
-        }
+        List {
+            Button(
+                action: {
+                    KingfisherManager.shared.cache.clearMemoryCache()
+                    KingfisherManager.shared.cache.clearDiskCache()
+                },
+                label: {
+                    Text("Clear Cache").foregroundColor(.blue)
+                }
+            )
+            NavigationLink(destination: SwiftUIView()) { Text("Basic Image") }
+            NavigationLink(destination: SwiftUIList()) { Text("List") }
+        }.navigationBarTitle(Text("SwiftUI Sample"))
     }
 }
 
-#if DEBUG
+@available(iOS 13.0, *)
 struct MainView_Previews: PreviewProvider {
     static var previews: some View {
         MainView()
     }
 }
-#endif

+ 2 - 3
Demo/Demo/Kingfisher-SwiftUI-Demo/Views/SwiftUIList.swift → Demo/Demo/Kingfisher-Demo/SwiftUIViews/SwiftUIList.swift

@@ -24,10 +24,10 @@
 //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 //  THE SOFTWARE.
 
-import class Kingfisher.ImageCache
 import Kingfisher
 import SwiftUI
 
+@available(iOS 13.0, *)
 struct SwiftUIList : View {
 
     let index = 1 ..< 700
@@ -89,10 +89,9 @@ struct SwiftUIList : View {
     }
 }
 
-#if DEBUG
+@available(iOS 13.0, *)
 struct SwiftUIList_Previews : PreviewProvider {
     static var previews: some View {
         SwiftUIList()
     }
 }
-#endif

+ 2 - 2
Demo/Demo/Kingfisher-SwiftUI-Demo/Views/SwiftUIView.swift → Demo/Demo/Kingfisher-Demo/SwiftUIViews/SwiftUIView.swift

@@ -27,6 +27,7 @@
 import Kingfisher
 import SwiftUI
 
+@available(iOS 13.0, *)
 struct SwiftUIView : View {
 
     @State private var index = 1
@@ -58,10 +59,9 @@ struct SwiftUIView : View {
     }
 }
 
-#if DEBUG
+@available(iOS 13.0, *)
 struct SwiftUIView_Previews : PreviewProvider {
     static var previews: some View {
         SwiftUIView()
     }
 }
-#endif

+ 39 - 0
Demo/Demo/Kingfisher-Demo/ViewControllers/SwiftUIViewController.swift

@@ -0,0 +1,39 @@
+//
+//  SwiftUIViewController.swift
+//  Kingfisher
+//
+//  Created by onevcat on 2020/12/16.
+//
+//  Copyright (c) 2020 Wei Wang <onevcat@gmail.com>
+//
+//  Permission is hereby granted, free of charge, to any person obtaining a copy
+//  of this software and associated documentation files (the "Software"), to deal
+//  in the Software without restriction, including without limitation the rights
+//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+//  copies of the Software, and to permit persons to whom the Software is
+//  furnished to do so, subject to the following conditions:
+//
+//  The above copyright notice and this permission notice shall be included in
+//  all copies or substantial portions of the Software.
+//
+//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+//  THE SOFTWARE.
+
+import SwiftUI
+import UIKit
+
+@available(iOS 13.0, *)
+class SwiftUIViewController: UIHostingController<MainView> {
+    required init?(coder: NSCoder) {
+        super.init(coder: coder,rootView: MainView());
+    }
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+    }
+}

+ 0 - 55
Demo/Demo/Kingfisher-SwiftUI-Demo/AppDelegate.swift

@@ -1,55 +0,0 @@
-//
-//  AppDelegate.swift
-//  Kingfisher
-//
-//  Created by onevcat on 2019/08/18.
-//
-//  Copyright (c) 2019 Wei Wang <onevcat@gmail.com>
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy
-//  of this software and associated documentation files (the "Software"), to deal
-//  in the Software without restriction, including without limitation the rights
-//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-//  copies of the Software, and to permit persons to whom the Software is
-//  furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in
-//  all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-//  THE SOFTWARE.
-
-import UIKit
-
-@UIApplicationMain
-class AppDelegate: UIResponder, UIApplicationDelegate {
-
-
-
-    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
-        // Override point for customization after application launch.
-        return true
-    }
-
-    // MARK: UISceneSession Lifecycle
-
-    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
-        // Called when a new scene session is being created.
-        // Use this method to select a configuration to create the new scene with.
-        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
-    }
-
-    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
-        // Called when the user discards a scene session.
-        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
-        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
-    }
-
-
-}
-

+ 0 - 98
Demo/Demo/Kingfisher-SwiftUI-Demo/Assets.xcassets/AppIcon.appiconset/Contents.json

@@ -1,98 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "iphone",
-      "size" : "20x20",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "20x20",
-      "scale" : "3x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "29x29",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "29x29",
-      "scale" : "3x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "40x40",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "40x40",
-      "scale" : "3x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "60x60",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "60x60",
-      "scale" : "3x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "20x20",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "20x20",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "29x29",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "29x29",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "40x40",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "40x40",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "76x76",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "76x76",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "83.5x83.5",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "ios-marketing",
-      "size" : "1024x1024",
-      "scale" : "1x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

+ 0 - 6
Demo/Demo/Kingfisher-SwiftUI-Demo/Assets.xcassets/Contents.json

@@ -1,6 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

+ 0 - 25
Demo/Demo/Kingfisher-SwiftUI-Demo/Base.lproj/LaunchScreen.storyboard

@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
-    <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
-        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
-        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
-    </dependencies>
-    <scenes>
-        <!--View Controller-->
-        <scene sceneID="EHf-IW-A2E">
-            <objects>
-                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
-                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
-                        <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
-                    </view>
-                </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="53" y="375"/>
-        </scene>
-    </scenes>
-</document>

+ 0 - 60
Demo/Demo/Kingfisher-SwiftUI-Demo/Info.plist

@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>$(DEVELOPMENT_LANGUAGE)</string>
-	<key>CFBundleExecutable</key>
-	<string>$(EXECUTABLE_NAME)</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>$(PRODUCT_NAME)</string>
-	<key>CFBundlePackageType</key>
-	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
-	<key>CFBundleShortVersionString</key>
-	<string>1.0</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-	<key>LSRequiresIPhoneOS</key>
-	<true/>
-	<key>UIApplicationSceneManifest</key>
-	<dict>
-		<key>UIApplicationSupportsMultipleScenes</key>
-		<false/>
-		<key>UISceneConfigurations</key>
-		<dict>
-			<key>UIWindowSceneSessionRoleApplication</key>
-			<array>
-				<dict>
-					<key>UISceneConfigurationName</key>
-					<string>Default Configuration</string>
-					<key>UISceneDelegateClassName</key>
-					<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
-				</dict>
-			</array>
-		</dict>
-	</dict>
-	<key>UILaunchStoryboardName</key>
-	<string>LaunchScreen</string>
-	<key>UIRequiredDeviceCapabilities</key>
-	<array>
-		<string>armv7</string>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-	<key>UISupportedInterfaceOrientations~ipad</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-</dict>
-</plist>

+ 0 - 6
Demo/Demo/Kingfisher-SwiftUI-Demo/Preview Content/Preview Assets.xcassets/Contents.json

@@ -1,6 +0,0 @@
-{
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

+ 0 - 79
Demo/Demo/Kingfisher-SwiftUI-Demo/SceneDelegate.swift

@@ -1,79 +0,0 @@
-//
-//  SceneDelegate.swift
-//  Kingfisher
-//
-//  Created by onevcat on 2019/08/18.
-//
-//  Copyright (c) 2019 Wei Wang <onevcat@gmail.com>
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy
-//  of this software and associated documentation files (the "Software"), to deal
-//  in the Software without restriction, including without limitation the rights
-//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-//  copies of the Software, and to permit persons to whom the Software is
-//  furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in
-//  all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-//  THE SOFTWARE.
-
-import UIKit
-import SwiftUI
-
-class SceneDelegate: UIResponder, UIWindowSceneDelegate {
-
-    var window: UIWindow?
-
-
-    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
-        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
-        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
-        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
-
-        // Use a UIHostingController as window root view controller
-        if let windowScene = scene as? UIWindowScene {
-            let window = UIWindow(windowScene: windowScene)
-            window.rootViewController = UIHostingController(rootView: MainView())
-            self.window = window
-            window.makeKeyAndVisible()
-        }
-    }
-
-    func sceneDidDisconnect(_ scene: UIScene) {
-        // Called as the scene is being released by the system.
-        // This occurs shortly after the scene enters the background, or when its session is discarded.
-        // Release any resources associated with this scene that can be re-created the next time the scene connects.
-        // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
-    }
-
-    func sceneDidBecomeActive(_ scene: UIScene) {
-        // Called when the scene has moved from an inactive state to an active state.
-        // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
-    }
-
-    func sceneWillResignActive(_ scene: UIScene) {
-        // Called when the scene will move from an active state to an inactive state.
-        // This may occur due to temporary interruptions (ex. an incoming phone call).
-    }
-
-    func sceneWillEnterForeground(_ scene: UIScene) {
-        // Called as the scene transitions from the background to the foreground.
-        // Use this method to undo the changes made on entering the background.
-    }
-
-    func sceneDidEnterBackground(_ scene: UIScene) {
-        // Called as the scene transitions from the foreground to the background.
-        // Use this method to save data, release shared resources, and store enough scene-specific state information
-        // to restore the scene back to its current state.
-    }
-
-
-}
-

+ 19 - 186
Demo/Kingfisher-Demo.xcodeproj/project.pbxproj

@@ -27,8 +27,6 @@
 		4BE855562320F9CF00FE4205 /* Kingfisher.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4BE855542320F9CF00FE4205 /* Kingfisher.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		4BE855582320F9D300FE4205 /* Kingfisher.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BE855572320F9D300FE4205 /* Kingfisher.framework */; };
 		4BE855592320F9D300FE4205 /* Kingfisher.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4BE855572320F9D300FE4205 /* Kingfisher.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
-		4BE8555C2320F9D800FE4205 /* Kingfisher.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BE8555A2320F9D800FE4205 /* Kingfisher.framework */; };
-		4BE8555D2320F9D800FE4205 /* Kingfisher.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4BE8555A2320F9D800FE4205 /* Kingfisher.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		4BE855612320F9DE00FE4205 /* Kingfisher.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BE855602320F9DE00FE4205 /* Kingfisher.framework */; };
 		4BE855622320F9DE00FE4205 /* Kingfisher.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4BE855602320F9DE00FE4205 /* Kingfisher.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		C959EEE622874DC600467A10 /* ProgressiveJPEGViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C959EEE522874DC600467A10 /* ProgressiveJPEGViewController.swift */; };
@@ -57,14 +55,10 @@
 		D1F06F3521AA5938000B1C38 /* ImageCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D12E0C911C47F91800AC98AD /* ImageCollectionViewCell.swift */; };
 		D1F06F3721AAEACF000B1C38 /* GIFViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F06F3621AAEACF000B1C38 /* GIFViewController.swift */; };
 		D1F06F3921AAF1EE000B1C38 /* IndicatorCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F06F3821AAF1EE000B1C38 /* IndicatorCollectionViewController.swift */; };
-		D1F760B623098FA2000C5269 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D1F760AA23098FA2000C5269 /* Assets.xcassets */; };
-		D1F760B723098FA2000C5269 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D1F760AC23098FA2000C5269 /* Preview Assets.xcassets */; };
-		D1F760B823098FA2000C5269 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D1F760AD23098FA2000C5269 /* LaunchScreen.storyboard */; };
-		D1F760B923098FA2000C5269 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F760AF23098FA2000C5269 /* AppDelegate.swift */; };
-		D1F760BA23098FA2000C5269 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F760B023098FA2000C5269 /* MainView.swift */; };
-		D1F760BB23098FA2000C5269 /* SwiftUIList.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F760B223098FA2000C5269 /* SwiftUIList.swift */; };
-		D1F760BC23098FA2000C5269 /* SwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F760B323098FA2000C5269 /* SwiftUIView.swift */; };
-		D1F760BE23098FA2000C5269 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F760B523098FA2000C5269 /* SceneDelegate.swift */; };
+		D1F78A5F2589F0AA00930759 /* SwiftUIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F78A5E2589F0AA00930759 /* SwiftUIViewController.swift */; };
+		D1F78A642589F17200930759 /* SwiftUIList.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F78A612589F17200930759 /* SwiftUIList.swift */; };
+		D1F78A652589F17200930759 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F78A622589F17200930759 /* MainView.swift */; };
+		D1F78A662589F17200930759 /* SwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1F78A632589F17200930759 /* SwiftUIView.swift */; };
 		D1FAB06F21A853E600908910 /* HighResolutionCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1FAB06E21A853E600908910 /* HighResolutionCollectionViewController.swift */; };
 /* End PBXBuildFile section */
 
@@ -79,17 +73,6 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXCopyFilesBuildPhase section */
-		D10402B6230996BE00B3D4CB /* Embed Frameworks */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "";
-			dstSubfolderSpec = 10;
-			files = (
-				4BE8555D2320F9D800FE4205 /* Kingfisher.framework in Embed Frameworks */,
-			);
-			name = "Embed Frameworks";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		D12F2EEC1C4E7CF500B8054D /* Embed Frameworks */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
@@ -208,16 +191,10 @@
 		D1F06F3221AA4292000B1C38 /* DetailImageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailImageViewController.swift; sourceTree = "<group>"; };
 		D1F06F3621AAEACF000B1C38 /* GIFViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GIFViewController.swift; sourceTree = "<group>"; };
 		D1F06F3821AAF1EE000B1C38 /* IndicatorCollectionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IndicatorCollectionViewController.swift; sourceTree = "<group>"; };
-		D1F7609523098F62000C5269 /* Kingfisher-SwiftUI-Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Kingfisher-SwiftUI-Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; };
-		D1F760AA23098FA2000C5269 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
-		D1F760AC23098FA2000C5269 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
-		D1F760AE23098FA2000C5269 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
-		D1F760AF23098FA2000C5269 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
-		D1F760B023098FA2000C5269 /* MainView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = "<group>"; };
-		D1F760B223098FA2000C5269 /* SwiftUIList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftUIList.swift; sourceTree = "<group>"; };
-		D1F760B323098FA2000C5269 /* SwiftUIView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftUIView.swift; sourceTree = "<group>"; };
-		D1F760B423098FA2000C5269 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
-		D1F760B523098FA2000C5269 /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
+		D1F78A5E2589F0AA00930759 /* SwiftUIViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIViewController.swift; sourceTree = "<group>"; };
+		D1F78A612589F17200930759 /* SwiftUIList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftUIList.swift; sourceTree = "<group>"; };
+		D1F78A622589F17200930759 /* MainView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = "<group>"; };
+		D1F78A632589F17200930759 /* SwiftUIView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftUIView.swift; sourceTree = "<group>"; };
 		D1FAB06E21A853E600908910 /* HighResolutionCollectionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HighResolutionCollectionViewController.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
@@ -261,14 +238,6 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		D1F7609223098F62000C5269 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				4BE8555C2320F9D800FE4205 /* Kingfisher.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
@@ -325,7 +294,6 @@
 		D10EC22B1C3D62DE00A4211C /* Demo */ = {
 			isa = PBXGroup;
 			children = (
-				D1F760A923098FA2000C5269 /* Kingfisher-SwiftUI-Demo */,
 				D12E0C8B1C47F91800AC98AD /* Kingfisher-Demo */,
 				4BCCF3351D5B02F8003387C2 /* Kingfisher-macOS-Demo */,
 				D12E0C9C1C47F92200AC98AD /* Kingfisher-tvOS-Demo */,
@@ -343,6 +311,7 @@
 				D12EB83F24DDB9E000329EE1 /* LaunchScreen.storyboard */,
 				D12E0C8F1C47F91800AC98AD /* Main.storyboard */,
 				D1A1CCA921A1936300263AD8 /* ViewControllers */,
+				D1F78A602589F14C00930759 /* SwiftUIViews */,
 				D1A1CCA521A1895000263AD8 /* Extensions */,
 				D1A1CCAB21A1939100263AD8 /* Resources */,
 				D12E0C921C47F91800AC98AD /* Images.xcassets */,
@@ -388,6 +357,7 @@
 				C959EEE522874DC600467A10 /* ProgressiveJPEGViewController.swift */,
 				D12EB83D24DD902300329EE1 /* TextAttachmentViewController.swift */,
 				D16CC3D724E03FEA00F1A515 /* AVAssetImageGeneratorViewController.swift */,
+				D1F78A5E2589F0AA00930759 /* SwiftUIViewController.swift */,
 			);
 			path = ViewControllers;
 			sourceTree = "<group>";
@@ -419,42 +389,18 @@
 				4B2944551C3D03880088C3E7 /* Kingfisher-macOS-Demo.app */,
 				D1679A391C4E78B20020FD12 /* Kingfisher-watchOS-Demo.app */,
 				D1679A451C4E78B20020FD12 /* Kingfisher-watchOS-Demo Extension.appex */,
-				D1F7609523098F62000C5269 /* Kingfisher-SwiftUI-Demo.app */,
 			);
 			name = Products;
 			sourceTree = "<group>";
 		};
-		D1F760A923098FA2000C5269 /* Kingfisher-SwiftUI-Demo */ = {
-			isa = PBXGroup;
-			children = (
-				D1F760AA23098FA2000C5269 /* Assets.xcassets */,
-				D1F760AB23098FA2000C5269 /* Preview Content */,
-				D1F760AD23098FA2000C5269 /* LaunchScreen.storyboard */,
-				D1F760AF23098FA2000C5269 /* AppDelegate.swift */,
-				D1F760B023098FA2000C5269 /* MainView.swift */,
-				D1F760B123098FA2000C5269 /* Views */,
-				D1F760B423098FA2000C5269 /* Info.plist */,
-				D1F760B523098FA2000C5269 /* SceneDelegate.swift */,
-			);
-			name = "Kingfisher-SwiftUI-Demo";
-			path = "Demo/Kingfisher-SwiftUI-Demo";
-			sourceTree = "<group>";
-		};
-		D1F760AB23098FA2000C5269 /* Preview Content */ = {
-			isa = PBXGroup;
-			children = (
-				D1F760AC23098FA2000C5269 /* Preview Assets.xcassets */,
-			);
-			path = "Preview Content";
-			sourceTree = "<group>";
-		};
-		D1F760B123098FA2000C5269 /* Views */ = {
+		D1F78A602589F14C00930759 /* SwiftUIViews */ = {
 			isa = PBXGroup;
 			children = (
-				D1F760B223098FA2000C5269 /* SwiftUIList.swift */,
-				D1F760B323098FA2000C5269 /* SwiftUIView.swift */,
+				D1F78A622589F17200930759 /* MainView.swift */,
+				D1F78A612589F17200930759 /* SwiftUIList.swift */,
+				D1F78A632589F17200930759 /* SwiftUIView.swift */,
 			);
-			path = Views;
+			path = SwiftUIViews;
 			sourceTree = "<group>";
 		};
 /* End PBXGroup section */
@@ -551,24 +497,6 @@
 			productReference = D1ED2D0B1AD2CFA600CFC3EB /* Kingfisher-Demo.app */;
 			productType = "com.apple.product-type.application";
 		};
-		D1F7609423098F62000C5269 /* Kingfisher-SwiftUI-Demo */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = D1F760A623098F63000C5269 /* Build configuration list for PBXNativeTarget "Kingfisher-SwiftUI-Demo" */;
-			buildPhases = (
-				D1F7609123098F62000C5269 /* Sources */,
-				D1F7609223098F62000C5269 /* Frameworks */,
-				D1F7609323098F62000C5269 /* Resources */,
-				D10402B6230996BE00B3D4CB /* Embed Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = "Kingfisher-SwiftUI-Demo";
-			productName = "Kingfisher-SwiftUI-Demo";
-			productReference = D1F7609523098F62000C5269 /* Kingfisher-SwiftUI-Demo.app */;
-			productType = "com.apple.product-type.application";
-		};
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
@@ -604,11 +532,6 @@
 						DevelopmentTeam = A4YJ9MRZ66;
 						LastSwiftMigration = 1200;
 					};
-					D1F7609423098F62000C5269 = {
-						CreatedOnToolsVersion = 11.0;
-						DevelopmentTeam = A4YJ9MRZ66;
-						ProvisioningStyle = Automatic;
-					};
 				};
 			};
 			buildConfigurationList = D1ED2D061AD2CFA600CFC3EB /* Build configuration list for PBXProject "Kingfisher-Demo" */;
@@ -627,7 +550,6 @@
 				D1ED2D0A1AD2CFA600CFC3EB /* Kingfisher-Demo */,
 				D13F49C11BEDA53F00CE335D /* Kingfisher-tvOS-Demo */,
 				4B2944541C3D03880088C3E7 /* Kingfisher-macOS-Demo */,
-				D1F7609423098F62000C5269 /* Kingfisher-SwiftUI-Demo */,
 				D1679A381C4E78B20020FD12 /* Kingfisher-watchOS-Demo */,
 				D1679A441C4E78B20020FD12 /* Kingfisher-watchOS-Demo Extension */,
 			);
@@ -684,16 +606,6 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		D1F7609323098F62000C5269 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				D1F760B823098FA2000C5269 /* LaunchScreen.storyboard in Resources */,
-				D1F760B723098FA2000C5269 /* Preview Assets.xcassets in Resources */,
-				D1F760B623098FA2000C5269 /* Assets.xcassets in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
@@ -739,10 +651,14 @@
 				D1CE1BD021A1AFA300419000 /* TransitionViewController.swift in Sources */,
 				D10AC99821A300C9005F057C /* ProcessorCollectionViewController.swift in Sources */,
 				D1F06F3921AAF1EE000B1C38 /* IndicatorCollectionViewController.swift in Sources */,
+				D1F78A662589F17200930759 /* SwiftUIView.swift in Sources */,
 				D12E0C981C47F91800AC98AD /* ImageCollectionViewCell.swift in Sources */,
 				D1A1CCA721A18A3200263AD8 /* UIViewController+KingfisherOperation.swift in Sources */,
+				D1F78A642589F17200930759 /* SwiftUIList.swift in Sources */,
 				D1E4CF5421BACBA6004D029D /* ImageDataProviderCollectionViewController.swift in Sources */,
 				D1FAB06F21A853E600908910 /* HighResolutionCollectionViewController.swift in Sources */,
+				D1F78A652589F17200930759 /* MainView.swift in Sources */,
+				D1F78A5F2589F0AA00930759 /* SwiftUIViewController.swift in Sources */,
 				D12E0C951C47F91800AC98AD /* AppDelegate.swift in Sources */,
 				D1F06F3321AA4292000B1C38 /* DetailImageViewController.swift in Sources */,
 				4B1C7A3D21A256E300CE9D31 /* InfinityCollectionViewController.swift in Sources */,
@@ -751,18 +667,6 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		D1F7609123098F62000C5269 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				D1F760BE23098FA2000C5269 /* SceneDelegate.swift in Sources */,
-				D1F760B923098FA2000C5269 /* AppDelegate.swift in Sources */,
-				D1F760BB23098FA2000C5269 /* SwiftUIList.swift in Sources */,
-				D1F760BC23098FA2000C5269 /* SwiftUIView.swift in Sources */,
-				D1F760BA23098FA2000C5269 /* MainView.swift in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
@@ -806,14 +710,6 @@
 			name = Main.storyboard;
 			sourceTree = "<group>";
 		};
-		D1F760AD23098FA2000C5269 /* LaunchScreen.storyboard */ = {
-			isa = PBXVariantGroup;
-			children = (
-				D1F760AE23098FA2000C5269 /* Base */,
-			);
-			name = LaunchScreen.storyboard;
-			sourceTree = "<group>";
-		};
 /* End PBXVariantGroup section */
 
 /* Begin XCBuildConfiguration section */
@@ -1129,60 +1025,6 @@
 			};
 			name = Release;
 		};
-		D1F760A723098F63000C5269 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
-				CLANG_ENABLE_OBJC_WEAK = YES;
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
-				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
-				CODE_SIGN_STYLE = Automatic;
-				DEBUG_INFORMATION_FORMAT = dwarf;
-				DEVELOPMENT_ASSET_PATHS = "Demo/Kingfisher-SwiftUI-Demo/Preview\\ Content";
-				DEVELOPMENT_TEAM = A4YJ9MRZ66;
-				ENABLE_PREVIEWS = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu11;
-				INFOPLIST_FILE = "Demo/Kingfisher-SwiftUI-Demo/Info.plist";
-				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
-				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
-				MTL_FAST_MATH = YES;
-				PRODUCT_BUNDLE_IDENTIFIER = "com.onevcat.Kingfisher-SwiftUI-Demo";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
-				TARGETED_DEVICE_FAMILY = "1,2";
-			};
-			name = Debug;
-		};
-		D1F760A823098F63000C5269 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
-				CLANG_ENABLE_OBJC_WEAK = YES;
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
-				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
-				CODE_SIGN_STYLE = Automatic;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				DEVELOPMENT_ASSET_PATHS = "Demo/Kingfisher-SwiftUI-Demo/Preview\\ Content";
-				DEVELOPMENT_TEAM = A4YJ9MRZ66;
-				ENABLE_PREVIEWS = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu11;
-				INFOPLIST_FILE = "Demo/Kingfisher-SwiftUI-Demo/Info.plist";
-				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
-				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
-				MTL_FAST_MATH = YES;
-				PRODUCT_BUNDLE_IDENTIFIER = "com.onevcat.Kingfisher-SwiftUI-Demo";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				TARGETED_DEVICE_FAMILY = "1,2";
-			};
-			name = Release;
-		};
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
@@ -1240,15 +1082,6 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
-		D1F760A623098F63000C5269 /* Build configuration list for PBXNativeTarget "Kingfisher-SwiftUI-Demo" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				D1F760A723098F63000C5269 /* Debug */,
-				D1F760A823098F63000C5269 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
 /* End XCConfigurationList section */
 	};
 	rootObject = D1ED2D031AD2CFA600CFC3EB /* Project object */;