From 8b7ab6f3af387269ee7e5b746386c7b2f42e1934 Mon Sep 17 00:00:00 2001 From: DreamPiggy Date: Sat, 2 Sep 2023 21:56:56 +0800 Subject: [PATCH] Update the Demo with SPM instead of CocoaPods --- .../project.pbxproj | 179 ++++++++++++++++-- .../AppDelegate.swift | 7 +- README.md | 8 +- 3 files changed, 175 insertions(+), 19 deletions(-) diff --git a/Example/SDWebImageSwiftUI.xcodeproj/project.pbxproj b/Example/SDWebImageSwiftUI.xcodeproj/project.pbxproj index e7e62e2..7083664 100644 --- a/Example/SDWebImageSwiftUI.xcodeproj/project.pbxproj +++ b/Example/SDWebImageSwiftUI.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -29,6 +29,23 @@ 322E0E2228D332130003A55F /* Images.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 322E0DF228D331A20003A55F /* Images.bundle */; }; 322E0E2328D332130003A55F /* Images.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 322E0DF228D331A20003A55F /* Images.bundle */; }; 326B0D712345C01900D28269 /* DetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 326B0D702345C01900D28269 /* DetailView.swift */; }; + 32ABE4D92AA3753300331406 /* SDWebImageWebPCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4D82AA3753300331406 /* SDWebImageWebPCoder */; }; + 32ABE4DC2AA3755D00331406 /* SDWebImageSVGCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4DB2AA3755D00331406 /* SDWebImageSVGCoder */; }; + 32ABE4DF2AA3756A00331406 /* SDWebImagePDFCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4DE2AA3756A00331406 /* SDWebImagePDFCoder */; }; + 32ABE4E12AA3757B00331406 /* SDWebImageWebPCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4E02AA3757B00331406 /* SDWebImageWebPCoder */; }; + 32ABE4E32AA3757B00331406 /* SDWebImageSVGCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4E22AA3757B00331406 /* SDWebImageSVGCoder */; }; + 32ABE4E52AA3757B00331406 /* SDWebImagePDFCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4E42AA3757B00331406 /* SDWebImagePDFCoder */; }; + 32ABE4E72AA3758400331406 /* SDWebImageWebPCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4E62AA3758400331406 /* SDWebImageWebPCoder */; }; + 32ABE4E92AA3758400331406 /* SDWebImageSVGCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4E82AA3758400331406 /* SDWebImageSVGCoder */; }; + 32ABE4EB2AA3758400331406 /* SDWebImagePDFCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4EA2AA3758400331406 /* SDWebImagePDFCoder */; }; + 32ABE4F32AA3759900331406 /* SDWebImageWebPCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4F22AA3759900331406 /* SDWebImageWebPCoder */; }; + 32ABE4F52AA3759900331406 /* SDWebImageSVGCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4F42AA3759900331406 /* SDWebImageSVGCoder */; }; + 32ABE4F72AA3759900331406 /* SDWebImagePDFCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4F62AA3759900331406 /* SDWebImagePDFCoder */; }; + 32ABE4F92AA375A500331406 /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4F82AA375A500331406 /* SDWebImage */; }; + 32ABE4FD2AA375A500331406 /* SDWebImageWebPCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4FC2AA375A500331406 /* SDWebImageWebPCoder */; }; + 32ABE4FF2AA375A500331406 /* SDWebImageSVGCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE4FE2AA375A500331406 /* SDWebImageSVGCoder */; }; + 32ABE5012AA375A500331406 /* SDWebImagePDFCoder in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE5002AA375A500331406 /* SDWebImagePDFCoder */; }; + 32ABE5032AA375B400331406 /* SDWebImageSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = 32ABE5022AA375B400331406 /* SDWebImageSwiftUI */; }; 32B13E812AA368B700BE9B5B /* SDWebImageSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = 32B13E802AA368B700BE9B5B /* SDWebImageSwiftUI */; }; 32B13E832AA368B900BE9B5B /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 32B13E822AA368B900BE9B5B /* SDWebImage */; }; 32B13E852AA368C600BE9B5B /* SDWebImageSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = 32B13E842AA368C600BE9B5B /* SDWebImageSwiftUI */; }; @@ -36,8 +53,6 @@ 32B13E892AA368CC00BE9B5B /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 32B13E882AA368CC00BE9B5B /* SDWebImage */; }; 32B13E8F2AA368E100BE9B5B /* SDWebImageSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = 32B13E8E2AA368E100BE9B5B /* SDWebImageSwiftUI */; }; 32B13E912AA368E300BE9B5B /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 32B13E902AA368E300BE9B5B /* SDWebImage */; }; - 32B13E932AA368EF00BE9B5B /* SDWebImageSwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = 32B13E922AA368EF00BE9B5B /* SDWebImageSwiftUI */; }; - 32B13E952AA368F300BE9B5B /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 32B13E942AA368F300BE9B5B /* SDWebImage */; }; 32D5D1672A445B260098BDFC /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32D5D1662A445B260098BDFC /* AppDelegate.swift */; }; 32D5D16B2A445B260098BDFC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 32D5D16A2A445B260098BDFC /* Assets.xcassets */; }; 32D5D16E2A445B260098BDFC /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 32D5D16D2A445B260098BDFC /* Preview Assets.xcassets */; }; @@ -193,6 +208,9 @@ files = ( 32B13E892AA368CC00BE9B5B /* SDWebImage in Frameworks */, 32D5D1762A445C8F0098BDFC /* SDWebImageSwiftUI in Frameworks */, + 32ABE4D92AA3753300331406 /* SDWebImageWebPCoder in Frameworks */, + 32ABE4DF2AA3756A00331406 /* SDWebImagePDFCoder in Frameworks */, + 32ABE4DC2AA3755D00331406 /* SDWebImageSVGCoder in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -223,6 +241,9 @@ files = ( 32B13E832AA368B900BE9B5B /* SDWebImage in Frameworks */, 32B13E812AA368B700BE9B5B /* SDWebImageSwiftUI in Frameworks */, + 32ABE4F32AA3759900331406 /* SDWebImageWebPCoder in Frameworks */, + 32ABE4F72AA3759900331406 /* SDWebImagePDFCoder in Frameworks */, + 32ABE4F52AA3759900331406 /* SDWebImageSVGCoder in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -232,6 +253,9 @@ files = ( 32B13E872AA368C900BE9B5B /* SDWebImage in Frameworks */, 32B13E852AA368C600BE9B5B /* SDWebImageSwiftUI in Frameworks */, + 32ABE4E12AA3757B00331406 /* SDWebImageWebPCoder in Frameworks */, + 32ABE4E52AA3757B00331406 /* SDWebImagePDFCoder in Frameworks */, + 32ABE4E32AA3757B00331406 /* SDWebImageSVGCoder in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -241,6 +265,9 @@ files = ( 32B13E912AA368E300BE9B5B /* SDWebImage in Frameworks */, 32B13E8F2AA368E100BE9B5B /* SDWebImageSwiftUI in Frameworks */, + 32ABE4E72AA3758400331406 /* SDWebImageWebPCoder in Frameworks */, + 32ABE4EB2AA3758400331406 /* SDWebImagePDFCoder in Frameworks */, + 32ABE4E92AA3758400331406 /* SDWebImageSVGCoder in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -248,6 +275,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 32ABE5032AA375B400331406 /* SDWebImageSwiftUI in Frameworks */, + 32ABE4F92AA375A500331406 /* SDWebImage in Frameworks */, + 32ABE4FD2AA375A500331406 /* SDWebImageWebPCoder in Frameworks */, + 32ABE5012AA375A500331406 /* SDWebImagePDFCoder in Frameworks */, + 32ABE4FF2AA375A500331406 /* SDWebImageSVGCoder in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -262,8 +294,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 32B13E952AA368F300BE9B5B /* SDWebImage in Frameworks */, - 32B13E932AA368EF00BE9B5B /* SDWebImageSwiftUI in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -468,6 +498,9 @@ packageProductDependencies = ( 32D5D1752A445C8F0098BDFC /* SDWebImageSwiftUI */, 32B13E882AA368CC00BE9B5B /* SDWebImage */, + 32ABE4D82AA3753300331406 /* SDWebImageWebPCoder */, + 32ABE4DB2AA3755D00331406 /* SDWebImageSVGCoder */, + 32ABE4DE2AA3756A00331406 /* SDWebImagePDFCoder */, ); productName = SDWebImageSwiftUIDemo; productReference = 320CDC2922FADB44007CF858 /* SDWebImageSwiftUIDemo.app */; @@ -552,6 +585,9 @@ packageProductDependencies = ( 32B13E802AA368B700BE9B5B /* SDWebImageSwiftUI */, 32B13E822AA368B900BE9B5B /* SDWebImage */, + 32ABE4F22AA3759900331406 /* SDWebImageWebPCoder */, + 32ABE4F42AA3759900331406 /* SDWebImageSVGCoder */, + 32ABE4F62AA3759900331406 /* SDWebImagePDFCoder */, ); productName = "SDWebImageSwiftUIDemo-visionOS"; productReference = 32D5D1602A445B250098BDFC /* SDWebImageSwiftUIDemo-visionOS.app */; @@ -573,6 +609,9 @@ packageProductDependencies = ( 32B13E842AA368C600BE9B5B /* SDWebImageSwiftUI */, 32B13E862AA368C900BE9B5B /* SDWebImage */, + 32ABE4E02AA3757B00331406 /* SDWebImageWebPCoder */, + 32ABE4E22AA3757B00331406 /* SDWebImageSVGCoder */, + 32ABE4E42AA3757B00331406 /* SDWebImagePDFCoder */, ); productName = "SDWebImageSwiftUIDemo-macOS"; productReference = 32E529092348A0C700EA46FF /* SDWebImageSwiftUIDemo-macOS.app */; @@ -594,6 +633,9 @@ packageProductDependencies = ( 32B13E8E2AA368E100BE9B5B /* SDWebImageSwiftUI */, 32B13E902AA368E300BE9B5B /* SDWebImage */, + 32ABE4E62AA3758400331406 /* SDWebImageWebPCoder */, + 32ABE4E82AA3758400331406 /* SDWebImageSVGCoder */, + 32ABE4EA2AA3758400331406 /* SDWebImagePDFCoder */, ); productName = "SDWebImageSwiftUIDemo-tvOS"; productReference = 32E529202348A0D300EA46FF /* SDWebImageSwiftUIDemo-tvOS.app */; @@ -632,8 +674,6 @@ ); name = "SDWebImageSwiftUIDemo-watchOS WatchKit App"; packageProductDependencies = ( - 32B13E922AA368EF00BE9B5B /* SDWebImageSwiftUI */, - 32B13E942AA368F300BE9B5B /* SDWebImage */, ); productName = "SDWebImageSwiftUIDemo-watchOS WatchKit App"; productReference = 32E529372348A0DD00EA46FF /* SDWebImageSwiftUIDemo-watchOS WatchKit App.app */; @@ -652,6 +692,13 @@ dependencies = ( ); name = "SDWebImageSwiftUIDemo-watchOS WatchKit Extension"; + packageProductDependencies = ( + 32ABE4F82AA375A500331406 /* SDWebImage */, + 32ABE4FC2AA375A500331406 /* SDWebImageWebPCoder */, + 32ABE4FE2AA375A500331406 /* SDWebImageSVGCoder */, + 32ABE5002AA375A500331406 /* SDWebImagePDFCoder */, + 32ABE5022AA375B400331406 /* SDWebImageSwiftUI */, + ); productName = "SDWebImageSwiftUIDemo-watchOS WatchKit Extension"; productReference = 32E529462348A0DE00EA46FF /* SDWebImageSwiftUIDemo-watchOS WatchKit Extension.appex */; productType = "com.apple.product-type.watchkit2-extension"; @@ -721,6 +768,9 @@ mainGroup = 607FACC71AFB9204008FA782; packageReferences = ( 3294617A2AA36734009E391B /* XCRemoteSwiftPackageReference "SDWebImageSwiftUI" */, + 32ABE4D72AA3753300331406 /* XCRemoteSwiftPackageReference "SDWebImageWebPCoder" */, + 32ABE4DA2AA3755D00331406 /* XCRemoteSwiftPackageReference "SDWebImageSVGCoder" */, + 32ABE4DD2AA3756A00331406 /* XCRemoteSwiftPackageReference "SDWebImagePDFCoder" */, ); productRefGroup = 607FACD11AFB9204008FA782 /* Products */; projectDirPath = ""; @@ -1852,6 +1902,30 @@ minimumVersion = 2.2.3; }; }; + 32ABE4D72AA3753300331406 /* XCRemoteSwiftPackageReference "SDWebImageWebPCoder" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/SDWebImage/SDWebImageWebPCoder.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 0.9.1; + }; + }; + 32ABE4DA2AA3755D00331406 /* XCRemoteSwiftPackageReference "SDWebImageSVGCoder" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/SDWebImage/SDWebImageSVGCoder"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.0.0; + }; + }; + 32ABE4DD2AA3756A00331406 /* XCRemoteSwiftPackageReference "SDWebImagePDFCoder" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/SDWebImage/SDWebImagePDFCoder"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.0.0; + }; + }; 32DCFE8D28D333B0001A17BF /* XCRemoteSwiftPackageReference "ViewInspector" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/nalexn/ViewInspector.git"; @@ -1873,6 +1947,89 @@ package = 32DCFE8D28D333B0001A17BF /* XCRemoteSwiftPackageReference "ViewInspector" */; productName = ViewInspector; }; + 32ABE4D82AA3753300331406 /* SDWebImageWebPCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4D72AA3753300331406 /* XCRemoteSwiftPackageReference "SDWebImageWebPCoder" */; + productName = SDWebImageWebPCoder; + }; + 32ABE4DB2AA3755D00331406 /* SDWebImageSVGCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4DA2AA3755D00331406 /* XCRemoteSwiftPackageReference "SDWebImageSVGCoder" */; + productName = SDWebImageSVGCoder; + }; + 32ABE4DE2AA3756A00331406 /* SDWebImagePDFCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4DD2AA3756A00331406 /* XCRemoteSwiftPackageReference "SDWebImagePDFCoder" */; + productName = SDWebImagePDFCoder; + }; + 32ABE4E02AA3757B00331406 /* SDWebImageWebPCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4D72AA3753300331406 /* XCRemoteSwiftPackageReference "SDWebImageWebPCoder" */; + productName = SDWebImageWebPCoder; + }; + 32ABE4E22AA3757B00331406 /* SDWebImageSVGCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4DA2AA3755D00331406 /* XCRemoteSwiftPackageReference "SDWebImageSVGCoder" */; + productName = SDWebImageSVGCoder; + }; + 32ABE4E42AA3757B00331406 /* SDWebImagePDFCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4DD2AA3756A00331406 /* XCRemoteSwiftPackageReference "SDWebImagePDFCoder" */; + productName = SDWebImagePDFCoder; + }; + 32ABE4E62AA3758400331406 /* SDWebImageWebPCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4D72AA3753300331406 /* XCRemoteSwiftPackageReference "SDWebImageWebPCoder" */; + productName = SDWebImageWebPCoder; + }; + 32ABE4E82AA3758400331406 /* SDWebImageSVGCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4DA2AA3755D00331406 /* XCRemoteSwiftPackageReference "SDWebImageSVGCoder" */; + productName = SDWebImageSVGCoder; + }; + 32ABE4EA2AA3758400331406 /* SDWebImagePDFCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4DD2AA3756A00331406 /* XCRemoteSwiftPackageReference "SDWebImagePDFCoder" */; + productName = SDWebImagePDFCoder; + }; + 32ABE4F22AA3759900331406 /* SDWebImageWebPCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4D72AA3753300331406 /* XCRemoteSwiftPackageReference "SDWebImageWebPCoder" */; + productName = SDWebImageWebPCoder; + }; + 32ABE4F42AA3759900331406 /* SDWebImageSVGCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4DA2AA3755D00331406 /* XCRemoteSwiftPackageReference "SDWebImageSVGCoder" */; + productName = SDWebImageSVGCoder; + }; + 32ABE4F62AA3759900331406 /* SDWebImagePDFCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4DD2AA3756A00331406 /* XCRemoteSwiftPackageReference "SDWebImagePDFCoder" */; + productName = SDWebImagePDFCoder; + }; + 32ABE4F82AA375A500331406 /* SDWebImage */ = { + isa = XCSwiftPackageProductDependency; + productName = SDWebImage; + }; + 32ABE4FC2AA375A500331406 /* SDWebImageWebPCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4D72AA3753300331406 /* XCRemoteSwiftPackageReference "SDWebImageWebPCoder" */; + productName = SDWebImageWebPCoder; + }; + 32ABE4FE2AA375A500331406 /* SDWebImageSVGCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4DA2AA3755D00331406 /* XCRemoteSwiftPackageReference "SDWebImageSVGCoder" */; + productName = SDWebImageSVGCoder; + }; + 32ABE5002AA375A500331406 /* SDWebImagePDFCoder */ = { + isa = XCSwiftPackageProductDependency; + package = 32ABE4DD2AA3756A00331406 /* XCRemoteSwiftPackageReference "SDWebImagePDFCoder" */; + productName = SDWebImagePDFCoder; + }; + 32ABE5022AA375B400331406 /* SDWebImageSwiftUI */ = { + isa = XCSwiftPackageProductDependency; + productName = SDWebImageSwiftUI; + }; 32B13E802AA368B700BE9B5B /* SDWebImageSwiftUI */ = { isa = XCSwiftPackageProductDependency; productName = SDWebImageSwiftUI; @@ -1901,14 +2058,6 @@ isa = XCSwiftPackageProductDependency; productName = SDWebImage; }; - 32B13E922AA368EF00BE9B5B /* SDWebImageSwiftUI */ = { - isa = XCSwiftPackageProductDependency; - productName = SDWebImageSwiftUI; - }; - 32B13E942AA368F300BE9B5B /* SDWebImage */ = { - isa = XCSwiftPackageProductDependency; - productName = SDWebImage; - }; 32D5D1752A445C8F0098BDFC /* SDWebImageSwiftUI */ = { isa = XCSwiftPackageProductDependency; productName = SDWebImageSwiftUI; diff --git a/Example/SDWebImageSwiftUIDemo-visionOS/AppDelegate.swift b/Example/SDWebImageSwiftUIDemo-visionOS/AppDelegate.swift index 0939fca..8203580 100644 --- a/Example/SDWebImageSwiftUIDemo-visionOS/AppDelegate.swift +++ b/Example/SDWebImageSwiftUIDemo-visionOS/AppDelegate.swift @@ -9,12 +9,17 @@ import SwiftUI import UIKit import SDWebImage +import SDWebImageWebPCoder +import SDWebImageSVGCoder +import SDWebImagePDFCoder // no changes in your AppDelegate class class AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { // Add WebP/SVG/PDF support - SDImageCodersManager.shared.addCoder(SDImageAWebPCoder.shared) + SDImageCodersManager.shared.addCoder(SDImageWebPCoder.shared) + SDImageCodersManager.shared.addCoder(SDImageSVGCoder.shared) + SDImageCodersManager.shared.addCoder(SDImagePDFCoder.shared) // Dynamic check to support vector format for both WebImage/AnimatedImage SDWebImageManager.shared.optionsProcessor = SDWebImageOptionsProcessor { url, options, context in var options = options diff --git a/README.md b/README.md index f2d24ed..155aea3 100644 --- a/README.md +++ b/README.md @@ -618,9 +618,10 @@ struct ContentView : View { To run the example using SwiftUI, following the steps: -1. Run `pod install` on root directory to install the dependency. -2. Open `SDWebImageSwiftUI.xcworkspace`, wait for SwiftPM finishing downloading the test dependency. -3. Choose `SDWebImageSwiftUIDemo` scheme and run the demo application. +1. Open `SDWebImageSwiftUI.xcworkspace`, wait for SwiftPM finishing downloading the test dependency. +2. Choose `SDWebImageSwiftUIDemo` (or other platforms) scheme and run the demo application. + +Note: The `Podfile` here is because history we use CocoaPods to integrate libs into Demo, but now we use SPM. Since SwiftUI is aimed to support all Apple platforms, our demo does this as well, one codebase including: @@ -628,6 +629,7 @@ Since SwiftUI is aimed to support all Apple platforms, our demo does this as wel + macOS + tvOS + watchOS ++ visionOS Demo Tips: