From 847ecb7f629833fd301031ffd04b76684e6587bd Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:30:57 -0700 Subject: [PATCH 01/24] Update Contents.json --- .../AppIcon.appiconset/Contents.json | 97 ++----------------- 1 file changed, 6 insertions(+), 91 deletions(-) diff --git a/Example/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/Assets.xcassets/AppIcon.appiconset/Contents.json index d8db8d6..13613e3 100644 --- a/Example/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Example/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,98 +1,13 @@ { "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" + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} From e08dac839c529da8f259608a1954bd8d5ad312ed Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:31:30 -0700 Subject: [PATCH 02/24] Delete Main.storyboard --- Example/Base.lproj/Main.storyboard | 108 ----------------------------- 1 file changed, 108 deletions(-) delete mode 100644 Example/Base.lproj/Main.storyboard diff --git a/Example/Base.lproj/Main.storyboard b/Example/Base.lproj/Main.storyboard deleted file mode 100644 index 3e2332f..0000000 --- a/Example/Base.lproj/Main.storyboard +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From fd92751bb9b2a97be66af8a443dc0e6284e53c81 Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:31:34 -0700 Subject: [PATCH 03/24] Update Extensions.swift --- Example/Extensions.swift | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/Example/Extensions.swift b/Example/Extensions.swift index f2d0e04..97ae092 100644 --- a/Example/Extensions.swift +++ b/Example/Extensions.swift @@ -8,26 +8,6 @@ import UIKit -extension UIView { - @discardableResult - func constrain(constraints: (UIView) -> [NSLayoutConstraint]) -> [NSLayoutConstraint] { - let constraints = constraints(self) - self.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate(constraints) - return constraints - } - - @discardableResult - func constrainToEdges(_ inset: UIEdgeInsets = .zero) -> [NSLayoutConstraint] { - return constrain {[ - $0.topAnchor.constraint(equalTo: $0.superview!.topAnchor, constant: inset.top), - $0.leadingAnchor.constraint(equalTo: $0.superview!.leadingAnchor, constant: inset.left), - $0.bottomAnchor.constraint(equalTo: $0.superview!.bottomAnchor, constant: inset.bottom), - $0.trailingAnchor.constraint(equalTo: $0.superview!.trailingAnchor, constant: inset.right) - ]} - } -} - extension UIColor { convenience init(red: Int, green: Int, blue: Int) { self.init(red: CGFloat(red) / 255, green: CGFloat(green) / 255, blue: CGFloat(blue) / 255, alpha: 1) From e9152c5b6e3398d9ef65f60e59e5bf15626b661c Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:33:19 -0700 Subject: [PATCH 04/24] Update Package.swift --- Package.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Package.swift b/Package.swift index 46a5b4e..8400705 100644 --- a/Package.swift +++ b/Package.swift @@ -6,8 +6,7 @@ import PackageDescription let package = Package( name: "VisualEffectView", platforms: [ - .iOS(.v14), - .macOS(.v14), + .iOS(.v14) ], products: [ // Products define the executables and libraries produced by a package, and make them visible to other packages. From 65b2335ef2e21ecc0c4919d86f210f0355c34ced Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:33:41 -0700 Subject: [PATCH 05/24] Update Package.swift --- Package.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 8400705..a200332 100644 --- a/Package.swift +++ b/Package.swift @@ -22,5 +22,6 @@ let package = Package( // Targets are the basic building blocks of a package. A target can define a module or a test suite. // Targets can depend on other targets in this package, and on products in packages which this package depends on. .target(name: "VisualEffectView") - ] + ], + swiftLanguageVersions: [.v5] ) From 2a30f100344cd01c5648c1889dd51506573e3090 Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:49:17 -0700 Subject: [PATCH 06/24] remove asset --- .../Assets.xcassets/swift.imageset/Contents.json | 15 --------------- Example/Assets.xcassets/swift.imageset/swift.pdf | Bin 4010 -> 0 bytes 2 files changed, 15 deletions(-) delete mode 100644 Example/Assets.xcassets/swift.imageset/Contents.json delete mode 100644 Example/Assets.xcassets/swift.imageset/swift.pdf diff --git a/Example/Assets.xcassets/swift.imageset/Contents.json b/Example/Assets.xcassets/swift.imageset/Contents.json deleted file mode 100644 index 75efa28..0000000 --- a/Example/Assets.xcassets/swift.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "swift.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "template-rendering-intent" : "template" - } -} \ No newline at end of file diff --git a/Example/Assets.xcassets/swift.imageset/swift.pdf b/Example/Assets.xcassets/swift.imageset/swift.pdf deleted file mode 100644 index 29e24d0b72dddd790c4d2174823ea130e3882212..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4010 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 From 382732d2563cb2488dbd883a5149362641b4a72e Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:49:28 -0700 Subject: [PATCH 07/24] Delete Info.plist --- Example/Info.plist | 54 ---------------------------------------------- 1 file changed, 54 deletions(-) delete mode 100644 Example/Info.plist diff --git a/Example/Info.plist b/Example/Info.plist deleted file mode 100644 index 5bf9798..0000000 --- a/Example/Info.plist +++ /dev/null @@ -1,54 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UIRequiredDeviceCapabilities - - armv7 - - UIRequiresFullScreen - - UIStatusBarHidden - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - From 6b6c08037c8aa9d0c7b463ead3165dfb59f74341 Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:49:37 -0700 Subject: [PATCH 08/24] Delete Extensions.swift --- Example/Extensions.swift | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 Example/Extensions.swift diff --git a/Example/Extensions.swift b/Example/Extensions.swift deleted file mode 100644 index 97ae092..0000000 --- a/Example/Extensions.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// Extensions.swift -// Example -// -// Created by Lasha Efremidze on 3/11/19. -// Copyright © 2019 Lasha Efremidze. All rights reserved. -// - -import UIKit - -extension UIColor { - convenience init(red: Int, green: Int, blue: Int) { - self.init(red: CGFloat(red) / 255, green: CGFloat(green) / 255, blue: CGFloat(blue) / 255, alpha: 1) - } - class var red: UIColor { return UIColor(red: 255, green: 59, blue: 48) } - class var orange: UIColor { return UIColor(red: 255, green: 149, blue: 0) } - class var yellow: UIColor { return UIColor(red: 255, green: 204, blue: 0) } - class var green: UIColor { return UIColor(red: 76, green: 217, blue: 100) } - class var tealBlue: UIColor { return UIColor(red: 90, green: 200, blue: 250) } - class var blue: UIColor { return UIColor(red: 0, green: 122, blue: 255) } - class var purple: UIColor { return UIColor(red: 88, green: 86, blue: 214) } - class var pink: UIColor { return UIColor(red: 255, green: 45, blue: 85) } - class var allCases: [UIColor] { - return [red, orange, yellow, green, tealBlue, blue, purple, pink] - } -} From 157c63c71fb6ced13010bd6121865a4adb1ec0d9 Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:49:42 -0700 Subject: [PATCH 09/24] Create ExampleApp.swift --- Example/ExampleApp.swift | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Example/ExampleApp.swift diff --git a/Example/ExampleApp.swift b/Example/ExampleApp.swift new file mode 100644 index 0000000..7a083f8 --- /dev/null +++ b/Example/ExampleApp.swift @@ -0,0 +1,18 @@ +// +// ExampleApp.swift +// Example +// +// Created by Lasha Efremidze on 8/14/25. +// Copyright © 2025 Lasha Efremidze. All rights reserved. +// + +import SwiftUI + +@main +struct ExampleApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} From 466301aeeb0f4010cb8c6b7997b9cfbb3b1b4f74 Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:49:47 -0700 Subject: [PATCH 10/24] Delete LaunchScreen.storyboard --- Example/Base.lproj/LaunchScreen.storyboard | 27 ---------------------- 1 file changed, 27 deletions(-) delete mode 100644 Example/Base.lproj/LaunchScreen.storyboard diff --git a/Example/Base.lproj/LaunchScreen.storyboard b/Example/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index fdf3f97..0000000 --- a/Example/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - From e71d353cbb1d0cb72910092a5089794d7c5e1c54 Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:50:08 -0700 Subject: [PATCH 11/24] Update Contents.json --- .../AppIcon.appiconset/Contents.json | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Example/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/Assets.xcassets/AppIcon.appiconset/Contents.json index 13613e3..2305880 100644 --- a/Example/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Example/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -4,6 +4,28 @@ "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" } ], "info" : { From f13c64540f4bb5199b28c51e5e0ef6a6c3fdc903 Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:50:13 -0700 Subject: [PATCH 12/24] Create Contents.json --- .../AccentColor.colorset/Contents.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Example/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/Example/Assets.xcassets/AccentColor.colorset/Contents.json b/Example/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Example/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} From 8e1a2e9b14d2db3239708c488627616cb06ac1b9 Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:50:21 -0700 Subject: [PATCH 13/24] Update Contents.json --- Example/Assets.xcassets/Contents.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Example/Assets.xcassets/Contents.json b/Example/Assets.xcassets/Contents.json index da4a164..73c0059 100644 --- a/Example/Assets.xcassets/Contents.json +++ b/Example/Assets.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} From b1e5d5a1cca07272c25ff8641e518906f4b65a2b Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:50:25 -0700 Subject: [PATCH 14/24] Delete AppDelegate.swift --- Example/AppDelegate.swift | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 Example/AppDelegate.swift diff --git a/Example/AppDelegate.swift b/Example/AppDelegate.swift deleted file mode 100644 index 583a69d..0000000 --- a/Example/AppDelegate.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// AppDelegate.swift -// Example -// -// Created by Lasha Efremidze on 12/19/16. -// Copyright © 2016 Lasha Efremidze. All rights reserved. -// - -import UIKit - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true - } - -} From e4886614c18d3eb10222aefacd7d50fec1a71dde Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:50:30 -0700 Subject: [PATCH 15/24] Create Contents.json --- .../Preview Content/Preview Assets.xcassets/Contents.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Example/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/Example/Preview Content/Preview Assets.xcassets/Contents.json b/Example/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Example/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} From 80c4881f72cede825d2df4e52e1a53c74faaffc8 Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:50:43 -0700 Subject: [PATCH 16/24] Update project.pbxproj --- VisualEffectView.xcodeproj/project.pbxproj | 204 +++++++++------------ 1 file changed, 83 insertions(+), 121 deletions(-) diff --git a/VisualEffectView.xcodeproj/project.pbxproj b/VisualEffectView.xcodeproj/project.pbxproj index 8e321a9..4cbb584 100755 --- a/VisualEffectView.xcodeproj/project.pbxproj +++ b/VisualEffectView.xcodeproj/project.pbxproj @@ -3,70 +3,35 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 70; objects = { /* Begin PBXBuildFile section */ 8B3244031E07D7CB00712FEA /* VisualEffectView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3244011E07D7CB00712FEA /* VisualEffectView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B3244101E07D7D900712FEA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B32440F1E07D7D900712FEA /* AppDelegate.swift */; }; - 8B3244121E07D7D900712FEA /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B3244111E07D7D900712FEA /* ViewController.swift */; }; - 8B3244151E07D7D900712FEA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8B3244131E07D7D900712FEA /* Main.storyboard */; }; - 8B3244171E07D7D900712FEA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8B3244161E07D7D900712FEA /* Assets.xcassets */; }; - 8B32441A1E07D7D900712FEA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8B3244181E07D7D900712FEA /* LaunchScreen.storyboard */; }; 8B3DFCE01E07D8F5009EAFA2 /* VisualEffectView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B3DFCDF1E07D8F5009EAFA2 /* VisualEffectView.swift */; }; - 8BD4B7E61E8A563A00BD74C6 /* VisualEffectView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */; }; - 8BD4B7E71E8A563A00BD74C6 /* VisualEffectView.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; C0864C842A6FB2D2006B0F49 /* VisualEffectView+SwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0864C832A6FB2D2006B0F49 /* VisualEffectView+SwiftUI.swift */; }; F449249E206F2D5100117F6B /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = F449249B206F2D5100117F6B /* README.md */; }; F449249F206F2D5100117F6B /* VisualEffectView.podspec in Resources */ = {isa = PBXBuildFile; fileRef = F449249C206F2D5100117F6B /* VisualEffectView.podspec */; }; F44924A0206F2D5100117F6B /* CHANGELOG.md in Resources */ = {isa = PBXBuildFile; fileRef = F449249D206F2D5100117F6B /* CHANGELOG.md */; }; - F48F0D532236406400F54233 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F48F0D522236406400F54233 /* Extensions.swift */; }; F4BE05CB25108C0000500B57 /* UIViewEffectView+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4BE05CA25108C0000500B57 /* UIViewEffectView+Helpers.swift */; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - 8BD4B7E81E8A563A00BD74C6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8B3243F51E07D7CB00712FEA /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8B3243FD1E07D7CB00712FEA; - remoteInfo = VisualEffectView; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 8BD4B7EA1E8A563A00BD74C6 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 8BD4B7E71E8A563A00BD74C6 /* VisualEffectView.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - /* Begin PBXFileReference section */ 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VisualEffectView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8B3244011E07D7CB00712FEA /* VisualEffectView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VisualEffectView.h; sourceTree = ""; }; - 8B32440D1E07D7D900712FEA /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 8B32440F1E07D7D900712FEA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 8B3244111E07D7D900712FEA /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 8B3244141E07D7D900712FEA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 8B3244161E07D7D900712FEA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 8B3244191E07D7D900712FEA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 8B32441B1E07D7D900712FEA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8B3DFCDF1E07D8F5009EAFA2 /* VisualEffectView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VisualEffectView.swift; sourceTree = ""; }; C0864C832A6FB2D2006B0F49 /* VisualEffectView+SwiftUI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "VisualEffectView+SwiftUI.swift"; sourceTree = ""; }; + F4487E682E4DE4BE00884226 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; F449249B206F2D5100117F6B /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; F449249C206F2D5100117F6B /* VisualEffectView.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VisualEffectView.podspec; sourceTree = ""; }; F449249D206F2D5100117F6B /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = ""; }; - F48F0D522236406400F54233 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; F4BE05CA25108C0000500B57 /* UIViewEffectView+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewEffectView+Helpers.swift"; sourceTree = ""; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedRootGroup section */ + F4487E692E4DE4BE00884226 /* Example */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = Example; sourceTree = ""; }; +/* End PBXFileSystemSynchronizedRootGroup section */ + /* Begin PBXFrameworksBuildPhase section */ 8B3243FA1E07D7CB00712FEA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; @@ -75,11 +40,10 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8B32440A1E07D7D900712FEA /* Frameworks */ = { + F4487E652E4DE4BE00884226 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8BD4B7E61E8A563A00BD74C6 /* VisualEffectView.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -93,7 +57,7 @@ F449249B206F2D5100117F6B /* README.md */, F449249C206F2D5100117F6B /* VisualEffectView.podspec */, 8B3244001E07D7CB00712FEA /* VisualEffectView */, - 8B32440E1E07D7D900712FEA /* Example */, + F4487E692E4DE4BE00884226 /* Example */, 8B3243FF1E07D7CB00712FEA /* Products */, ); sourceTree = ""; @@ -102,7 +66,7 @@ isa = PBXGroup; children = ( 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */, - 8B32440D1E07D7D900712FEA /* Example.app */, + F4487E682E4DE4BE00884226 /* Example.app */, ); name = Products; sourceTree = ""; @@ -119,20 +83,6 @@ path = Sources; sourceTree = ""; }; - 8B32440E1E07D7D900712FEA /* Example */ = { - isa = PBXGroup; - children = ( - 8B32440F1E07D7D900712FEA /* AppDelegate.swift */, - 8B3244111E07D7D900712FEA /* ViewController.swift */, - F48F0D522236406400F54233 /* Extensions.swift */, - 8B3244131E07D7D900712FEA /* Main.storyboard */, - 8B3244161E07D7D900712FEA /* Assets.xcassets */, - 8B3244181E07D7D900712FEA /* LaunchScreen.storyboard */, - 8B32441B1E07D7D900712FEA /* Info.plist */, - ); - path = Example; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -165,23 +115,26 @@ productReference = 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */; productType = "com.apple.product-type.framework"; }; - 8B32440C1E07D7D900712FEA /* Example */ = { + F4487E672E4DE4BE00884226 /* Example */ = { isa = PBXNativeTarget; - buildConfigurationList = 8B32441C1E07D7D900712FEA /* Build configuration list for PBXNativeTarget "Example" */; + buildConfigurationList = F4487E732E4DE4BF00884226 /* Build configuration list for PBXNativeTarget "Example" */; buildPhases = ( - 8B3244091E07D7D900712FEA /* Sources */, - 8B32440A1E07D7D900712FEA /* Frameworks */, - 8B32440B1E07D7D900712FEA /* Resources */, - 8BD4B7EA1E8A563A00BD74C6 /* Embed Frameworks */, + F4487E642E4DE4BE00884226 /* Sources */, + F4487E652E4DE4BE00884226 /* Frameworks */, + F4487E662E4DE4BE00884226 /* Resources */, ); buildRules = ( ); dependencies = ( - 8BD4B7E91E8A563A00BD74C6 /* PBXTargetDependency */, + ); + fileSystemSynchronizedGroups = ( + F4487E692E4DE4BE00884226 /* Example */, ); name = Example; + packageProductDependencies = ( + ); productName = Example; - productReference = 8B32440D1E07D7D900712FEA /* Example.app */; + productReference = F4487E682E4DE4BE00884226 /* Example.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -190,7 +143,7 @@ 8B3243F51E07D7CB00712FEA /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0820; + LastSwiftUpdateCheck = 1620; LastUpgradeCheck = 1200; ORGANIZATIONNAME = "Lasha Efremidze"; TargetAttributes = { @@ -199,10 +152,8 @@ LastSwiftMigration = 1020; ProvisioningStyle = Automatic; }; - 8B32440C1E07D7D900712FEA = { - CreatedOnToolsVersion = 8.2; - LastSwiftMigration = 1020; - ProvisioningStyle = Automatic; + F4487E672E4DE4BE00884226 = { + CreatedOnToolsVersion = 16.2; }; }; }; @@ -220,7 +171,7 @@ projectRoot = ""; targets = ( 8B3243FD1E07D7CB00712FEA /* VisualEffectView */, - 8B32440C1E07D7D900712FEA /* Example */, + F4487E672E4DE4BE00884226 /* Example */, ); }; /* End PBXProject section */ @@ -236,13 +187,10 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8B32440B1E07D7D900712FEA /* Resources */ = { + F4487E662E4DE4BE00884226 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8B32441A1E07D7D900712FEA /* LaunchScreen.storyboard in Resources */, - 8B3244171E07D7D900712FEA /* Assets.xcassets in Resources */, - 8B3244151E07D7D900712FEA /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -259,45 +207,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8B3244091E07D7D900712FEA /* Sources */ = { + F4487E642E4DE4BE00884226 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8B3244121E07D7D900712FEA /* ViewController.swift in Sources */, - F48F0D532236406400F54233 /* Extensions.swift in Sources */, - 8B3244101E07D7D900712FEA /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXTargetDependency section */ - 8BD4B7E91E8A563A00BD74C6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 8B3243FD1E07D7CB00712FEA /* VisualEffectView */; - targetProxy = 8BD4B7E81E8A563A00BD74C6 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 8B3244131E07D7D900712FEA /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 8B3244141E07D7D900712FEA /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 8B3244181E07D7D900712FEA /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 8B3244191E07D7D900712FEA /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - /* Begin XCBuildConfiguration section */ 8B3244041E07D7CB00712FEA /* Debug */ = { isa = XCBuildConfiguration; @@ -350,7 +268,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -408,7 +326,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; @@ -470,35 +388,79 @@ }; name = Release; }; - 8B32441D1E07D7D900712FEA /* Debug */ = { + F4487E742E4DE4BF00884226 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - DEVELOPMENT_TEAM = ""; - INFOPLIST_FILE = Example/Info.plist; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"Example/Preview Content\""; + ENABLE_PREVIEWS = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.example; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 8B32441E1E07D7D900712FEA /* Release */ = { + F4487E752E4DE4BF00884226 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - DEVELOPMENT_TEAM = ""; - INFOPLIST_FILE = Example/Info.plist; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"Example/Preview Content\""; + ENABLE_PREVIEWS = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.example; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; @@ -523,11 +485,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8B32441C1E07D7D900712FEA /* Build configuration list for PBXNativeTarget "Example" */ = { + F4487E732E4DE4BF00884226 /* Build configuration list for PBXNativeTarget "Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8B32441D1E07D7D900712FEA /* Debug */, - 8B32441E1E07D7D900712FEA /* Release */, + F4487E742E4DE4BF00884226 /* Debug */, + F4487E752E4DE4BF00884226 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; From 969fa5e8c02598bd46d211e9f7d2d88908ab5465 Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 02:56:47 -0700 Subject: [PATCH 17/24] Delete ViewController.swift --- Example/ViewController.swift | 55 ------------------------------------ 1 file changed, 55 deletions(-) delete mode 100644 Example/ViewController.swift diff --git a/Example/ViewController.swift b/Example/ViewController.swift deleted file mode 100644 index b2cbd4f..0000000 --- a/Example/ViewController.swift +++ /dev/null @@ -1,55 +0,0 @@ -// -// ViewController.swift -// Example -// -// Created by Lasha Efremidze on 5/28/16. -// Copyright © 2016 Lasha Efremidze. All rights reserved. -// - -import UIKit -import VisualEffectView - -class ViewController: UIViewController { - - @IBOutlet var blurImageViews: [BlurImageView]! { - didSet { - for (blurImageView, color) in zip(blurImageViews, UIColor.allCases) { - blurImageView.image = UIImage(named: "swift") - blurImageView.contentMode = .center - blurImageView.visualEffectView.tint(color, blurRadius: 2) - } - } - } - - @IBOutlet weak var slider: UISlider! { - didSet { - slider.thumbTintColor = .white - slider.minimumTrackTintColor = .white - slider.maximumTrackTintColor = .white - } - } - - @IBAction func sliderChange(_ slider: UISlider) { - for blurImageView in blurImageViews { - blurImageView.visualEffectView.blurRadius = CGFloat(slider.value) - } - } - -} - -class BlurImageView: UIImageView { - lazy var visualEffectView: VisualEffectView = { [unowned self] in - let view = VisualEffectView() - self.addSubview(view) - view.constrainToEdges() - return view - }() -} - -extension VisualEffectView { - func tint(_ color: UIColor, blurRadius: CGFloat) { - self.colorTint = color - self.colorTintAlpha = 0.5 - self.blurRadius = blurRadius - } -} From 94157aada5ce16c4f242f4f9f65a1bea67c3e7ca Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 03:03:14 -0700 Subject: [PATCH 18/24] Create ContentView.swift --- Example/ContentView.swift | 55 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 Example/ContentView.swift diff --git a/Example/ContentView.swift b/Example/ContentView.swift new file mode 100644 index 0000000..e6ad6e3 --- /dev/null +++ b/Example/ContentView.swift @@ -0,0 +1,55 @@ +// +// ContentView.swift +// Example +// +// Created by Lasha Efremidze on 8/14/25. +// Copyright © 2025 Lasha Efremidze. All rights reserved. +// + +import SwiftUI +import VisualEffectView + +struct ContentView: View { + @State private var blurRadius: CGFloat = 0 + + var body: some View { + ZStack(alignment: .bottom) { + LazyVGrid(columns: [GridItem(.flexible()), GridItem(.flexible())], spacing: 16) { + ForEach(Color.colors, id: \.self) { color in + ZStack { + Image(systemName: "swift") + .resizable() + .scaledToFit() + .frame(width: 50, height: 100) + .foregroundStyle(.black) + + VisualEffect( + colorTint: color, + colorTintAlpha: 0.5, + blurRadius: blurRadius + ) + } + } + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + + VStack { + Slider(value: $blurRadius, in: 0...20) + + Text("Slide to blur") + .font(.caption) + .foregroundStyle(.secondary) + } + .padding(.horizontal, 32) + .padding(.bottom, 32) + } + } +} + +private extension Color { + static let colors = [red, orange, yellow, green, teal, blue, purple, pink] +} + +#Preview { + ContentView() +} From 68684114e31751bb6cf789d21a256921e2f0c006 Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 03:07:02 -0700 Subject: [PATCH 19/24] Update project.pbxproj --- VisualEffectView.xcodeproj/project.pbxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VisualEffectView.xcodeproj/project.pbxproj b/VisualEffectView.xcodeproj/project.pbxproj index 4cbb584..e67081d 100755 --- a/VisualEffectView.xcodeproj/project.pbxproj +++ b/VisualEffectView.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 70; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ From 4de55cad416e2c738ecf406471a4957a0c3ee9f6 Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 03:10:20 -0700 Subject: [PATCH 20/24] Update project.pbxproj --- VisualEffectView.xcodeproj/project.pbxproj | 47 +++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/VisualEffectView.xcodeproj/project.pbxproj b/VisualEffectView.xcodeproj/project.pbxproj index e67081d..11d3da9 100755 --- a/VisualEffectView.xcodeproj/project.pbxproj +++ b/VisualEffectView.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 70; objects = { /* Begin PBXBuildFile section */ @@ -13,9 +13,35 @@ F449249E206F2D5100117F6B /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = F449249B206F2D5100117F6B /* README.md */; }; F449249F206F2D5100117F6B /* VisualEffectView.podspec in Resources */ = {isa = PBXBuildFile; fileRef = F449249C206F2D5100117F6B /* VisualEffectView.podspec */; }; F44924A0206F2D5100117F6B /* CHANGELOG.md in Resources */ = {isa = PBXBuildFile; fileRef = F449249D206F2D5100117F6B /* CHANGELOG.md */; }; + F49B90F72E4DED7500B8431A /* VisualEffectView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */; }; + F49B90F82E4DED7500B8431A /* VisualEffectView.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; F4BE05CB25108C0000500B57 /* UIViewEffectView+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4BE05CA25108C0000500B57 /* UIViewEffectView+Helpers.swift */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + F49B90F92E4DED7500B8431A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8B3243F51E07D7CB00712FEA /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8B3243FD1E07D7CB00712FEA; + remoteInfo = VisualEffectView; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + F49B90FB2E4DED7500B8431A /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F49B90F82E4DED7500B8431A /* VisualEffectView.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VisualEffectView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8B3244011E07D7CB00712FEA /* VisualEffectView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VisualEffectView.h; sourceTree = ""; }; @@ -44,6 +70,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F49B90F72E4DED7500B8431A /* VisualEffectView.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -58,6 +85,7 @@ F449249C206F2D5100117F6B /* VisualEffectView.podspec */, 8B3244001E07D7CB00712FEA /* VisualEffectView */, F4487E692E4DE4BE00884226 /* Example */, + F49B90F62E4DED7500B8431A /* Frameworks */, 8B3243FF1E07D7CB00712FEA /* Products */, ); sourceTree = ""; @@ -83,6 +111,13 @@ path = Sources; sourceTree = ""; }; + F49B90F62E4DED7500B8431A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -122,10 +157,12 @@ F4487E642E4DE4BE00884226 /* Sources */, F4487E652E4DE4BE00884226 /* Frameworks */, F4487E662E4DE4BE00884226 /* Resources */, + F49B90FB2E4DED7500B8431A /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( + F49B90FA2E4DED7500B8431A /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( F4487E692E4DE4BE00884226 /* Example */, @@ -216,6 +253,14 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + F49B90FA2E4DED7500B8431A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8B3243FD1E07D7CB00712FEA /* VisualEffectView */; + targetProxy = F49B90F92E4DED7500B8431A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ 8B3244041E07D7CB00712FEA /* Debug */ = { isa = XCBuildConfiguration; From 80c99eddf6efd7273a9be034178c709ae5fe103b Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 03:10:45 -0700 Subject: [PATCH 21/24] Update Example.xcscheme --- .../xcshareddata/xcschemes/Example.xcscheme | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/VisualEffectView.xcodeproj/xcshareddata/xcschemes/Example.xcscheme b/VisualEffectView.xcodeproj/xcshareddata/xcschemes/Example.xcscheme index a153e2d..6e8bf31 100644 --- a/VisualEffectView.xcodeproj/xcshareddata/xcschemes/Example.xcscheme +++ b/VisualEffectView.xcodeproj/xcshareddata/xcschemes/Example.xcscheme @@ -14,7 +14,7 @@ buildForAnalyzing = "YES"> @@ -44,7 +44,7 @@ runnableDebuggingMode = "0"> @@ -61,7 +61,7 @@ runnableDebuggingMode = "0"> From 27de5dc64e8e1b4a31b74cd3c6daa1dd623f373d Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 03:11:53 -0700 Subject: [PATCH 22/24] Update project.pbxproj --- VisualEffectView.xcodeproj/project.pbxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VisualEffectView.xcodeproj/project.pbxproj b/VisualEffectView.xcodeproj/project.pbxproj index 11d3da9..b9b808e 100755 --- a/VisualEffectView.xcodeproj/project.pbxproj +++ b/VisualEffectView.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 70; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ From 0ed35b1364342936f891fc31b039863a77bb02cd Mon Sep 17 00:00:00 2001 From: Lasha Efremidze Date: Thu, 14 Aug 2025 10:59:54 -0700 Subject: [PATCH 23/24] updated project --- VisualEffectView.xcodeproj/project.pbxproj | 11 +++++++++-- .../xcshareddata/xcschemes/Example.xcscheme | 2 +- .../xcshareddata/xcschemes/VisualEffectView.xcscheme | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/VisualEffectView.xcodeproj/project.pbxproj b/VisualEffectView.xcodeproj/project.pbxproj index b9b808e..9701a1e 100755 --- a/VisualEffectView.xcodeproj/project.pbxproj +++ b/VisualEffectView.xcodeproj/project.pbxproj @@ -180,8 +180,9 @@ 8B3243F51E07D7CB00712FEA /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 1620; - LastUpgradeCheck = 1200; + LastUpgradeCheck = 1620; ORGANIZATIONNAME = "Lasha Efremidze"; TargetAttributes = { 8B3243FD1E07D7CB00712FEA = { @@ -195,7 +196,7 @@ }; }; buildConfigurationList = 8B3243F81E07D7CB00712FEA /* Build configuration list for PBXProject "VisualEffectView" */; - compatibilityVersion = "Xcode 12.0"; + compatibilityVersion = "Xcode 15.3"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -266,6 +267,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -330,6 +332,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -394,6 +397,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; GENERATE_INFOPLIST_FILE = YES; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( @@ -402,6 +406,7 @@ "@loader_path/Frameworks", ); MARKETING_VERSION = 4.1.5; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; PRODUCT_BUNDLE_IDENTIFIER = com.example.VisualEffectView; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -419,6 +424,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; GENERATE_INFOPLIST_FILE = YES; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( @@ -427,6 +433,7 @@ "@loader_path/Frameworks", ); MARKETING_VERSION = 4.1.5; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; PRODUCT_BUNDLE_IDENTIFIER = com.example.VisualEffectView; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/VisualEffectView.xcodeproj/xcshareddata/xcschemes/Example.xcscheme b/VisualEffectView.xcodeproj/xcshareddata/xcschemes/Example.xcscheme index 6e8bf31..4d3e190 100644 --- a/VisualEffectView.xcodeproj/xcshareddata/xcschemes/Example.xcscheme +++ b/VisualEffectView.xcodeproj/xcshareddata/xcschemes/Example.xcscheme @@ -1,6 +1,6 @@ Date: Thu, 14 Aug 2025 11:08:41 -0700 Subject: [PATCH 24/24] Update project.pbxproj --- VisualEffectView.xcodeproj/project.pbxproj | 40 +++++++++++++++++----- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/VisualEffectView.xcodeproj/project.pbxproj b/VisualEffectView.xcodeproj/project.pbxproj index 9701a1e..3d7b663 100755 --- a/VisualEffectView.xcodeproj/project.pbxproj +++ b/VisualEffectView.xcodeproj/project.pbxproj @@ -16,6 +16,10 @@ F49B90F72E4DED7500B8431A /* VisualEffectView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */; }; F49B90F82E4DED7500B8431A /* VisualEffectView.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; F4BE05CB25108C0000500B57 /* UIViewEffectView+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4BE05CA25108C0000500B57 /* UIViewEffectView+Helpers.swift */; }; + F4EFB65C2E4E5DA000348AC7 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EFB6592E4E5DA000348AC7 /* ContentView.swift */; }; + F4EFB65D2E4E5DA000348AC7 /* ExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EFB65A2E4E5DA000348AC7 /* ExampleApp.swift */; }; + F4EFB65E2E4E5DA000348AC7 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F4EFB6562E4E5DA000348AC7 /* Preview Assets.xcassets */; }; + F4EFB65F2E4E5DA000348AC7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F4EFB6582E4E5DA000348AC7 /* Assets.xcassets */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -52,12 +56,12 @@ F449249C206F2D5100117F6B /* VisualEffectView.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VisualEffectView.podspec; sourceTree = ""; }; F449249D206F2D5100117F6B /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = ""; }; F4BE05CA25108C0000500B57 /* UIViewEffectView+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewEffectView+Helpers.swift"; sourceTree = ""; }; + F4EFB6562E4E5DA000348AC7 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + F4EFB6582E4E5DA000348AC7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + F4EFB6592E4E5DA000348AC7 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + F4EFB65A2E4E5DA000348AC7 /* ExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleApp.swift; sourceTree = ""; }; /* End PBXFileReference section */ -/* Begin PBXFileSystemSynchronizedRootGroup section */ - F4487E692E4DE4BE00884226 /* Example */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = Example; sourceTree = ""; }; -/* End PBXFileSystemSynchronizedRootGroup section */ - /* Begin PBXFrameworksBuildPhase section */ 8B3243FA1E07D7CB00712FEA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; @@ -84,7 +88,7 @@ F449249B206F2D5100117F6B /* README.md */, F449249C206F2D5100117F6B /* VisualEffectView.podspec */, 8B3244001E07D7CB00712FEA /* VisualEffectView */, - F4487E692E4DE4BE00884226 /* Example */, + F4EFB65B2E4E5DA000348AC7 /* Example */, F49B90F62E4DED7500B8431A /* Frameworks */, 8B3243FF1E07D7CB00712FEA /* Products */, ); @@ -118,6 +122,25 @@ name = Frameworks; sourceTree = ""; }; + F4EFB6572E4E5DA000348AC7 /* Preview Content */ = { + isa = PBXGroup; + children = ( + F4EFB6562E4E5DA000348AC7 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + F4EFB65B2E4E5DA000348AC7 /* Example */ = { + isa = PBXGroup; + children = ( + F4EFB6572E4E5DA000348AC7 /* Preview Content */, + F4EFB6582E4E5DA000348AC7 /* Assets.xcassets */, + F4EFB6592E4E5DA000348AC7 /* ContentView.swift */, + F4EFB65A2E4E5DA000348AC7 /* ExampleApp.swift */, + ); + path = Example; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -164,9 +187,6 @@ dependencies = ( F49B90FA2E4DED7500B8431A /* PBXTargetDependency */, ); - fileSystemSynchronizedGroups = ( - F4487E692E4DE4BE00884226 /* Example */, - ); name = Example; packageProductDependencies = ( ); @@ -229,6 +249,8 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + F4EFB65E2E4E5DA000348AC7 /* Preview Assets.xcassets in Resources */, + F4EFB65F2E4E5DA000348AC7 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -249,6 +271,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + F4EFB65C2E4E5DA000348AC7 /* ContentView.swift in Sources */, + F4EFB65D2E4E5DA000348AC7 /* ExampleApp.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };