├── .gitignore ├── .swiftpm └── xcode │ └── package.xcworkspace │ └── contents.xcworkspacedata ├── CONTRIBUTING.md ├── Example ├── Podfile ├── SSSwiftUISideMenuDemo.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── SSSwiftUISideMenuDemo │ ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ ├── friends.imageset │ │ ├── Contents.json │ │ └── ic_user_profile_follow.pdf │ ├── home.imageset │ │ ├── Contents.json │ │ └── icoHome.png │ ├── logout.imageset │ │ ├── Contents.json │ │ └── ic_logout_sidemenu.pdf │ ├── menu.imageset │ │ ├── Contents.json │ │ └── menu.png │ └── setting.imageset │ │ ├── Contents.json │ │ └── ic_profile_setting.pdf │ ├── Container Views │ ├── Home.swift │ ├── MyFriends.swift │ └── Settings.swift │ ├── ContentView.swift │ ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json │ └── SSSwiftUISideMenuDemoApp.swift ├── LICENSE ├── Package.swift ├── README.md ├── SSSwiftUISideMenu.podspec └── Sources └── SSSwiftUISideMenu ├── SSMenuConfig.swift └── SSSwiftUISideMenu.swift /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## User settings 6 | xcuserdata/ 7 | 8 | ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) 9 | *.xcscmblueprint 10 | *.xccheckout 11 | 12 | ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) 13 | build/ 14 | DerivedData/ 15 | *.moved-aside 16 | *.pbxuser 17 | !default.pbxuser 18 | *.mode1v3 19 | !default.mode1v3 20 | *.mode2v3 21 | !default.mode2v3 22 | *.perspectivev3 23 | !default.perspectivev3 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | 28 | ## App packaging 29 | *.ipa 30 | *.dSYM.zip 31 | *.dSYM 32 | 33 | ## Playgrounds 34 | timeline.xctimeline 35 | playground.xcworkspace 36 | 37 | # Swift Package Manager 38 | # 39 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 40 | # Packages/ 41 | # Package.pins 42 | # Package.resolved 43 | # *.xcodeproj 44 | # 45 | # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata 46 | # hence it is not needed unless you have added a package configuration file to your project 47 | # .swiftpm 48 | 49 | .build/ 50 | 51 | # CocoaPods 52 | # 53 | # We recommend against adding the Pods directory to your .gitignore. However 54 | # you should judge for yourself, the pros and cons are mentioned at: 55 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 56 | # 57 | # Pods/ 58 | # 59 | # Add this line if you want to avoid checking in source code from the Xcode workspace 60 | # *.xcworkspace 61 | 62 | # Carthage 63 | # 64 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 65 | # Carthage/Checkouts 66 | 67 | Carthage/Build/ 68 | 69 | # Accio dependency management 70 | Dependencies/ 71 | .accio/ 72 | 73 | # fastlane 74 | # 75 | # It is recommended to not store the screenshots in the git repo. 76 | # Instead, use fastlane to re-generate the screenshots whenever they are needed. 77 | # For more information about the recommended setup visit: 78 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 79 | 80 | *.xcworkspacedata 81 | *.xcuserstate 82 | .DS_Store 83 | Breakpoints_v2.xcbkptlist 84 | Pods 85 | fastlane/report.xml 86 | fastlane/Preview.html 87 | fastlane/screenshots/**/*.png 88 | fastlane/test_output 89 | 90 | # Code Injection 91 | # 92 | # After new code Injection tools there's a generated folder /iOSInjectionProject 93 | # https://github.com/johnno1962/injectionforxcode 94 | 95 | iOSInjectionProject/ 96 | -------------------------------------------------------------------------------- /.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Way to contribute 2 | 3 | 1. Fork the repo and create your branch from `master`. 4 | 2. Clone the project to your own machine. (Please have a look at [**Readme.md**](https://github.com/mobile-simformsolutions/SSSwiftUISideMenu/blob/master/README.md) to understand how to run this project on your machine) 5 | 3. Commit changes to your own branch 6 | 4. Make sure your code lints. 7 | 5. Push your work back up to your fork. 8 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | platform :ios, '13.0' 4 | 5 | target 'SSSwiftUISideMenuDemo' do 6 | pod 'SSSwiftUISideMenu' 7 | end -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 55; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 7B83AFF42AF0EA14004B0E33 /* Home.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B83AFF32AF0EA14004B0E33 /* Home.swift */; }; 11 | 7B83AFFB2AF11ADB004B0E33 /* MyFriends.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B83AFFA2AF11ADB004B0E33 /* MyFriends.swift */; }; 12 | 7B83AFFD2AF11AE4004B0E33 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B83AFFC2AF11AE4004B0E33 /* Settings.swift */; }; 13 | 7BB88FD12AEA9139003E5520 /* SSSwiftUISideMenuDemoApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BB88FD02AEA9139003E5520 /* SSSwiftUISideMenuDemoApp.swift */; }; 14 | 7BB88FD32AEA9139003E5520 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BB88FD22AEA9139003E5520 /* ContentView.swift */; }; 15 | 7BB88FD52AEA913B003E5520 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7BB88FD42AEA913B003E5520 /* Assets.xcassets */; }; 16 | 7BB88FD82AEA913B003E5520 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7BB88FD72AEA913B003E5520 /* Preview Assets.xcassets */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXFileReference section */ 20 | 7B83AFF32AF0EA14004B0E33 /* Home.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Home.swift; sourceTree = ""; }; 21 | 7B83AFFA2AF11ADB004B0E33 /* MyFriends.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyFriends.swift; sourceTree = ""; }; 22 | 7B83AFFC2AF11AE4004B0E33 /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = ""; }; 23 | 7BB88FD02AEA9139003E5520 /* SSSwiftUISideMenuDemoApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSSwiftUISideMenuDemoApp.swift; sourceTree = ""; }; 24 | 7BB88FD22AEA9139003E5520 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 25 | 7BB88FD42AEA913B003E5520 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 26 | 7BB88FD72AEA913B003E5520 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 27 | 7BE848832AF2154900EA2C07 /* SSSwiftUISideMenuDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = SSSwiftUISideMenuDemo.app; path = "/Users/parthdumaswala/Documents/Subversion/SSSwiftUISideMenu/Example/build/Debug-iphoneos/SSSwiftUISideMenuDemo.app"; sourceTree = ""; }; 28 | /* End PBXFileReference section */ 29 | 30 | /* Begin PBXFrameworksBuildPhase section */ 31 | 7BB88FCA2AEA9139003E5520 /* Frameworks */ = { 32 | isa = PBXFrameworksBuildPhase; 33 | buildActionMask = 2147483647; 34 | files = ( 35 | ); 36 | runOnlyForDeploymentPostprocessing = 0; 37 | }; 38 | /* End PBXFrameworksBuildPhase section */ 39 | 40 | /* Begin PBXGroup section */ 41 | 7B83AFF92AF11AC0004B0E33 /* Container Views */ = { 42 | isa = PBXGroup; 43 | children = ( 44 | 7B83AFF32AF0EA14004B0E33 /* Home.swift */, 45 | 7B83AFFA2AF11ADB004B0E33 /* MyFriends.swift */, 46 | 7B83AFFC2AF11AE4004B0E33 /* Settings.swift */, 47 | ); 48 | path = "Container Views"; 49 | sourceTree = ""; 50 | }; 51 | 7BB88FC42AEA9139003E5520 = { 52 | isa = PBXGroup; 53 | children = ( 54 | 7BB88FCF2AEA9139003E5520 /* SSSwiftUISideMenuDemo */, 55 | ); 56 | sourceTree = ""; 57 | }; 58 | 7BB88FCF2AEA9139003E5520 /* SSSwiftUISideMenuDemo */ = { 59 | isa = PBXGroup; 60 | children = ( 61 | 7B83AFF92AF11AC0004B0E33 /* Container Views */, 62 | 7BB88FD22AEA9139003E5520 /* ContentView.swift */, 63 | 7BB88FD02AEA9139003E5520 /* SSSwiftUISideMenuDemoApp.swift */, 64 | 7BB88FD42AEA913B003E5520 /* Assets.xcassets */, 65 | 7BB88FD62AEA913B003E5520 /* Preview Content */, 66 | ); 67 | path = SSSwiftUISideMenuDemo; 68 | sourceTree = ""; 69 | }; 70 | 7BB88FD62AEA913B003E5520 /* Preview Content */ = { 71 | isa = PBXGroup; 72 | children = ( 73 | 7BB88FD72AEA913B003E5520 /* Preview Assets.xcassets */, 74 | ); 75 | path = "Preview Content"; 76 | sourceTree = ""; 77 | }; 78 | /* End PBXGroup section */ 79 | 80 | /* Begin PBXNativeTarget section */ 81 | 7BB88FCC2AEA9139003E5520 /* SSSwiftUISideMenuDemo */ = { 82 | isa = PBXNativeTarget; 83 | buildConfigurationList = 7BB88FDB2AEA913B003E5520 /* Build configuration list for PBXNativeTarget "SSSwiftUISideMenuDemo" */; 84 | buildPhases = ( 85 | 94AE78DB047D858A91ECF2F8 /* [CP] Check Pods Manifest.lock */, 86 | 7BB88FC92AEA9139003E5520 /* Sources */, 87 | 7BB88FCA2AEA9139003E5520 /* Frameworks */, 88 | 7BB88FCB2AEA9139003E5520 /* Resources */, 89 | DCD716715F13FB1C7DEF8D28 /* [CP] Embed Pods Frameworks */, 90 | ); 91 | buildRules = ( 92 | ); 93 | dependencies = ( 94 | ); 95 | name = SSSwiftUISideMenuDemo; 96 | productName = SSSwiftUISideMenuDemo; 97 | productReference = 7BE848832AF2154900EA2C07 /* SSSwiftUISideMenuDemo.app */; 98 | productType = "com.apple.product-type.application"; 99 | }; 100 | /* End PBXNativeTarget section */ 101 | 102 | /* Begin PBXProject section */ 103 | 7BB88FC52AEA9139003E5520 /* Project object */ = { 104 | isa = PBXProject; 105 | attributes = { 106 | BuildIndependentTargetsInParallel = 1; 107 | LastSwiftUpdateCheck = 1500; 108 | LastUpgradeCheck = 1500; 109 | TargetAttributes = { 110 | 7BB88FCC2AEA9139003E5520 = { 111 | CreatedOnToolsVersion = 15.0.1; 112 | }; 113 | }; 114 | }; 115 | buildConfigurationList = 7BB88FC82AEA9139003E5520 /* Build configuration list for PBXProject "SSSwiftUISideMenuDemo" */; 116 | compatibilityVersion = "Xcode 13.0"; 117 | developmentRegion = en; 118 | hasScannedForEncodings = 0; 119 | knownRegions = ( 120 | en, 121 | Base, 122 | ); 123 | mainGroup = 7BB88FC42AEA9139003E5520; 124 | productRefGroup = 7BB88FC42AEA9139003E5520; 125 | projectDirPath = ""; 126 | projectRoot = ""; 127 | targets = ( 128 | 7BB88FCC2AEA9139003E5520 /* SSSwiftUISideMenuDemo */, 129 | ); 130 | }; 131 | /* End PBXProject section */ 132 | 133 | /* Begin PBXResourcesBuildPhase section */ 134 | 7BB88FCB2AEA9139003E5520 /* Resources */ = { 135 | isa = PBXResourcesBuildPhase; 136 | buildActionMask = 2147483647; 137 | files = ( 138 | 7BB88FD82AEA913B003E5520 /* Preview Assets.xcassets in Resources */, 139 | 7BB88FD52AEA913B003E5520 /* Assets.xcassets in Resources */, 140 | ); 141 | runOnlyForDeploymentPostprocessing = 0; 142 | }; 143 | /* End PBXResourcesBuildPhase section */ 144 | 145 | /* Begin PBXShellScriptBuildPhase section */ 146 | 94AE78DB047D858A91ECF2F8 /* [CP] Check Pods Manifest.lock */ = { 147 | isa = PBXShellScriptBuildPhase; 148 | buildActionMask = 2147483647; 149 | files = ( 150 | ); 151 | inputFileListPaths = ( 152 | ); 153 | inputPaths = ( 154 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 155 | "${PODS_ROOT}/Manifest.lock", 156 | ); 157 | name = "[CP] Check Pods Manifest.lock"; 158 | outputFileListPaths = ( 159 | ); 160 | outputPaths = ( 161 | "$(DERIVED_FILE_DIR)/Pods-SSSwiftUISideMenuDemo-checkManifestLockResult.txt", 162 | ); 163 | runOnlyForDeploymentPostprocessing = 0; 164 | shellPath = /bin/sh; 165 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 166 | showEnvVarsInLog = 0; 167 | }; 168 | DCD716715F13FB1C7DEF8D28 /* [CP] Embed Pods Frameworks */ = { 169 | isa = PBXShellScriptBuildPhase; 170 | buildActionMask = 2147483647; 171 | files = ( 172 | ); 173 | inputFileListPaths = ( 174 | "${PODS_ROOT}/Target Support Files/Pods-SSSwiftUISideMenuDemo/Pods-SSSwiftUISideMenuDemo-frameworks-${CONFIGURATION}-input-files.xcfilelist", 175 | ); 176 | name = "[CP] Embed Pods Frameworks"; 177 | outputFileListPaths = ( 178 | "${PODS_ROOT}/Target Support Files/Pods-SSSwiftUISideMenuDemo/Pods-SSSwiftUISideMenuDemo-frameworks-${CONFIGURATION}-output-files.xcfilelist", 179 | ); 180 | runOnlyForDeploymentPostprocessing = 0; 181 | shellPath = /bin/sh; 182 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SSSwiftUISideMenuDemo/Pods-SSSwiftUISideMenuDemo-frameworks.sh\"\n"; 183 | showEnvVarsInLog = 0; 184 | }; 185 | /* End PBXShellScriptBuildPhase section */ 186 | 187 | /* Begin PBXSourcesBuildPhase section */ 188 | 7BB88FC92AEA9139003E5520 /* Sources */ = { 189 | isa = PBXSourcesBuildPhase; 190 | buildActionMask = 2147483647; 191 | files = ( 192 | 7BB88FD32AEA9139003E5520 /* ContentView.swift in Sources */, 193 | 7BB88FD12AEA9139003E5520 /* SSSwiftUISideMenuDemoApp.swift in Sources */, 194 | 7B83AFFB2AF11ADB004B0E33 /* MyFriends.swift in Sources */, 195 | 7B83AFFD2AF11AE4004B0E33 /* Settings.swift in Sources */, 196 | 7B83AFF42AF0EA14004B0E33 /* Home.swift in Sources */, 197 | ); 198 | runOnlyForDeploymentPostprocessing = 0; 199 | }; 200 | /* End PBXSourcesBuildPhase section */ 201 | 202 | /* Begin XCBuildConfiguration section */ 203 | 7BB88FD92AEA913B003E5520 /* Debug */ = { 204 | isa = XCBuildConfiguration; 205 | buildSettings = { 206 | ALWAYS_SEARCH_USER_PATHS = NO; 207 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 208 | CLANG_ANALYZER_NONNULL = YES; 209 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 210 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 211 | CLANG_ENABLE_MODULES = YES; 212 | CLANG_ENABLE_OBJC_ARC = YES; 213 | CLANG_ENABLE_OBJC_WEAK = YES; 214 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 215 | CLANG_WARN_BOOL_CONVERSION = YES; 216 | CLANG_WARN_COMMA = YES; 217 | CLANG_WARN_CONSTANT_CONVERSION = YES; 218 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 219 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 220 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 221 | CLANG_WARN_EMPTY_BODY = YES; 222 | CLANG_WARN_ENUM_CONVERSION = YES; 223 | CLANG_WARN_INFINITE_RECURSION = YES; 224 | CLANG_WARN_INT_CONVERSION = YES; 225 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 226 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 227 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 228 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 229 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 230 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 231 | CLANG_WARN_STRICT_PROTOTYPES = YES; 232 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 233 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 234 | CLANG_WARN_UNREACHABLE_CODE = YES; 235 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 236 | COPY_PHASE_STRIP = NO; 237 | DEBUG_INFORMATION_FORMAT = dwarf; 238 | ENABLE_STRICT_OBJC_MSGSEND = YES; 239 | ENABLE_TESTABILITY = YES; 240 | ENABLE_USER_SCRIPT_SANDBOXING = NO; 241 | GCC_C_LANGUAGE_STANDARD = gnu17; 242 | GCC_DYNAMIC_NO_PIC = NO; 243 | GCC_NO_COMMON_BLOCKS = YES; 244 | GCC_OPTIMIZATION_LEVEL = 0; 245 | GCC_PREPROCESSOR_DEFINITIONS = ( 246 | "DEBUG=1", 247 | "$(inherited)", 248 | ); 249 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 250 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 251 | GCC_WARN_UNDECLARED_SELECTOR = YES; 252 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 253 | GCC_WARN_UNUSED_FUNCTION = YES; 254 | GCC_WARN_UNUSED_VARIABLE = YES; 255 | IPHONEOS_DEPLOYMENT_TARGET = 17.0; 256 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES; 257 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 258 | MTL_FAST_MATH = YES; 259 | ONLY_ACTIVE_ARCH = YES; 260 | SDKROOT = iphoneos; 261 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; 262 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 263 | }; 264 | name = Debug; 265 | }; 266 | 7BB88FDA2AEA913B003E5520 /* Release */ = { 267 | isa = XCBuildConfiguration; 268 | buildSettings = { 269 | ALWAYS_SEARCH_USER_PATHS = NO; 270 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 271 | CLANG_ANALYZER_NONNULL = YES; 272 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 273 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 274 | CLANG_ENABLE_MODULES = YES; 275 | CLANG_ENABLE_OBJC_ARC = YES; 276 | CLANG_ENABLE_OBJC_WEAK = YES; 277 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 278 | CLANG_WARN_BOOL_CONVERSION = YES; 279 | CLANG_WARN_COMMA = YES; 280 | CLANG_WARN_CONSTANT_CONVERSION = YES; 281 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 282 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 283 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 284 | CLANG_WARN_EMPTY_BODY = YES; 285 | CLANG_WARN_ENUM_CONVERSION = YES; 286 | CLANG_WARN_INFINITE_RECURSION = YES; 287 | CLANG_WARN_INT_CONVERSION = YES; 288 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 289 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 290 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 291 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 292 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 293 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 294 | CLANG_WARN_STRICT_PROTOTYPES = YES; 295 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 296 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 297 | CLANG_WARN_UNREACHABLE_CODE = YES; 298 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 299 | COPY_PHASE_STRIP = NO; 300 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 301 | ENABLE_NS_ASSERTIONS = NO; 302 | ENABLE_STRICT_OBJC_MSGSEND = YES; 303 | ENABLE_USER_SCRIPT_SANDBOXING = NO; 304 | GCC_C_LANGUAGE_STANDARD = gnu17; 305 | GCC_NO_COMMON_BLOCKS = YES; 306 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 307 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 308 | GCC_WARN_UNDECLARED_SELECTOR = YES; 309 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 310 | GCC_WARN_UNUSED_FUNCTION = YES; 311 | GCC_WARN_UNUSED_VARIABLE = YES; 312 | IPHONEOS_DEPLOYMENT_TARGET = 17.0; 313 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES; 314 | MTL_ENABLE_DEBUG_INFO = NO; 315 | MTL_FAST_MATH = YES; 316 | SDKROOT = iphoneos; 317 | SWIFT_COMPILATION_MODE = wholemodule; 318 | VALIDATE_PRODUCT = YES; 319 | }; 320 | name = Release; 321 | }; 322 | 7BB88FDC2AEA913B003E5520 /* Debug */ = { 323 | isa = XCBuildConfiguration; 324 | buildSettings = { 325 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 326 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 327 | CODE_SIGN_STYLE = Automatic; 328 | CURRENT_PROJECT_VERSION = 1; 329 | DEVELOPMENT_ASSET_PATHS = "\"SSSwiftUISideMenuDemo/Preview Content\""; 330 | DEVELOPMENT_TEAM = K7XJG666ZW; 331 | ENABLE_PREVIEWS = YES; 332 | GENERATE_INFOPLIST_FILE = YES; 333 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 334 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 335 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 336 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 337 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 338 | LD_RUNPATH_SEARCH_PATHS = ( 339 | "$(inherited)", 340 | "@executable_path/Frameworks", 341 | ); 342 | MARKETING_VERSION = 1.0; 343 | PRODUCT_BUNDLE_IDENTIFIER = simform.SSSwiftUISideMenuDemo; 344 | PRODUCT_NAME = "$(TARGET_NAME)"; 345 | SWIFT_EMIT_LOC_STRINGS = YES; 346 | SWIFT_VERSION = 5.0; 347 | TARGETED_DEVICE_FAMILY = "1,2"; 348 | }; 349 | name = Debug; 350 | }; 351 | 7BB88FDD2AEA913B003E5520 /* Release */ = { 352 | isa = XCBuildConfiguration; 353 | buildSettings = { 354 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 355 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 356 | CODE_SIGN_STYLE = Automatic; 357 | CURRENT_PROJECT_VERSION = 1; 358 | DEVELOPMENT_ASSET_PATHS = "\"SSSwiftUISideMenuDemo/Preview Content\""; 359 | DEVELOPMENT_TEAM = K7XJG666ZW; 360 | ENABLE_PREVIEWS = YES; 361 | GENERATE_INFOPLIST_FILE = YES; 362 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 363 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 364 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 365 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 366 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 367 | LD_RUNPATH_SEARCH_PATHS = ( 368 | "$(inherited)", 369 | "@executable_path/Frameworks", 370 | ); 371 | MARKETING_VERSION = 1.0; 372 | PRODUCT_BUNDLE_IDENTIFIER = simform.SSSwiftUISideMenuDemo; 373 | PRODUCT_NAME = "$(TARGET_NAME)"; 374 | SWIFT_EMIT_LOC_STRINGS = YES; 375 | SWIFT_VERSION = 5.0; 376 | TARGETED_DEVICE_FAMILY = "1,2"; 377 | }; 378 | name = Release; 379 | }; 380 | /* End XCBuildConfiguration section */ 381 | 382 | /* Begin XCConfigurationList section */ 383 | 7BB88FC82AEA9139003E5520 /* Build configuration list for PBXProject "SSSwiftUISideMenuDemo" */ = { 384 | isa = XCConfigurationList; 385 | buildConfigurations = ( 386 | 7BB88FD92AEA913B003E5520 /* Debug */, 387 | 7BB88FDA2AEA913B003E5520 /* Release */, 388 | ); 389 | defaultConfigurationIsVisible = 0; 390 | defaultConfigurationName = Release; 391 | }; 392 | 7BB88FDB2AEA913B003E5520 /* Build configuration list for PBXNativeTarget "SSSwiftUISideMenuDemo" */ = { 393 | isa = XCConfigurationList; 394 | buildConfigurations = ( 395 | 7BB88FDC2AEA913B003E5520 /* Debug */, 396 | 7BB88FDD2AEA913B003E5520 /* Release */, 397 | ); 398 | defaultConfigurationIsVisible = 0; 399 | defaultConfigurationName = Release; 400 | }; 401 | /* End XCConfigurationList section */ 402 | }; 403 | rootObject = 7BB88FC52AEA9139003E5520 /* Project object */; 404 | } 405 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "platform" : "ios", 6 | "size" : "1024x1024" 7 | } 8 | ], 9 | "info" : { 10 | "author" : "xcode", 11 | "version" : 1 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/friends.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "ic_user_profile_follow.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/friends.imageset/ic_user_profile_follow.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 18.200195 -0.269531 cm 14 | 0.258824 0.156863 0.121569 scn 15 | 0.239927 20.424820 m 16 | -0.343108 20.557327 -0.923171 20.192102 -1.055679 19.609068 c 17 | -1.188187 19.026031 -0.822962 18.445971 -0.239927 18.313461 c 18 | 0.239927 20.424820 l 19 | h 20 | 3.000000 14.269140 m 21 | 4.046046 13.990195 l 22 | 4.050374 14.006424 4.054323 14.022752 4.057891 14.039165 c 23 | 3.000000 14.269140 l 24 | h 25 | 0.000000 11.269140 m 26 | -0.342348 12.296185 l 27 | -0.814211 12.138897 -1.118189 11.680323 -1.079283 11.184459 c 28 | -1.040377 10.688596 -0.668599 10.283041 -0.177979 10.201270 c 29 | 0.000000 11.269140 l 30 | h 31 | 0.599998 11.169140 m 32 | 0.875513 12.216095 l 33 | 0.843340 12.224562 0.810794 12.231541 0.777978 12.237009 c 34 | 0.599998 11.169140 l 35 | h 36 | 2.617399 2.269140 m 37 | 2.617399 1.671236 3.102095 1.186541 3.699999 1.186541 c 38 | 4.297902 1.186541 4.782599 1.671236 4.782599 2.269140 c 39 | 2.617399 2.269140 l 40 | h 41 | -0.239927 18.313461 m 42 | 1.302834 17.962833 2.333656 16.300236 1.942109 14.499117 c 43 | 4.057891 14.039165 l 44 | 4.666344 16.838045 3.097166 19.775448 0.239927 20.424820 c 45 | -0.239927 18.313461 l 46 | h 47 | 1.953954 14.548086 m 48 | 1.665184 13.465199 0.881600 12.704167 -0.342348 12.296185 c 49 | 0.342348 10.242096 l 50 | 2.118401 10.834113 3.534816 12.073084 4.046046 13.990195 c 51 | 1.953954 14.548086 l 52 | h 53 | -0.177979 10.201270 m 54 | 0.422019 10.101270 l 55 | 0.777978 12.237009 l 56 | 0.177979 12.337009 l 57 | -0.177979 10.201270 l 58 | h 59 | 0.324484 10.122185 m 60 | 1.716196 9.755945 2.617399 8.511981 2.617399 7.069139 c 61 | 4.782599 7.069139 l 62 | 4.782599 9.426298 3.283801 11.582335 0.875513 12.216095 c 63 | 0.324484 10.122185 l 64 | h 65 | 2.617399 7.069139 m 66 | 2.617399 2.269140 l 67 | 4.782599 2.269140 l 68 | 4.782599 7.069139 l 69 | 2.617399 7.069139 l 70 | h 71 | f 72 | n 73 | Q 74 | q 75 | 1.000000 0.000000 -0.000000 1.000000 4.600098 9.435547 cm 76 | 0.258824 0.156863 0.121569 scn 77 | 7.317400 6.364453 m 78 | 7.317400 4.642761 5.921693 3.247054 4.200000 3.247054 c 79 | 4.200000 1.081854 l 80 | 7.117500 1.081854 9.482599 3.446954 9.482599 6.364453 c 81 | 7.317400 6.364453 l 82 | h 83 | 4.200000 3.247054 m 84 | 2.478307 3.247054 1.082600 4.642761 1.082600 6.364453 c 85 | -1.082600 6.364453 l 86 | -1.082600 3.446954 1.282501 1.081854 4.200000 1.081854 c 87 | 4.200000 3.247054 l 88 | h 89 | 1.082600 6.364453 m 90 | 1.082600 8.086145 2.478307 9.481853 4.200000 9.481853 c 91 | 4.200000 11.647053 l 92 | 1.282501 11.647053 -1.082600 9.281953 -1.082600 6.364453 c 93 | 1.082600 6.364453 l 94 | h 95 | 4.200000 9.481853 m 96 | 5.921693 9.481853 7.317400 8.086146 7.317400 6.364453 c 97 | 9.482599 6.364453 l 98 | 9.482599 9.281953 7.117500 11.647053 4.200000 11.647053 c 99 | 4.200000 9.481853 l 100 | h 101 | f 102 | n 103 | Q 104 | q 105 | 1.000000 0.000000 -0.000000 1.000000 2.000000 -0.164062 cm 106 | 0.258824 0.156863 0.121569 scn 107 | 13.500000 2.164062 m 108 | 13.500000 1.081463 l 109 | 14.097903 1.081463 14.582600 1.566159 14.582600 2.164062 c 110 | 13.500000 2.164062 l 111 | h 112 | 0.000000 2.164062 m 113 | -1.082600 2.164062 l 114 | -1.082600 1.566159 -0.597903 1.081463 0.000000 1.081463 c 115 | 0.000000 2.164062 l 116 | h 117 | 14.582600 2.164062 m 118 | 14.582600 6.964062 l 119 | 12.417400 6.964062 l 120 | 12.417400 2.164062 l 121 | 14.582600 2.164062 l 122 | h 123 | 14.582600 6.964062 m 124 | 14.582600 9.861965 12.197904 12.246662 9.300000 12.246662 c 125 | 9.300000 10.081463 l 126 | 11.002096 10.081463 12.417400 8.666159 12.417400 6.964062 c 127 | 14.582600 6.964062 l 128 | h 129 | 9.300000 12.246662 m 130 | 4.200000 12.246662 l 131 | 4.200000 10.081463 l 132 | 9.300000 10.081463 l 133 | 9.300000 12.246662 l 134 | h 135 | 4.200000 12.246662 m 136 | 1.302096 12.246662 -1.082600 9.861965 -1.082600 6.964062 c 137 | 1.082600 6.964062 l 138 | 1.082600 8.666159 2.497904 10.081463 4.200000 10.081463 c 139 | 4.200000 12.246662 l 140 | h 141 | -1.082600 6.964062 m 142 | -1.082600 2.164062 l 143 | 1.082600 2.164062 l 144 | 1.082600 6.964062 l 145 | -1.082600 6.964062 l 146 | h 147 | 0.000000 1.081463 m 148 | 13.500000 1.081463 l 149 | 13.500000 3.246663 l 150 | 0.000000 3.246663 l 151 | 0.000000 1.081463 l 152 | h 153 | f 154 | n 155 | Q 156 | 157 | endstream 158 | endobj 159 | 160 | 3 0 obj 161 | 3578 162 | endobj 163 | 164 | 4 0 obj 165 | << /Annots [] 166 | /Type /Page 167 | /MediaBox [ 0.000000 0.000000 23.000000 22.000000 ] 168 | /Resources 1 0 R 169 | /Contents 2 0 R 170 | /Parent 5 0 R 171 | >> 172 | endobj 173 | 174 | 5 0 obj 175 | << /Kids [ 4 0 R ] 176 | /Count 1 177 | /Type /Pages 178 | >> 179 | endobj 180 | 181 | 6 0 obj 182 | << /Pages 5 0 R 183 | /Type /Catalog 184 | >> 185 | endobj 186 | 187 | xref 188 | 0 7 189 | 0000000000 65535 f 190 | 0000000010 00000 n 191 | 0000000034 00000 n 192 | 0000003668 00000 n 193 | 0000003691 00000 n 194 | 0000003864 00000 n 195 | 0000003938 00000 n 196 | trailer 197 | << /ID [ (some) (id) ] 198 | /Root 6 0 R 199 | /Size 7 200 | >> 201 | startxref 202 | 3997 203 | %%EOF -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/home.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "icoHome.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/home.imageset/icoHome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimformSolutionsPvtLtd/SSSwiftUISideMenu/ff2e0908f4604076a755b16f67d9f24d0c7eb933/Example/SSSwiftUISideMenuDemo/Assets.xcassets/home.imageset/icoHome.png -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/logout.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "ic_logout_sidemenu.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/logout.imageset/ic_logout_sidemenu.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << /Type /XObject 5 | /Length 2 0 R 6 | /Group << /Type /Group 7 | /S /Transparency 8 | >> 9 | /Subtype /Form 10 | /Resources << >> 11 | /BBox [ 0.000000 0.000000 20.000000 20.000000 ] 12 | >> 13 | stream 14 | /DeviceRGB CS 15 | /DeviceRGB cs 16 | q 17 | 1.000000 0.000000 -0.000000 1.000000 1.000000 -1.000000 cm 18 | 0.258824 0.156863 0.121569 scn 19 | 6.000000 1.000000 m 20 | 6.552285 1.000000 7.000000 1.447716 7.000000 2.000000 c 21 | 7.000000 2.552284 6.552285 3.000000 6.000000 3.000000 c 22 | 6.000000 1.000000 l 23 | h 24 | 0.000000 4.000000 m 25 | -1.000000 4.000000 l 26 | 0.000000 4.000000 l 27 | h 28 | 2.000000 20.000000 m 29 | 2.000000 21.000000 l 30 | 2.000000 20.000000 l 31 | h 32 | 6.000000 19.000000 m 33 | 6.552285 19.000000 7.000000 19.447716 7.000000 20.000000 c 34 | 7.000000 20.552284 6.552285 21.000000 6.000000 21.000000 c 35 | 6.000000 19.000000 l 36 | h 37 | 6.000000 3.000000 m 38 | 2.000000 3.000000 l 39 | 2.000000 1.000000 l 40 | 6.000000 1.000000 l 41 | 6.000000 3.000000 l 42 | h 43 | 2.000000 3.000000 m 44 | 1.734784 3.000000 1.480430 3.105356 1.292893 3.292894 c 45 | -0.121320 1.878679 l 46 | 0.441288 1.316071 1.204350 1.000000 2.000000 1.000000 c 47 | 2.000000 3.000000 l 48 | h 49 | 1.292893 3.292894 m 50 | 1.105357 3.480431 1.000000 3.734783 1.000000 4.000000 c 51 | -1.000000 4.000000 l 52 | -1.000000 3.204350 -0.683930 2.441290 -0.121320 1.878679 c 53 | 1.292893 3.292894 l 54 | h 55 | 1.000000 4.000000 m 56 | 1.000000 18.000000 l 57 | -1.000000 18.000000 l 58 | -1.000000 4.000000 l 59 | 1.000000 4.000000 l 60 | h 61 | 1.000000 18.000000 m 62 | 1.000000 18.265217 1.105357 18.519571 1.292893 18.707108 c 63 | -0.121320 20.121321 l 64 | -0.683930 19.558712 -1.000000 18.795649 -1.000000 18.000000 c 65 | 1.000000 18.000000 l 66 | h 67 | 1.292893 18.707108 m 68 | 1.480429 18.894644 1.734783 19.000000 2.000000 19.000000 c 69 | 2.000000 21.000000 l 70 | 1.204351 21.000000 0.441289 20.683929 -0.121320 20.121321 c 71 | 1.292893 18.707108 l 72 | h 73 | 2.000000 19.000000 m 74 | 6.000000 19.000000 l 75 | 6.000000 21.000000 l 76 | 2.000000 21.000000 l 77 | 2.000000 19.000000 l 78 | h 79 | f 80 | n 81 | Q 82 | q 83 | 1.000000 0.000000 -0.000000 1.000000 14.000000 2.804688 cm 84 | 0.258824 0.156863 0.121569 scn 85 | -0.707107 2.902419 m 86 | -1.097631 2.511895 -1.097631 1.878730 -0.707107 1.488206 c 87 | -0.316583 1.097681 0.316583 1.097681 0.707107 1.488206 c 88 | -0.707107 2.902419 l 89 | h 90 | 5.000000 7.195312 m 91 | 5.707107 6.488206 l 92 | 6.097631 6.878730 6.097631 7.511895 5.707107 7.902419 c 93 | 5.000000 7.195312 l 94 | h 95 | 0.707107 12.902419 m 96 | 0.316583 13.292944 -0.316583 13.292944 -0.707107 12.902419 c 97 | -1.097631 12.511895 -1.097631 11.878730 -0.707107 11.488206 c 98 | 0.707107 12.902419 l 99 | h 100 | 0.707107 1.488206 m 101 | 5.707107 6.488206 l 102 | 4.292893 7.902419 l 103 | -0.707107 2.902419 l 104 | 0.707107 1.488206 l 105 | h 106 | 5.707107 7.902419 m 107 | 0.707107 12.902419 l 108 | -0.707107 11.488206 l 109 | 4.292893 6.488206 l 110 | 5.707107 7.902419 l 111 | h 112 | f 113 | n 114 | Q 115 | q 116 | 1.000000 0.000000 -0.000000 1.000000 7.000000 8.000000 cm 117 | 0.258824 0.156863 0.121569 scn 118 | 12.000000 1.000000 m 119 | 12.552285 1.000000 13.000000 1.447715 13.000000 2.000000 c 120 | 13.000000 2.552285 12.552285 3.000000 12.000000 3.000000 c 121 | 12.000000 1.000000 l 122 | h 123 | 0.000000 3.000000 m 124 | -0.552285 3.000000 -1.000000 2.552285 -1.000000 2.000000 c 125 | -1.000000 1.447715 -0.552285 1.000000 0.000000 1.000000 c 126 | 0.000000 3.000000 l 127 | h 128 | 12.000000 3.000000 m 129 | 0.000000 3.000000 l 130 | 0.000000 1.000000 l 131 | 12.000000 1.000000 l 132 | 12.000000 3.000000 l 133 | h 134 | f 135 | n 136 | Q 137 | 138 | endstream 139 | endobj 140 | 141 | 2 0 obj 142 | 2883 143 | endobj 144 | 145 | 3 0 obj 146 | << /Type /XObject 147 | /Length 4 0 R 148 | /Group << /Type /Group 149 | /S /Transparency 150 | >> 151 | /Subtype /Form 152 | /Resources << >> 153 | /BBox [ 0.000000 0.000000 20.000000 20.000000 ] 154 | >> 155 | stream 156 | /DeviceRGB CS 157 | /DeviceRGB cs 158 | q 159 | 1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm 160 | 0.000000 0.000000 0.000000 scn 161 | 0.000000 20.000000 m 162 | 20.000000 20.000000 l 163 | 20.000000 0.000000 l 164 | 0.000000 0.000000 l 165 | 0.000000 20.000000 l 166 | h 167 | f 168 | n 169 | Q 170 | 171 | endstream 172 | endobj 173 | 174 | 4 0 obj 175 | 232 176 | endobj 177 | 178 | 5 0 obj 179 | << /XObject << /X1 1 0 R >> 180 | /ExtGState << /E1 << /SMask << /Type /Mask 181 | /G 3 0 R 182 | /S /Alpha 183 | >> 184 | /Type /ExtGState 185 | >> >> 186 | >> 187 | endobj 188 | 189 | 6 0 obj 190 | << /Length 7 0 R >> 191 | stream 192 | /DeviceRGB CS 193 | /DeviceRGB cs 194 | q 195 | /E1 gs 196 | /X1 Do 197 | Q 198 | 199 | endstream 200 | endobj 201 | 202 | 7 0 obj 203 | 46 204 | endobj 205 | 206 | 8 0 obj 207 | << /Annots [] 208 | /Type /Page 209 | /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ] 210 | /Resources 5 0 R 211 | /Contents 6 0 R 212 | /Parent 9 0 R 213 | >> 214 | endobj 215 | 216 | 9 0 obj 217 | << /Kids [ 8 0 R ] 218 | /Count 1 219 | /Type /Pages 220 | >> 221 | endobj 222 | 223 | 10 0 obj 224 | << /Pages 9 0 R 225 | /Type /Catalog 226 | >> 227 | endobj 228 | 229 | xref 230 | 0 11 231 | 0000000000 65535 f 232 | 0000000010 00000 n 233 | 0000003141 00000 n 234 | 0000003164 00000 n 235 | 0000003644 00000 n 236 | 0000003666 00000 n 237 | 0000003964 00000 n 238 | 0000004066 00000 n 239 | 0000004087 00000 n 240 | 0000004260 00000 n 241 | 0000004334 00000 n 242 | trailer 243 | << /ID [ (some) (id) ] 244 | /Root 10 0 R 245 | /Size 11 246 | >> 247 | startxref 248 | 4394 249 | %%EOF -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/menu.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "menu.png", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/menu.imageset/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SimformSolutionsPvtLtd/SSSwiftUISideMenu/ff2e0908f4604076a755b16f67d9f24d0c7eb933/Example/SSSwiftUISideMenuDemo/Assets.xcassets/menu.imageset/menu.png -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/setting.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "ic_profile_setting.pdf", 5 | "idiom" : "universal" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Assets.xcassets/setting.imageset/ic_profile_setting.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << /Type /XObject 5 | /Length 2 0 R 6 | /Group << /Type /Group 7 | /S /Transparency 8 | >> 9 | /Subtype /Form 10 | /Resources << >> 11 | /BBox [ 0.000000 0.000000 22.000000 22.000000 ] 12 | >> 13 | stream 14 | /DeviceRGB CS 15 | /DeviceRGB cs 16 | q 17 | 1.000000 0.000000 -0.000000 1.000000 8.250000 6.250000 cm 18 | 0.258824 0.156863 0.121569 scn 19 | 4.500000 4.750000 m 20 | 4.500000 3.783502 3.716498 3.000000 2.750000 3.000000 c 21 | 2.750000 1.000000 l 22 | 4.821068 1.000000 6.500000 2.678932 6.500000 4.750000 c 23 | 4.500000 4.750000 l 24 | h 25 | 2.750000 3.000000 m 26 | 1.783502 3.000000 1.000000 3.783502 1.000000 4.750000 c 27 | -1.000000 4.750000 l 28 | -1.000000 2.678932 0.678932 1.000000 2.750000 1.000000 c 29 | 2.750000 3.000000 l 30 | h 31 | 1.000000 4.750000 m 32 | 1.000000 5.716498 1.783502 6.500000 2.750000 6.500000 c 33 | 2.750000 8.500000 l 34 | 0.678932 8.500000 -1.000000 6.821068 -1.000000 4.750000 c 35 | 1.000000 4.750000 l 36 | h 37 | 2.750000 6.500000 m 38 | 3.716498 6.500000 4.500000 5.716498 4.500000 4.750000 c 39 | 6.500000 4.750000 l 40 | 6.500000 6.821068 4.821068 8.500000 2.750000 8.500000 c 41 | 2.750000 6.500000 l 42 | h 43 | f 44 | n 45 | Q 46 | q 47 | 1.000000 0.000000 -0.000000 1.000000 0.916504 -1.082031 cm 48 | 0.258824 0.156863 0.121569 scn 49 | 17.169165 7.664350 m 50 | 16.454260 6.965042 l 51 | 16.462070 6.957232 l 52 | 17.169165 7.664350 l 53 | h 54 | 17.224167 7.609350 m 55 | 16.517071 6.902232 l 56 | 16.517454 6.901851 l 57 | 17.224167 7.609350 l 58 | h 59 | 17.224167 5.015184 m 60 | 16.517452 5.722685 l 61 | 16.516666 5.721897 l 62 | 17.224167 5.015184 l 63 | h 64 | 14.629998 5.015184 m 65 | 15.337499 5.721897 l 66 | 15.337106 5.722290 l 67 | 14.629998 5.015184 l 68 | h 69 | 14.574999 5.070183 m 70 | 15.282148 5.777332 l 71 | 15.274264 5.785046 l 72 | 14.574999 5.070183 l 73 | h 74 | 12.906666 5.372683 m 75 | 13.300620 4.453491 l 76 | 13.310431 4.457821 l 77 | 12.906666 5.372683 l 78 | h 79 | 11.990000 3.988516 m 80 | 10.990000 3.992504 l 81 | 10.990000 3.988516 l 82 | 11.990000 3.988516 l 83 | h 84 | 8.323333 3.915184 m 85 | 9.323333 3.915184 l 86 | 9.323333 3.922979 9.323242 3.930775 9.323059 3.938568 c 87 | 8.323333 3.915184 l 88 | h 89 | 7.333333 5.299351 m 90 | 6.929568 4.384487 l 91 | 6.948842 4.375980 6.968379 4.368086 6.988152 4.360813 c 92 | 7.333333 5.299351 l 93 | h 94 | 5.664999 4.996851 m 95 | 4.965692 5.711756 l 96 | 4.957884 5.703949 l 97 | 5.664999 4.996851 l 98 | h 99 | 5.610000 4.941849 m 100 | 4.902884 5.648947 l 101 | 4.902500 5.648561 l 102 | 5.610000 4.941849 l 103 | h 104 | 3.015833 4.941849 m 105 | 3.723334 5.648563 l 106 | 3.722547 5.649349 l 107 | 3.015833 4.941849 l 108 | h 109 | 2.478141 6.238933 m 110 | 3.478141 6.238933 l 111 | 2.478141 6.238933 l 112 | h 113 | 3.015833 7.536017 m 114 | 3.722547 6.828517 l 115 | 3.722937 6.828908 l 116 | 3.015833 7.536017 l 117 | h 118 | 3.070833 7.591017 m 119 | 3.777980 6.883864 l 120 | 3.785696 6.891751 l 121 | 3.070833 7.591017 l 122 | h 123 | 3.373333 9.259350 m 124 | 2.454140 8.865396 l 125 | 2.458470 8.855584 l 126 | 3.373333 9.259350 l 127 | h 128 | 1.989167 10.176016 m 129 | 1.993155 11.176016 l 130 | 1.989167 11.176016 l 131 | 1.989167 10.176016 l 132 | h 133 | 0.000000 12.009350 m 134 | -1.000000 12.009350 l 135 | 0.000000 12.009350 l 136 | h 137 | 1.833333 13.842683 m 138 | 1.833333 12.842683 l 139 | 1.833333 13.842683 l 140 | h 141 | 1.915833 13.842683 m 142 | 1.915833 12.842683 l 143 | 1.923629 12.842683 1.931424 12.842773 1.939218 12.842957 c 144 | 1.915833 13.842683 l 145 | h 146 | 3.300000 14.832683 m 147 | 2.385137 15.236448 l 148 | 2.376631 15.217175 2.368736 15.197636 2.361464 15.177864 c 149 | 3.300000 14.832683 l 150 | h 151 | 2.997500 16.501017 m 152 | 3.712406 17.200323 l 153 | 3.704607 17.208122 l 154 | 2.997500 16.501017 l 155 | h 156 | 2.942500 16.556015 m 157 | 3.649607 17.263123 l 158 | 3.649213 17.263515 l 159 | 2.942500 16.556015 l 160 | h 161 | 2.942500 19.150183 m 162 | 3.649214 18.442682 l 163 | 3.650000 18.443470 l 164 | 2.942500 19.150183 l 165 | h 166 | 5.536666 19.150183 m 167 | 4.829166 18.443470 l 168 | 4.829560 18.443075 l 169 | 5.536666 19.150183 l 170 | h 171 | 5.591666 19.095182 m 172 | 4.884517 18.388033 l 173 | 4.892401 18.380320 l 174 | 5.591666 19.095182 l 175 | h 176 | 7.260000 18.792683 m 177 | 7.260000 19.792683 l 178 | 7.120956 19.792683 6.983440 19.763687 6.856235 19.707546 c 179 | 7.260000 18.792683 l 180 | h 181 | 7.333333 18.792683 m 182 | 7.333333 17.792683 l 183 | 7.468764 17.792683 7.602784 17.820192 7.727264 17.873543 c 184 | 7.333333 18.792683 l 185 | h 186 | 8.250000 20.176849 m 187 | 9.250000 20.172861 l 188 | 9.250000 20.176849 l 189 | 8.250000 20.176849 l 190 | h 191 | 10.083333 22.166016 m 192 | 10.083333 23.166016 l 193 | 10.083333 22.166016 l 194 | h 195 | 11.916666 20.250183 m 196 | 10.916658 20.250183 l 197 | 10.916674 20.246195 l 198 | 11.916666 20.250183 l 199 | h 200 | 12.833333 18.866016 m 201 | 13.237122 19.780931 l 202 | 13.227264 19.785156 l 203 | 12.833333 18.866016 l 204 | h 205 | 14.501666 19.168516 m 206 | 15.200974 18.453609 l 207 | 15.208776 18.461412 l 208 | 14.501666 19.168516 l 209 | h 210 | 14.556665 19.223516 m 211 | 15.263775 18.516411 l 212 | 15.264165 18.516802 l 213 | 14.556665 19.223516 l 214 | h 215 | 15.853749 19.761208 m 216 | 15.853749 18.761208 l 217 | 15.853749 19.761208 l 218 | h 219 | 17.150831 19.223516 m 220 | 16.443331 18.516802 l 221 | 16.444118 18.516016 l 222 | 17.150831 19.223516 l 223 | h 224 | 17.150831 16.629349 m 225 | 16.444118 17.336849 l 226 | 16.443722 17.336452 l 227 | 17.150831 16.629349 l 228 | h 229 | 17.095833 16.574348 m 230 | 16.388680 17.281496 l 231 | 16.380970 17.273615 l 232 | 17.095833 16.574348 l 233 | h 234 | 16.793333 14.906015 m 235 | 17.793333 14.906015 l 236 | 17.793333 15.045059 17.764336 15.182575 17.708195 15.309781 c 237 | 16.793333 14.906015 l 238 | h 239 | 16.793333 14.832683 m 240 | 15.793332 14.832683 l 241 | 15.793332 14.697251 15.820842 14.563231 15.874192 14.438751 c 242 | 16.793333 14.832683 l 243 | h 244 | 18.177500 13.916016 m 245 | 18.173512 12.916016 l 246 | 18.177500 12.916016 l 247 | 18.177500 13.916016 l 248 | h 249 | 18.250832 10.249350 m 250 | 18.250832 11.249357 l 251 | 18.246843 11.249342 l 252 | 18.250832 10.249350 l 253 | h 254 | 15.951803 9.736448 m 255 | 15.749104 9.277168 15.688641 8.767698 15.778206 8.273734 c 256 | 17.746119 8.630553 l 257 | 17.727848 8.731313 17.740183 8.835235 17.781528 8.928918 c 258 | 15.951803 9.736448 l 259 | h 260 | 15.778206 8.273734 m 261 | 15.867770 7.779770 16.103258 7.323960 16.454304 6.965085 c 262 | 17.884027 8.363615 l 263 | 17.812422 8.436817 17.764387 8.529793 17.746119 8.630553 c 264 | 15.778206 8.273734 l 265 | h 266 | 16.462070 6.957232 m 267 | 16.517071 6.902232 l 268 | 17.931263 8.316468 l 269 | 17.876261 8.371468 l 270 | 16.462070 6.957232 l 271 | h 272 | 16.517454 6.901851 m 273 | 16.594931 6.824459 16.656397 6.732552 16.698336 6.631383 c 274 | 18.545881 7.397264 l 275 | 18.403297 7.741221 18.194317 8.053707 17.930880 8.316851 c 276 | 16.517454 6.901851 l 277 | h 278 | 16.698336 6.631383 m 279 | 16.740273 6.530217 16.761858 6.421778 16.761858 6.312266 c 280 | 18.761858 6.312266 l 281 | 18.761858 6.684611 18.688467 7.053304 18.545881 7.397264 c 282 | 16.698336 6.631383 l 283 | h 284 | 16.761858 6.312266 m 285 | 16.761858 6.202755 16.740273 6.094316 16.698336 5.993149 c 286 | 18.545881 5.227268 l 287 | 18.688467 5.571228 18.761858 5.939920 18.761858 6.312266 c 288 | 16.761858 6.312266 l 289 | h 290 | 16.698336 5.993149 m 291 | 16.656399 5.891983 16.594933 5.800077 16.517454 5.722683 c 292 | 17.930880 4.307684 l 293 | 18.194315 4.570826 18.403297 4.883308 18.545881 5.227268 c 294 | 16.698336 5.993149 l 295 | h 296 | 16.516666 5.721897 m 297 | 16.439272 5.644417 16.347364 5.582951 16.246199 5.541014 c 298 | 17.012079 3.693468 l 299 | 17.356041 3.836052 17.668526 4.045038 17.931667 4.308470 c 300 | 16.516666 5.721897 l 301 | h 302 | 16.246199 5.541014 m 303 | 16.145033 5.499077 16.036594 5.477491 15.927083 5.477491 c 304 | 15.927083 3.477491 l 305 | 16.299427 3.477491 16.668119 3.550882 17.012079 3.693468 c 306 | 16.246199 5.541014 l 307 | h 308 | 15.927083 5.477491 m 309 | 15.817571 5.477491 15.709132 5.499077 15.607965 5.541014 c 310 | 14.842085 3.693468 l 311 | 15.186045 3.550882 15.554737 3.477491 15.927083 3.477491 c 312 | 15.927083 5.477491 l 313 | h 314 | 15.607965 5.541014 m 315 | 15.506801 5.582951 15.414893 5.644417 15.337499 5.721897 c 316 | 13.922499 4.308470 l 317 | 14.185638 4.045038 14.498124 3.836052 14.842085 3.693468 c 318 | 15.607965 5.541014 l 319 | h 320 | 15.337106 5.722290 m 321 | 15.282105 5.777290 l 322 | 13.867892 4.363077 l 323 | 13.922892 4.308077 l 324 | 15.337106 5.722290 l 325 | h 326 | 15.274264 5.785046 m 327 | 14.915388 6.136091 14.459579 6.371578 13.965615 6.461143 c 328 | 13.608796 4.493231 l 329 | 13.709556 4.474960 13.802531 4.426926 13.875734 4.355320 c 330 | 15.274264 5.785046 l 331 | h 332 | 13.965615 6.461143 m 333 | 13.471651 6.550709 12.962180 6.490245 12.502901 6.287546 c 334 | 13.310431 4.457821 l 335 | 13.404115 4.499166 13.508036 4.511501 13.608796 4.493231 c 336 | 13.965615 6.461143 l 337 | h 338 | 12.512734 6.291823 m 339 | 12.062357 6.098797 11.678253 5.778290 11.407702 5.369759 c 340 | 13.075193 4.265459 l 341 | 13.130382 4.348795 13.208732 4.414171 13.300597 4.453543 c 342 | 12.512734 6.291823 l 343 | h 344 | 11.407702 5.369759 m 345 | 11.137152 4.961226 10.991961 4.482498 10.990007 3.992504 c 346 | 12.989991 3.984528 l 347 | 12.990390 4.084476 13.020005 4.182127 13.075193 4.265459 c 348 | 11.407702 5.369759 l 349 | h 350 | 10.990000 3.988516 m 351 | 10.990000 3.832684 l 352 | 12.990000 3.832684 l 353 | 12.990000 3.988516 l 354 | 10.990000 3.988516 l 355 | h 356 | 10.990000 3.832684 m 357 | 10.990000 3.611670 10.902203 3.399708 10.745921 3.243427 c 358 | 12.160135 1.829214 l 359 | 12.691487 2.360567 12.990000 3.081236 12.990000 3.832684 c 360 | 10.990000 3.832684 l 361 | h 362 | 10.745921 3.243427 m 363 | 10.589641 3.087147 10.377679 2.999350 10.156666 2.999350 c 364 | 10.156666 0.999350 l 365 | 10.908113 0.999350 11.628782 1.297861 12.160135 1.829214 c 366 | 10.745921 3.243427 l 367 | h 368 | 10.156666 2.999350 m 369 | 9.935653 2.999350 9.723692 3.087147 9.567410 3.243427 c 370 | 8.153197 1.829214 l 371 | 8.684550 1.297861 9.405219 0.999350 10.156666 0.999350 c 372 | 10.156666 2.999350 l 373 | h 374 | 9.567410 3.243427 m 375 | 9.411130 3.399708 9.323333 3.611670 9.323333 3.832684 c 376 | 7.323333 3.832684 l 377 | 7.323333 3.081236 7.621845 2.360567 8.153197 1.829214 c 378 | 9.567410 3.243427 l 379 | h 380 | 9.323333 3.832684 m 381 | 9.323333 3.915184 l 382 | 7.323333 3.915184 l 383 | 7.323333 3.832684 l 384 | 9.323333 3.832684 l 385 | h 386 | 9.323059 3.938568 m 387 | 9.311270 4.442583 9.148127 4.931393 8.854837 5.341455 c 388 | 7.228098 4.177959 l 389 | 7.287923 4.094315 7.321201 3.994608 7.323606 3.891798 c 390 | 9.323059 3.938568 l 391 | h 392 | 8.854837 5.341455 m 393 | 8.561548 5.751516 8.151680 6.063862 7.678514 6.237886 c 394 | 6.988152 4.360813 l 395 | 7.084668 4.325317 7.168273 4.261604 7.228098 4.177959 c 396 | 8.854837 5.341455 l 397 | h 398 | 7.737098 6.214212 m 399 | 7.277819 6.416911 6.768348 6.477375 6.274384 6.387810 c 400 | 6.631203 4.419897 l 401 | 6.731963 4.438168 6.835885 4.425833 6.929568 4.384487 c 402 | 7.737098 6.214212 l 403 | h 404 | 6.274384 6.387810 m 405 | 5.780420 6.298245 5.324611 6.062759 4.965734 5.711712 c 406 | 6.364264 4.281988 l 407 | 6.437467 4.353592 6.530443 4.401628 6.631203 4.419897 c 408 | 6.274384 6.387810 l 409 | h 410 | 4.957884 5.703949 m 411 | 4.902884 5.648947 l 412 | 6.317115 4.234751 l 413 | 6.372115 4.289751 l 414 | 4.957884 5.703949 l 415 | h 416 | 4.902500 5.648561 m 417 | 4.825107 5.571083 4.733201 5.509619 4.632033 5.467680 c 418 | 5.397914 3.620134 l 419 | 5.741873 3.762718 6.054358 3.971701 6.317500 4.235136 c 420 | 4.902500 5.648561 l 421 | h 422 | 4.632033 5.467680 m 423 | 4.530867 5.425743 4.422428 5.404158 4.312916 5.404158 c 424 | 4.312916 3.404158 l 425 | 4.685262 3.404158 5.053954 3.477549 5.397914 3.620134 c 426 | 4.632033 5.467680 l 427 | h 428 | 4.312916 5.404158 m 429 | 4.203405 5.404158 4.094966 5.425743 3.993800 5.467680 c 430 | 3.227919 3.620134 l 431 | 3.571879 3.477549 3.940571 3.404158 4.312916 3.404158 c 432 | 4.312916 5.404158 l 433 | h 434 | 3.993800 5.467680 m 435 | 3.892632 5.509619 3.800725 5.571083 3.723333 5.648561 c 436 | 2.308333 4.235136 l 437 | 2.571476 3.971701 2.883960 3.762718 3.227919 3.620134 c 438 | 3.993800 5.467680 l 439 | h 440 | 3.722547 5.649349 m 441 | 3.645067 5.726742 3.583601 5.818649 3.541663 5.919817 c 442 | 1.694117 5.153936 l 443 | 1.836702 4.809975 2.045686 4.497490 2.309120 4.234348 c 444 | 3.722547 5.649349 l 445 | h 446 | 3.541663 5.919817 m 447 | 3.499727 6.020981 3.478141 6.129419 3.478141 6.238933 c 448 | 1.478141 6.238933 l 449 | 1.478141 5.866589 1.551532 5.497896 1.694117 5.153936 c 450 | 3.541663 5.919817 l 451 | h 452 | 3.478141 6.238933 m 453 | 3.478141 6.348446 3.499727 6.456884 3.541663 6.558050 c 454 | 1.694117 7.323931 l 455 | 1.551532 6.979969 1.478141 6.611277 1.478141 6.238933 c 456 | 3.478141 6.238933 l 457 | h 458 | 3.541663 6.558050 m 459 | 3.583601 6.659216 3.645067 6.751124 3.722547 6.828517 c 460 | 2.309120 8.243517 l 461 | 2.045686 7.980375 1.836702 7.667891 1.694117 7.323931 c 462 | 3.541663 6.558050 l 463 | h 464 | 3.722937 6.828908 m 465 | 3.777937 6.883907 l 466 | 2.363729 8.298126 l 467 | 2.308729 8.243127 l 468 | 3.722937 6.828908 l 469 | h 470 | 3.785696 6.891751 m 471 | 4.136741 7.250627 4.372229 7.706435 4.461793 8.200400 c 472 | 2.493881 8.557220 l 473 | 2.475611 8.456461 2.427577 8.363484 2.355971 8.290281 c 474 | 3.785696 6.891751 l 475 | h 476 | 4.461793 8.200400 m 477 | 4.551359 8.694366 4.490894 9.203836 4.288196 9.663115 c 478 | 2.458470 8.855584 l 479 | 2.499817 8.761901 2.512151 8.657979 2.493881 8.557220 c 480 | 4.461793 8.200400 l 481 | h 482 | 4.292473 9.653281 m 483 | 4.099448 10.103657 3.778941 10.487761 3.370409 10.758313 c 484 | 2.266110 9.090822 l 485 | 2.349443 9.035635 2.414820 8.957286 2.454193 8.865418 c 486 | 4.292473 9.653281 l 487 | h 488 | 3.370409 10.758313 m 489 | 2.961877 11.028865 2.483149 11.174054 1.993155 11.176008 c 490 | 1.985178 9.176024 l 491 | 2.085127 9.175626 2.182778 9.146010 2.266110 9.090822 c 492 | 3.370409 10.758313 l 493 | h 494 | 1.989167 11.176016 m 495 | 1.833333 11.176016 l 496 | 1.833333 9.176016 l 497 | 1.989167 9.176016 l 498 | 1.989167 11.176016 l 499 | h 500 | 1.833333 11.176016 m 501 | 1.612320 11.176016 1.400358 11.263814 1.244078 11.420094 c 502 | -0.170136 10.005880 l 503 | 0.361217 9.474528 1.081886 9.176016 1.833333 9.176016 c 504 | 1.833333 11.176016 l 505 | h 506 | 1.244078 11.420094 m 507 | 1.087797 11.576375 1.000000 11.788336 1.000000 12.009350 c 508 | -1.000000 12.009350 l 509 | -1.000000 11.257902 -0.701489 10.537233 -0.170136 10.005880 c 510 | 1.244078 11.420094 l 511 | h 512 | 1.000000 12.009350 m 513 | 1.000000 12.230363 1.087797 12.442325 1.244078 12.598605 c 514 | -0.170136 14.012818 l 515 | -0.701489 13.481465 -1.000000 12.760797 -1.000000 12.009350 c 516 | 1.000000 12.009350 l 517 | h 518 | 1.244078 12.598605 m 519 | 1.400358 12.754886 1.612320 12.842683 1.833333 12.842683 c 520 | 1.833333 14.842683 l 521 | 1.081886 14.842683 0.361217 14.544170 -0.170136 14.012818 c 522 | 1.244078 12.598605 l 523 | h 524 | 1.833333 12.842683 m 525 | 1.915833 12.842683 l 526 | 1.915833 14.842683 l 527 | 1.833333 14.842683 l 528 | 1.833333 12.842683 l 529 | h 530 | 1.939218 12.842957 m 531 | 2.443232 12.854746 2.932043 13.017889 3.342105 13.311178 c 532 | 2.178610 14.937918 l 533 | 2.094965 14.878092 1.995257 14.844814 1.892449 14.842409 c 534 | 1.939218 12.842957 l 535 | h 536 | 3.342105 13.311178 m 537 | 3.752167 13.604468 4.064512 14.014337 4.238536 14.487501 c 538 | 2.361464 15.177864 l 539 | 2.325966 15.081347 2.262254 14.997742 2.178610 14.937918 c 540 | 3.342105 13.311178 l 541 | h 542 | 4.214862 14.428917 m 543 | 4.417561 14.888196 4.478025 15.397667 4.388460 15.891632 c 544 | 2.420548 15.534813 l 545 | 2.438817 15.434053 2.426484 15.330132 2.385137 15.236448 c 546 | 4.214862 14.428917 l 547 | h 548 | 4.388460 15.891632 m 549 | 4.298895 16.385597 4.063407 16.841406 3.712363 17.200281 c 550 | 2.282637 15.801751 l 551 | 2.354243 15.728548 2.402278 15.635572 2.420548 15.534813 c 552 | 4.388460 15.891632 l 553 | h 554 | 3.704607 17.208122 m 555 | 3.649607 17.263123 l 556 | 2.235393 15.848909 l 557 | 2.290393 15.793909 l 558 | 3.704607 17.208122 l 559 | h 560 | 3.649213 17.263515 m 561 | 3.571733 17.340910 3.510267 17.432817 3.468330 17.533981 c 562 | 1.620784 16.768101 l 563 | 1.763369 16.424141 1.972353 16.111656 2.235786 15.848516 c 564 | 3.649213 17.263515 l 565 | h 566 | 3.468330 17.533981 m 567 | 3.426393 17.635147 3.404808 17.743587 3.404808 17.853100 c 568 | 1.404808 17.853100 l 569 | 1.404808 17.480755 1.478199 17.112062 1.620784 16.768101 c 570 | 3.468330 17.533981 l 571 | h 572 | 3.404808 17.853100 m 573 | 3.404808 17.962612 3.426393 18.071051 3.468330 18.172216 c 574 | 1.620784 18.938097 l 575 | 1.478199 18.594135 1.404808 18.225443 1.404808 17.853100 c 576 | 3.404808 17.853100 l 577 | h 578 | 3.468330 18.172216 m 579 | 3.510267 18.273380 3.571733 18.365288 3.649213 18.442682 c 580 | 2.235786 19.857683 l 581 | 1.972353 19.594542 1.763369 19.282059 1.620784 18.938097 c 582 | 3.468330 18.172216 l 583 | h 584 | 3.650000 18.443470 m 585 | 3.727394 18.520950 3.819301 18.582415 3.920466 18.624352 c 586 | 3.154586 20.471899 l 587 | 2.810625 20.329313 2.498140 20.120329 2.235000 19.856895 c 588 | 3.650000 18.443470 l 589 | h 590 | 3.920466 18.624352 m 591 | 4.021632 18.666288 4.130070 18.687874 4.239583 18.687874 c 592 | 4.239583 20.687874 l 593 | 3.867239 20.687874 3.498547 20.614483 3.154586 20.471899 c 594 | 3.920466 18.624352 l 595 | h 596 | 4.239583 18.687874 m 597 | 4.349096 18.687874 4.457535 18.666288 4.558700 18.624352 c 598 | 5.324581 20.471899 l 599 | 4.980619 20.614483 4.611927 20.687874 4.239583 20.687874 c 600 | 4.239583 18.687874 l 601 | h 602 | 4.558700 18.624352 m 603 | 4.659865 18.582415 4.751772 18.520950 4.829166 18.443470 c 604 | 6.244166 19.856895 l 605 | 5.981026 20.120329 5.668542 20.329313 5.324581 20.471899 c 606 | 4.558700 18.624352 l 607 | h 608 | 4.829560 18.443075 m 609 | 4.884560 18.388077 l 610 | 6.298773 19.802290 l 611 | 6.243773 19.857288 l 612 | 4.829560 18.443075 l 613 | h 614 | 4.892401 18.380320 m 615 | 5.251276 18.029274 5.707085 17.793787 6.201050 17.704222 c 616 | 6.557869 19.672134 l 617 | 6.457110 19.690405 6.364135 19.738440 6.290931 19.810045 c 618 | 4.892401 18.380320 l 619 | h 620 | 6.201050 17.704222 m 621 | 6.695015 17.614656 7.204486 17.675121 7.663765 17.877819 c 622 | 6.856235 19.707546 l 623 | 6.762551 19.666199 6.658629 19.653866 6.557869 19.672134 c 624 | 6.201050 17.704222 l 625 | h 626 | 7.260000 17.792683 m 627 | 7.333333 17.792683 l 628 | 7.333333 19.792683 l 629 | 7.260000 19.792683 l 630 | 7.260000 17.792683 l 631 | h 632 | 7.727264 17.873543 m 633 | 8.177641 18.066568 8.561746 18.387074 8.832296 18.795607 c 634 | 7.164806 19.899906 l 635 | 7.109619 19.816572 7.031269 19.751196 6.939402 19.711823 c 636 | 7.727264 17.873543 l 637 | h 638 | 8.832296 18.795607 m 639 | 9.102848 19.204140 9.248037 19.682867 9.249991 20.172861 c 640 | 7.250008 20.180838 l 641 | 7.249609 20.080889 7.219994 19.983238 7.164806 19.899906 c 642 | 8.832296 18.795607 l 643 | h 644 | 9.250000 20.176849 m 645 | 9.250000 20.332682 l 646 | 7.250000 20.332682 l 647 | 7.250000 20.176849 l 648 | 9.250000 20.176849 l 649 | h 650 | 9.250000 20.332682 m 651 | 9.250000 20.553696 9.337797 20.765657 9.494078 20.921938 c 652 | 8.079865 22.336151 l 653 | 7.548512 21.804798 7.250000 21.084129 7.250000 20.332682 c 654 | 9.250000 20.332682 l 655 | h 656 | 9.494078 20.921938 m 657 | 9.650358 21.078218 9.862319 21.166016 10.083333 21.166016 c 658 | 10.083333 23.166016 l 659 | 9.331886 23.166016 8.611217 22.867504 8.079865 22.336151 c 660 | 9.494078 20.921938 l 661 | h 662 | 10.083333 21.166016 m 663 | 10.304346 21.166016 10.516308 21.078218 10.672588 20.921938 c 664 | 12.086802 22.336151 l 665 | 11.555449 22.867504 10.834780 23.166016 10.083333 23.166016 c 666 | 10.083333 21.166016 l 667 | h 668 | 10.672588 20.921938 m 669 | 10.828869 20.765657 10.916666 20.553696 10.916666 20.332682 c 670 | 12.916666 20.332682 l 671 | 12.916666 21.084129 12.618155 21.804798 12.086802 22.336151 c 672 | 10.672588 20.921938 l 673 | h 674 | 10.916666 20.332682 m 675 | 10.916666 20.250183 l 676 | 12.916666 20.250183 l 677 | 12.916666 20.332682 l 678 | 10.916666 20.332682 l 679 | h 680 | 10.916674 20.246195 m 681 | 10.918629 19.756201 11.063818 19.277472 11.334369 18.868940 c 682 | 13.001860 19.973238 l 683 | 12.946672 20.056570 12.917057 20.154222 12.916658 20.254171 c 684 | 10.916674 20.246195 l 685 | h 686 | 11.334369 18.868940 m 687 | 11.604920 18.460407 11.989025 18.139900 12.439402 17.946877 c 688 | 13.227264 19.785156 l 689 | 13.135396 19.824530 13.057047 19.889906 13.001860 19.973238 c 690 | 11.334369 18.868940 l 691 | h 692 | 12.429567 17.951153 m 693 | 12.888846 17.748455 13.398316 17.687990 13.892282 17.777555 c 694 | 13.535462 19.745468 l 695 | 13.434704 19.727198 13.330782 19.739532 13.237098 19.780878 c 696 | 12.429567 17.951153 l 697 | h 698 | 13.892282 17.777555 m 699 | 14.386247 17.867121 14.842055 18.102608 15.200931 18.453653 c 700 | 13.802401 19.883379 l 701 | 13.729198 19.811771 13.636222 19.763737 13.535462 19.745468 c 702 | 13.892282 17.777555 l 703 | h 704 | 15.208776 18.461412 m 705 | 15.263775 18.516411 l 706 | 13.849556 19.930620 l 707 | 13.794557 19.875620 l 708 | 15.208776 18.461412 l 709 | h 710 | 15.264165 18.516802 m 711 | 15.341558 18.594282 15.433466 18.655748 15.534633 18.697685 c 712 | 14.768752 20.545231 l 713 | 14.424792 20.402647 14.112307 20.193663 13.849165 19.930229 c 714 | 15.264165 18.516802 l 715 | h 716 | 15.534633 18.697685 m 717 | 15.635798 18.739622 15.744237 18.761208 15.853749 18.761208 c 718 | 15.853749 20.761208 l 719 | 15.481405 20.761208 15.112713 20.687817 14.768752 20.545231 c 720 | 15.534633 18.697685 l 721 | h 722 | 15.853749 18.761208 m 723 | 15.963263 18.761208 16.071701 18.739622 16.172867 18.697685 c 724 | 16.938747 20.545231 l 725 | 16.594786 20.687817 16.226093 20.761208 15.853749 20.761208 c 726 | 15.853749 18.761208 l 727 | h 728 | 16.172867 18.697685 m 729 | 16.274031 18.655748 16.365936 18.594284 16.443333 18.516802 c 730 | 17.858332 19.930229 l 731 | 17.595192 20.193661 17.282709 20.402645 16.938747 20.545231 c 732 | 16.172867 18.697685 l 733 | h 734 | 16.444118 18.516016 m 735 | 16.521601 18.438622 16.583065 18.346714 16.625002 18.245548 c 736 | 18.472548 19.011431 l 737 | 18.329962 19.355392 18.120977 19.667877 17.857546 19.931015 c 738 | 16.444118 18.516016 l 739 | h 740 | 16.625002 18.245548 m 741 | 16.666939 18.144382 16.688524 18.035944 16.688524 17.926434 c 742 | 18.688524 17.926434 l 743 | 18.688524 18.298779 18.615133 18.667469 18.472548 19.011431 c 744 | 16.625002 18.245548 l 745 | h 746 | 16.688524 17.926434 m 747 | 16.688524 17.816921 16.666939 17.708481 16.625002 17.607315 c 748 | 18.472548 16.841434 l 749 | 18.615133 17.185394 18.688524 17.554087 18.688524 17.926434 c 750 | 16.688524 17.926434 l 751 | h 752 | 16.625002 17.607315 m 753 | 16.583065 17.506153 16.521601 17.414246 16.444118 17.336849 c 754 | 17.857546 15.921849 l 755 | 18.120977 16.184988 18.329962 16.497473 18.472548 16.841434 c 756 | 16.625002 17.607315 l 757 | h 758 | 16.443722 17.336452 m 759 | 16.388723 17.281452 l 760 | 17.802942 15.867245 l 761 | 17.857941 15.922245 l 762 | 16.443722 17.336452 l 763 | h 764 | 16.380970 17.273615 m 765 | 16.029924 16.914738 15.794437 16.458929 15.704872 15.964966 c 766 | 17.672785 15.608147 l 767 | 17.691055 15.708906 17.739090 15.801882 17.810696 15.875084 c 768 | 16.380970 17.273615 l 769 | h 770 | 15.704872 15.964966 m 771 | 15.615307 15.471001 15.675771 14.961531 15.878469 14.502251 c 772 | 17.708195 15.309781 l 773 | 17.666849 15.403463 17.654514 15.507385 17.672785 15.608147 c 774 | 15.704872 15.964966 l 775 | h 776 | 15.793332 14.906015 m 777 | 15.793332 14.832683 l 778 | 17.793333 14.832683 l 779 | 17.793333 14.906015 l 780 | 15.793332 14.906015 l 781 | h 782 | 15.874192 14.438751 m 783 | 16.067219 13.988374 16.387726 13.604269 16.796257 13.333719 c 784 | 17.900557 15.001209 l 785 | 17.817221 15.056398 17.751844 15.134748 17.712473 15.226614 c 786 | 15.874192 14.438751 l 787 | h 788 | 16.796257 13.333719 m 789 | 17.204790 13.063168 17.683517 12.917978 18.173512 12.916024 c 790 | 18.181488 14.916008 l 791 | 18.081539 14.916407 17.983889 14.946022 17.900557 15.001209 c 792 | 16.796257 13.333719 l 793 | h 794 | 18.177500 12.916016 m 795 | 18.333332 12.916016 l 796 | 18.333332 14.916016 l 797 | 18.177500 14.916016 l 798 | 18.177500 12.916016 l 799 | h 800 | 18.333332 12.916016 m 801 | 18.554346 12.916016 18.766308 12.828218 18.922588 12.671938 c 802 | 20.336802 14.086151 l 803 | 19.805449 14.617504 19.084780 14.916016 18.333332 14.916016 c 804 | 18.333332 12.916016 l 805 | h 806 | 18.922588 12.671938 m 807 | 19.078869 12.515657 19.166666 12.303696 19.166666 12.082683 c 808 | 21.166666 12.082683 l 809 | 21.166666 12.834130 20.868155 13.554799 20.336802 14.086151 c 810 | 18.922588 12.671938 l 811 | h 812 | 19.166666 12.082683 m 813 | 19.166666 11.861670 19.078869 11.649709 18.922588 11.493427 c 814 | 20.336802 10.079214 l 815 | 20.868155 10.610566 21.166666 11.331235 21.166666 12.082683 c 816 | 19.166666 12.082683 l 817 | h 818 | 18.922588 11.493427 m 819 | 18.766308 11.337147 18.554346 11.249350 18.333332 11.249350 c 820 | 18.333332 9.249350 l 821 | 19.084780 9.249350 19.805449 9.547861 20.336802 10.079214 c 822 | 18.922588 11.493427 l 823 | h 824 | 18.333332 11.249350 m 825 | 18.250832 11.249350 l 826 | 18.250832 9.249350 l 827 | 18.333332 9.249350 l 828 | 18.333332 11.249350 l 829 | h 830 | 18.246843 11.249342 m 831 | 17.756849 11.247387 17.278122 11.102198 16.869591 10.831647 c 832 | 17.973888 9.164156 l 833 | 18.057222 9.219343 18.154873 9.248959 18.254820 9.249357 c 834 | 18.246843 11.249342 l 835 | h 836 | 16.869591 10.831647 m 837 | 16.461060 10.561096 16.140553 10.176991 15.947526 9.726614 c 838 | 17.785805 8.938751 l 839 | 17.825178 9.030618 17.890554 9.108968 17.973888 9.164156 c 840 | 16.869591 10.831647 l 841 | h 842 | f 843 | n 844 | Q 845 | 846 | endstream 847 | endobj 848 | 849 | 2 0 obj 850 | 21389 851 | endobj 852 | 853 | 3 0 obj 854 | << /Type /XObject 855 | /Length 4 0 R 856 | /Group << /Type /Group 857 | /S /Transparency 858 | >> 859 | /Subtype /Form 860 | /Resources << >> 861 | /BBox [ 0.000000 0.000000 22.000000 22.000000 ] 862 | >> 863 | stream 864 | /DeviceRGB CS 865 | /DeviceRGB cs 866 | q 867 | 1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm 868 | 0.000000 0.000000 0.000000 scn 869 | 0.000000 22.000000 m 870 | 22.000000 22.000000 l 871 | 22.000000 0.000000 l 872 | 0.000000 0.000000 l 873 | 0.000000 22.000000 l 874 | h 875 | f 876 | n 877 | Q 878 | 879 | endstream 880 | endobj 881 | 882 | 4 0 obj 883 | 232 884 | endobj 885 | 886 | 5 0 obj 887 | << /XObject << /X1 1 0 R >> 888 | /ExtGState << /E1 << /SMask << /Type /Mask 889 | /G 3 0 R 890 | /S /Alpha 891 | >> 892 | /Type /ExtGState 893 | >> >> 894 | >> 895 | endobj 896 | 897 | 6 0 obj 898 | << /Length 7 0 R >> 899 | stream 900 | /DeviceRGB CS 901 | /DeviceRGB cs 902 | q 903 | /E1 gs 904 | /X1 Do 905 | Q 906 | 907 | endstream 908 | endobj 909 | 910 | 7 0 obj 911 | 46 912 | endobj 913 | 914 | 8 0 obj 915 | << /Annots [] 916 | /Type /Page 917 | /MediaBox [ 0.000000 0.000000 22.000000 22.000000 ] 918 | /Resources 5 0 R 919 | /Contents 6 0 R 920 | /Parent 9 0 R 921 | >> 922 | endobj 923 | 924 | 9 0 obj 925 | << /Kids [ 8 0 R ] 926 | /Count 1 927 | /Type /Pages 928 | >> 929 | endobj 930 | 931 | 10 0 obj 932 | << /Pages 9 0 R 933 | /Type /Catalog 934 | >> 935 | endobj 936 | 937 | xref 938 | 0 11 939 | 0000000000 65535 f 940 | 0000000010 00000 n 941 | 0000021647 00000 n 942 | 0000021671 00000 n 943 | 0000022151 00000 n 944 | 0000022173 00000 n 945 | 0000022471 00000 n 946 | 0000022573 00000 n 947 | 0000022594 00000 n 948 | 0000022767 00000 n 949 | 0000022841 00000 n 950 | trailer 951 | << /ID [ (some) (id) ] 952 | /Root 10 0 R 953 | /Size 11 954 | >> 955 | startxref 956 | 22901 957 | %%EOF -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Container Views/Home.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Home.swift 3 | // SSSwiftUISideMenuDemo 4 | // 5 | // Created by Parth Dumaswala on 31/10/23. 6 | // 7 | 8 | import SwiftUI 9 | import SSSwiftUISideMenu 10 | 11 | enum AnimationType: String, CaseIterable { 12 | case defaultType = "Default" 13 | case bouncy = "Bouncy" 14 | case spring = "Spring" 15 | case easeIn = "EaseIn" 16 | case easeOut = "EaseOut" 17 | case easeInOut = "EaseInOut" 18 | case linear = "Linear" 19 | } 20 | 21 | struct Home: View { 22 | 23 | // MARK: - Properties 24 | 25 | // Binding to control the presentation of the side menu 26 | @Binding var presentSideMenu: Bool 27 | 28 | // Binding to customise the sidemenu 29 | @Binding var objMenuConfig: SSMenuConfig 30 | 31 | // State variables for various configuration options 32 | @State private var menuDirection = 0 33 | @State private var tapToClose = true 34 | @State private var swipeToClose = true 35 | @State private var titleColor: Color = .black 36 | @State private var iconTintColor: Color = .pink 37 | @State private var backgroundColor: Color = .white 38 | @State private var selectedTitleColor: Color = .black 39 | @State private var selectedAnimation: Animation = .default 40 | @State private var animationType: AnimationType = .defaultType 41 | 42 | // Computed property to update viewModel.menuConfig 43 | var updatedMenuConfig: SSMenuConfig { 44 | SSMenuConfig( 45 | iconTintColor: iconTintColor, 46 | titleColor: titleColor, 47 | selectedTitleColor: selectedTitleColor, 48 | backgroundColor: backgroundColor, 49 | animationType: selectedAnimation, 50 | menuDirection: menuDirection == 0 ? .left : .right, 51 | swipeToClose: swipeToClose, 52 | tapToClose: tapToClose 53 | ) 54 | } 55 | 56 | // MARK: - Body 57 | 58 | var body: some View { 59 | NavigationView { 60 | VStack { 61 | HStack { 62 | // Button to toggle the side menu 63 | Button { 64 | objMenuConfig = updatedMenuConfig 65 | presentSideMenu.toggle() 66 | } label: { 67 | Image("menu") 68 | .resizable() 69 | .frame(width: 32, height: 32) 70 | } 71 | Spacer() 72 | } 73 | // Form for configuring menu settings 74 | Form { 75 | Section(header: Text("Menu Settings")) { 76 | // Picker for menu direction 77 | Picker("Menu direction", selection: $menuDirection) { 78 | Text("Left").tag(0) 79 | Text("Right").tag(1) 80 | } 81 | .pickerStyle(.menu) 82 | 83 | // Toggle for tap to close menu 84 | Toggle("Tap to close menu", isOn: $tapToClose) 85 | 86 | // Toggle for swipe to close menu 87 | Toggle("Swipe to close menu", isOn: $swipeToClose) 88 | } 89 | 90 | Section(header: Text("Animation Settings")) { 91 | // Picker for animation type 92 | Picker("Animation", selection: $animationType) { 93 | ForEach(AnimationType.allCases, id: \.self) { type in 94 | Text(type.rawValue).tag(type) 95 | } 96 | } 97 | .pickerStyle(.menu) 98 | .onChange(of: animationType) { 99 | switch animationType { 100 | case .defaultType: 101 | selectedAnimation = .default 102 | case .bouncy: 103 | selectedAnimation = .bouncy 104 | case .spring: 105 | selectedAnimation = .spring 106 | case .easeIn: 107 | selectedAnimation = .easeIn 108 | case .easeOut: 109 | selectedAnimation = .easeOut 110 | case .easeInOut: 111 | selectedAnimation = .easeInOut 112 | case .linear: 113 | selectedAnimation = .linear 114 | } 115 | } 116 | } 117 | 118 | Section(header: Text("UI Customisation")) { 119 | // Color pickers for customizing UI colors 120 | ColorPicker("Title color", selection: $titleColor) 121 | ColorPicker("Selected title color", selection: $selectedTitleColor) 122 | ColorPicker("Background color", selection: $backgroundColor) 123 | ColorPicker("Icon tint color", selection: $iconTintColor) 124 | } 125 | } 126 | .padding(.horizontal, -20) 127 | .listRowInsets(EdgeInsets()) 128 | } 129 | .navigationBarTitle("SSSwiftUISideMenu", displayMode: .inline) 130 | } 131 | .padding(.horizontal, 24) 132 | } 133 | } 134 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Container Views/MyFriends.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MyFriends.swift 3 | // SSSwiftUISideMenuDemo 4 | // 5 | // Created by Parth Dumaswala on 31/10/23. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct MyFriends: View { 11 | 12 | @Binding var presentSideMenu: Bool 13 | 14 | var body: some View { 15 | VStack{ 16 | HStack{ 17 | Button{ 18 | presentSideMenu.toggle() 19 | } label: { 20 | Image("menu") 21 | .resizable() 22 | .frame(width: 32, height: 32) 23 | } 24 | Spacer() 25 | } 26 | 27 | Spacer() 28 | Text("My Friends") 29 | Spacer() 30 | } 31 | .padding(.horizontal, 24) 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Container Views/Settings.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Settings.swift 3 | // SSSwiftUISideMenuDemo 4 | // 5 | // Created by Parth Dumaswala on 31/10/23. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct Settings: View { 11 | 12 | @Binding var presentSideMenu: Bool 13 | 14 | var body: some View { 15 | VStack{ 16 | HStack{ 17 | Button{ 18 | presentSideMenu.toggle() 19 | } label: { 20 | Image("menu") 21 | .resizable() 22 | .frame(width: 32, height: 32) 23 | } 24 | Spacer() 25 | } 26 | 27 | Spacer() 28 | Text("Settings") 29 | Spacer() 30 | } 31 | .padding(.horizontal, 24) 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // SSSwiftUISideMenu 4 | // 5 | // Created by Parth Dumaswala on 31/10/23. 6 | // 7 | 8 | import SwiftUI 9 | import SSSwiftUISideMenu 10 | 11 | struct ContentView: View { 12 | 13 | //MARK: - Properties 14 | 15 | @State private var openSideMenu: Bool = false 16 | 17 | @State private var selectedIndex: Int = 0 18 | 19 | @State private var menuConfig = SSMenuConfig() 20 | 21 | private var menuItems = [ 22 | MenuItem(title: "Home", icon: "home"), 23 | MenuItem(title: "My Friends", icon: "friends"), 24 | MenuItem(title: "Settings", icon: "setting"), 25 | MenuItem(title: "Logout", icon: "logout") 26 | ] 27 | 28 | var body: some View { 29 | ZStack { 30 | 31 | TabView(selection: $selectedIndex) { 32 | 33 | Home(presentSideMenu: $openSideMenu, objMenuConfig: $menuConfig) 34 | .tag(0) 35 | 36 | MyFriends(presentSideMenu: $openSideMenu) 37 | .tag(1) 38 | 39 | Settings(presentSideMenu: $openSideMenu) 40 | .tag(2) 41 | } 42 | 43 | SSSwiftUISideMenu(openSideMenu: $openSideMenu, selectedIndex: $selectedIndex, menuItems: menuItems, menuConfig: menuConfig) 44 | } 45 | } 46 | } 47 | 48 | #Preview { 49 | ContentView() 50 | } 51 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Example/SSSwiftUISideMenuDemo/SSSwiftUISideMenuDemoApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SSSwiftUISideMenuDemoApp.swift 3 | // SSSwiftUISideMenuDemo 4 | // 5 | // Created by Parth Dumaswala on 26/10/23. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct SSSwiftUISideMenuDemoApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | ContentView() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 mobile-simformsolutions 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version: 5.9 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "SSSwiftUISideMenu", 8 | platforms: [.iOS(.v13)], 9 | products: [ 10 | // Products define the executables and libraries a package produces, making them visible to other packages. 11 | .library( 12 | name: "SSSwiftUISideMenu", 13 | targets: ["SSSwiftUISideMenu"]), 14 | ], 15 | dependencies: [ 16 | // Dependencies declare other packages that this package depends on. 17 | // .package(url: /* package url */, from: "1.0.0"), 18 | ], 19 | targets: [ 20 | // Targets are the basic building blocks of a package. 21 | // A target can define a module or a test suite. 22 | // Targets can depend on other targets in this package, 23 | // and products in packages this package depends on. 24 | .target( 25 | name: "SSSwiftUISideMenu", 26 | dependencies: [], 27 | path: "Sources" 28 | ) 29 | ] 30 | ) 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | banner 2 | 3 | # SSSwiftUISideMenu 4 | 5 | [![Version](https://img.shields.io/cocoapods/v/SSSwiftUISideMenu.svg?style=flat)](https://cocoapods.org/pods/SSSwiftUISideMenu) 6 | [![Platform](https://img.shields.io/cocoapods/p/SSSwiftUISideMenu.svg?style=flat)](https://cocoapods.org/pods/SSSwiftUISideMenu) 7 | [![Swift Version][swift-image]][swift-url] 8 | [![PRs Welcome][PR-image]][PR-url] 9 | [![Twitter](https://img.shields.io/badge/Twitter-@simform-blue.svg?style=flat)](https://twitter.com/simform) 10 | 11 | SSSwiftUISideMenu: Effortless Side Navigation in SwiftUI 12 | 13 | Create sleek and customizable side menus effortlessly in SwiftUI with SSSwiftUISideMenu. This SwiftUI library simplifies the implementation of side menus, allowing you to enhance the navigation and user experience of your iOS apps. With a focus on flexibility and ease of use, SSSwiftUISideMenu empowers developers to integrate stylish side menus seamlessly into their SwiftUI projects. 14 | 15 | ## Features 16 | 17 | - [x] Highly customizable 18 | - [x] Multiple options of animations 19 | - [x] Right panel support 20 | 21 | ### Requirements 22 | - iOS 13.0+ 23 | - Xcode 11.0+ 24 | - [CocoaPods](http://cocoapods.org/) 25 | 26 | ## Example 27 | ![Example of SSSwiftUISideMenu](GIFs/MainGif.gif) 28 | *An example of Custom SideMenu created with this library* 29 | 30 | ![SSSwiftUISideMenu_example](https://github.com/SimformSolutionsPvtLtd/SSSwiftUISideMenu/assets/63283381/9c70c998-26ed-48b4-8aff-3ee44bf727a8) 31 | 32 | - To run the example project, clone the repo, and run `pod install` from the Example directory first. 33 | 34 | # Installation 35 | #### CocoaPods 36 | 37 | - You can use CocoaPods to install `SSSwiftUISideMenu` by adding it to your Podfile: 38 | 39 | use_frameworks! 40 | pod 'SSSwiftUISideMenu' 41 | 42 | - Import SSSwiftUISideMenu in your file: 43 | 44 | import SSSwiftUISideMenu 45 | 46 | **Manually** 47 | - Download and drop **SSSwiftUISideMenu/Sources** folder in your project. 48 | - Grab yourself a cold 🍺. 49 | 50 | #### Swift Package Manager (SPM) 51 | - When using Xcode 11 or later, you can install `SSSwiftUISideMenu` by going to your Project settings > `Swift Packages` and add the repository by providing the GitHub URL. Alternatively, you can go to `File` > `Swift Packages` > `Add Package Dependencies...` 52 | 53 | dependencies: [ 54 | .package(url: "https://github.com/mobile-simformsolutions/SSSwiftUISideMenu.git", from: "1.0.0") 55 | ] 56 | 57 | # Usage Examples 58 | 59 | - Import the package in the file you would like to use it: 60 | 61 | ```swiftui 62 | import SSSwiftUISideMenu 63 | ``` 64 | 65 | - This library shares one View which you can use as a sidemenu with many customizations like UI, animation, direction and many more. 66 | Basic example: 67 | 68 | ```swift 69 | @State private var openSideMenu: Bool = false 70 | 71 | @State private var selectedIndex: Int = 0 72 | 73 | private var menuItems = [ 74 | MenuItem(title: "item_1", icon: "icon_1"), 75 | MenuItem(title: "item_2", icon: "icon_2"), 76 | MenuItem(title: "item_3", icon: "icon_3"), 77 | MenuItem(title: "item_4", icon: "icon_4") 78 | ] 79 | 80 | var body: some Scene { 81 | SSSwiftUISideMenu(openSideMenu: $openSideMenu, selectedIndex: $selectedIndex, menuItems: menuItems) 82 | } 83 | ``` 84 | The results of any interaction from sidemenu item will available in declared selectedIndex state variable. Also sidemnu open / close toggle value will be available in the openSideMenu state variable. 85 | 86 | # Customizations 87 | 88 | - You can customize almost every main thing in this library. 89 | - For Customizations you have to pass another value of `menuConfig` during call of SSSwiftUISideMenu. This menuConfig argument is optional as well as Every arguments in `SSMenuConfig` is also Optional. So, you need to add only those arguments which yo wanted to customize. Here's the examples : 90 | 91 | ## Change in Style 92 | ----- 93 | *An example of customisation of styles* 94 | 95 | ```swift 96 | 97 | var body: some Scene { 98 | SSSwiftUISideMenu(openSideMenu: $openSideMenu, selectedIndex: $selectedIndex, menuItems: menuItems, 99 | menuConfig: SSMenuConfig(titleColor: .black, 100 | selectedTitleColor: .secondary, 101 | backgroundColor: .white)) 102 | } 103 | ``` 104 | 105 | ## Change SideMenu direction - Left / Right 106 | ----- 107 | *An example of change sidemenu direction. left direction is default* 108 | 109 | ```swift 110 | 111 | var body: some Scene { 112 | SSSwiftUISideMenu(openSideMenu: $openSideMenu, selectedIndex: $selectedIndex, menuItems: menuItems, 113 | menuConfig: SSMenuConfig(menuDirection: .right)) 114 | } 115 | ``` 116 | 117 | ## Add animation to your sidemenu 118 | ----- 119 | *An example of applying a animation type to the sidemenu* 120 | 121 | ```swift 122 | 123 | var body: some Scene { 124 | SSSwiftUISideMenu(openSideMenu: $openSideMenu, selectedIndex: $selectedIndex, menuItems: menuItems, 125 | menuConfig: SSMenuConfig(animationType: .easeOut)) 126 | } 127 | ``` 128 | 129 | # Other Customizations 130 | 131 | #### SideMenu width 132 | ---- 133 | *You can change the menu width of your choice with the menuWidth. By default is '280'.*
134 | 135 | ```swift 136 | 137 | var body: some Scene { 138 | SSSwiftUISideMenu(openSideMenu: $openSideMenu, selectedIndex: $selectedIndex, menuItems: menuItems, 139 | menuConfig: SSMenuConfig(menuWidth: MENU_SIZE)) 140 | } 141 | ``` 142 | 143 | #### Icon color and customizations 144 | ------- 145 | 146 | - You can add leftIconPadding argument to change the icon padding from the left side of the sidemenu view.
147 | - You can add imageToTitlePadding argument for adding a padding between a icon and title.
148 | - You can add iconTintColor argument to change the icon tint color of your choice.
149 | - You can add iconHeight and iconWidth argument change the size of the row icons.
150 | 151 | ```swift 152 | 153 | var body: some Scene { 154 | SSSwiftUISideMenu(openSideMenu: $openSideMenu, selectedIndex: $selectedIndex, menuItems: menuItems, 155 | menuConfig: SSMenuConfig(leftIconPadding: 20, 156 | imageToTitlePadding: 15, 157 | iconTintColor: .black, 158 | iconHeight: 30, 159 | iconWidth: 30)) 160 | } 161 | ``` 162 | 163 | #### Show App Version 164 | ------- 165 | *An example of showing your app version at bottom of the sidemenu. you can configure its style and color. All are optionally configured.* 166 | 167 | - Add showAppVersion argument to weather to show app versio or not. Default is false
168 | - Add versionText argument for adding a pass the text of the version.
169 | - Add versionTitleColor, versionAlignment or versionFont argument to change the font style and color of the version string.
170 | 171 | ```swift 172 | 173 | var body: some Scene { 174 | SSSwiftUISideMenu(openSideMenu: $openSideMenu, selectedIndex: $selectedIndex, menuItems: menuItems, 175 | menuConfig: SSMenuConfig(showAppVersion: true, 176 | versionText: "1.0.0", 177 | versionTitleColor: .gray, 178 | versionAlignment: .center)) 179 | } 180 | ``` 181 | 182 | ## Coming Soon 183 | 184 | - Pass custom view directly to the sidemenu to create sidemenu of your choice.
185 | 186 | **Up for a suggestions. Give suggestions for more features and customisations.** 187 | 188 | ## 🤝 How to Contribute 189 | 190 | Whether you're helping us fix bugs, improve the docs, or a feature request, we'd love to have you! :muscle: 191 | 192 | Check out our [**Contributing Guide**](CONTRIBUTING.md) for ideas on contributing. 193 | 194 | ## Find this example useful? ❤️ 195 | 196 | Give a ⭐️ if this project helped you! 197 | 198 | ## Check out our other Libraries 199 | 200 |

🗂 Simform Solutions Libraries→

201 | 202 | ## MIT License 203 | 204 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details 205 | 206 | [PR-image]:https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat 207 | [PR-url]:http://makeapullrequest.com 208 | [swift-image]:https://img.shields.io/badge/swift-5.0-orange.svg 209 | [swift-url]: https://swift.org/ 210 | -------------------------------------------------------------------------------- /SSSwiftUISideMenu.podspec: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Be sure to run `pod lib lint SSSwiftUISideMenu.podspec' to ensure this is a 4 | # valid spec before submitting. 5 | # 6 | # Any lines starting with a # are optional, but their use is encouraged 7 | # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html 8 | # 9 | 10 | Pod::Spec.new do |s| 11 | s.name = 'SSSwiftUISideMenu' 12 | s.version = '1.0.0' 13 | s.summary = 'SSSwiftUISideMenu is a custom Side Menu with customisable UI as per your choice.' 14 | 15 | # This description is used to generate tags and improve search results. 16 | # * Think: What does it do? Why did you write it? What is the focus? 17 | # * Try to keep it short, snappy and to the point. 18 | # * Write the description between the DESC delimiters below. 19 | # * Finally, don't worry about the indent, CocoaPods strips it! 20 | 21 | s.description = <<-DESC 22 | 'SSSwiftUISideMenu is highly customisable and easy to use Side menu control for iOS Applications. It support the SideMenu operations from left / right panel. user can navigate through the container views that added with the SideMenu MenuItems. It allows user to customise UI and animation style of their choice.' 23 | DESC 24 | 25 | s.homepage = 'https://github.com/mobile-simformsolutions/SSSwiftUISideMenu' 26 | # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' 27 | s.license = { :type => 'MIT', :file => 'LICENSE' } 28 | s.author = { 'Parth Dumaswala' => 'parth.du@simformsolutions.com' } 29 | s.source = { :git => 'https://github.com/mobile-simformsolutions/SSSwiftUISideMenu.git', :tag => s.version.to_s } 30 | # s.social_media_url = 'https://twitter.com/' 31 | 32 | s.ios.deployment_target = '13.0' 33 | 34 | s.source_files = '**/Sources/SSSwiftUISideMenu/**/*' 35 | s.swift_version = '5.0' 36 | 37 | # s.resource_bundles = { 38 | # 'SSSwiftUISideMenu' => ['SSSwiftUISideMenu/Assets/*.png'] 39 | # } 40 | 41 | # s.public_header_files = 'Pod/Classes/**/*.h' 42 | s.frameworks = 'UIKit', 'MapKit', 'SwiftUI' 43 | # s.dependency 'AFNetworking', '~> 2.3' 44 | end 45 | 46 | -------------------------------------------------------------------------------- /Sources/SSSwiftUISideMenu/SSMenuConfig.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SSMenuConfig.swift 3 | // SSSwiftUISideMenuDemo 4 | // 5 | // Created by Parth Dumaswala on 31/10/23. 6 | // 7 | 8 | import Foundation 9 | import SwiftUI 10 | 11 | public enum Directions { 12 | case left, right 13 | } 14 | 15 | public struct SSMenuConfig { 16 | 17 | /** Menu view top padding from the view. Default is: 10**/ 18 | private(set) var topPadding: CGFloat 19 | /** Item icon leading space. Default is: 0**/ 20 | private(set) var leftIconPadding: CGFloat 21 | /** Space between Icon and title. Default is: 15**/ 22 | private(set) var imageToTitlePadding: CGFloat 23 | /** Space between items (Vertically). Default is: 15**/ 24 | private(set) var rowPadding: CGFloat 25 | /** Item Icon tint color. Default is: Pink**/ 26 | private(set) var iconTintColor: Color 27 | /** Icon imageView Height. Default is: 35**/ 28 | private(set) var iconHeight: CGFloat 29 | /** Icon imageView Width. Default is: 35**/ 30 | private(set) var iconWidth: CGFloat 31 | /** Font style of the title. Default is: headline**/ 32 | private(set) var titleFont: Font 33 | /** Title color of menu item. Default is: black**/ 34 | private(set) var titleColor: Color 35 | /** Selected title color of menu item. Default is: black**/ 36 | private(set) var selectedTitleColor: Color 37 | /** background color of the menu view. Default is: white**/ 38 | private(set) var backgroundColor: Color 39 | /** Total width of the SieMenu. Default is: 280**/ 40 | private(set) var menuWidth: CGFloat 41 | /** Open / Close animation of the sidemenu. Default animation is there.**/ 42 | private(set) var animationType: Animation 43 | /** Specify the Sidemenu direction form open . Default is: left**/ 44 | private(set) var menuDirection: Directions 45 | /** Boolean for whether you want the menu close on swipe gesture . Default is: Enabled**/ 46 | private(set) var swipeToClose: Bool 47 | /** Boolean for whether you want the close the menu on tap gesture(out side) . Default is: Enabled**/ 48 | private(set) var tapToClose: Bool 49 | /** Boolean for whether you want to show App version . Default is: False**/ 50 | private(set) var showAppVersion: Bool 51 | /** Specify the App version string . Default is: Empty**/ 52 | private(set) var versionText: String 53 | /** Specify the App version string font style. Default is: caption**/ 54 | private(set) var versionFont: Font 55 | /** Specify the App version string title color. Default is: gray**/ 56 | private(set) var versionTitleColor: Color 57 | /** Specify the App version string alignment. Default is: centre**/ 58 | private(set) var versionAlignment: Alignment 59 | 60 | public init( 61 | topPadding: CGFloat = 10, 62 | leftIconPadding: CGFloat = 0, 63 | imageToTitlePadding: CGFloat = 15, 64 | rowPadding: CGFloat = 15, 65 | iconTintColor: Color = .pink, 66 | iconHeight: CGFloat = 35, 67 | iconWidth: CGFloat = 35, 68 | titleFont: Font = .headline, 69 | titleColor: Color = .black, 70 | selectedTitleColor: Color = .black, 71 | backgroundColor: Color = .white, 72 | menuWidth: CGFloat = 280, 73 | animationType: Animation = .default, 74 | menuDirection: Directions = .left, 75 | swipeToClose: Bool = true, 76 | tapToClose: Bool = true, 77 | showAppVersion: Bool = false, 78 | versionText: String = "", 79 | versionFont: Font = .caption, 80 | versionTitleColor: Color = .gray, 81 | versionAlignment: Alignment = .center 82 | ) { 83 | self.topPadding = topPadding 84 | self.leftIconPadding = leftIconPadding 85 | self.imageToTitlePadding = imageToTitlePadding 86 | self.rowPadding = rowPadding 87 | self.iconTintColor = iconTintColor 88 | self.iconHeight = iconHeight 89 | self.iconWidth = iconWidth 90 | self.titleFont = titleFont 91 | self.titleColor = titleColor 92 | self.selectedTitleColor = selectedTitleColor 93 | self.backgroundColor = backgroundColor 94 | self.menuWidth = menuWidth 95 | self.animationType = animationType 96 | self.menuDirection = menuDirection 97 | self.swipeToClose = swipeToClose 98 | self.tapToClose = tapToClose 99 | self.showAppVersion = showAppVersion 100 | self.versionText = versionText 101 | self.versionFont = versionFont 102 | self.versionTitleColor = versionTitleColor 103 | self.versionAlignment = versionAlignment 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /Sources/SSSwiftUISideMenu/SSSwiftUISideMenu.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SSSwiftUISideMenu.swift 3 | // SSSwiftUISideMenu 4 | // 5 | // Created by Parth Dumaswala on 31/10/23. 6 | // 7 | 8 | import SwiftUI 9 | 10 | public struct MenuItem : Hashable { 11 | 12 | var title : String 13 | var icon : String 14 | 15 | public init(title: String, icon: String) { 16 | self.title = title 17 | self.icon = icon 18 | } 19 | 20 | } 21 | 22 | @available(iOS 16.0, *) 23 | public struct SSSwiftUISideMenu: View { 24 | 25 | @Binding var openSideMenu: Bool 26 | @Binding var selectedIndex: Int 27 | @State var menuItems: [MenuItem] 28 | let menuConfig: SSMenuConfig 29 | 30 | public init( 31 | openSideMenu: Binding, 32 | selectedIndex: Binding, 33 | menuItems: [MenuItem], 34 | menuConfig: SSMenuConfig = SSMenuConfig() 35 | ) { 36 | self._openSideMenu = openSideMenu 37 | self._selectedIndex = selectedIndex 38 | self.menuItems = menuItems 39 | self.menuConfig = menuConfig 40 | } 41 | 42 | private var viewWidth = UIScreen.main.bounds.width 43 | public var body: some View { 44 | 45 | ZStack { 46 | GeometryReader { _ in 47 | EmptyView() 48 | } 49 | .background(Color.black.opacity(0.2)) 50 | .opacity(self.openSideMenu ? 1.0 : 0.0) 51 | .animation(menuConfig.animationType.delay(0.25), value: 0) 52 | 53 | HStack { 54 | 55 | VStack { 56 | VStack(alignment: .leading, spacing: menuConfig.rowPadding) { 57 | List { 58 | ForEach(0.. abs(verticalAmount) { 118 | if menuConfig.menuDirection == .left && horizontalAmount < 0 { 119 | self.openSideMenu.toggle() 120 | } else if menuConfig.menuDirection == .right && horizontalAmount > 0 { 121 | self.openSideMenu.toggle() 122 | } 123 | } 124 | }) 125 | .gesture( 126 | TapGesture() 127 | .onEnded { _ in 128 | if !menuConfig.tapToClose { return } 129 | self.openSideMenu.toggle() 130 | } 131 | ) 132 | } 133 | 134 | } 135 | --------------------------------------------------------------------------------