├── LiquidSwipeBook ├── LiquidSwipeBook.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── shreyasvilaschandrabhike.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ │ └── shreyasvilaschandrabhike.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist └── LiquidSwipeBook │ ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ ├── spartan.imageset │ │ ├── Contents.json │ │ └── spartan.png │ ├── testbg.colorset │ │ └── Contents.json │ ├── the.imageset │ │ ├── Contents.json │ │ └── the.png │ └── ti.imageset │ │ ├── Contents.json │ │ └── ti.png │ ├── ContentView.swift │ ├── Info.plist │ ├── LiquidSwipeBookApp.swift │ ├── PageUIView.swift │ └── Preview Content │ └── Preview Assets.xcassets │ └── Contents.json ├── README.md └── output.png /LiquidSwipeBook/LiquidSwipeBook.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 50; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 5CEBB550263ECFE70066C824 /* LiquidSwipeBookApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEBB54F263ECFE70066C824 /* LiquidSwipeBookApp.swift */; }; 11 | 5CEBB552263ECFE70066C824 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEBB551263ECFE70066C824 /* ContentView.swift */; }; 12 | 5CEBB554263ECFE80066C824 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5CEBB553263ECFE80066C824 /* Assets.xcassets */; }; 13 | 5CEBB557263ECFE80066C824 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5CEBB556263ECFE80066C824 /* Preview Assets.xcassets */; }; 14 | 5CEBB564263F01B40066C824 /* PageUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEBB563263F01B40066C824 /* PageUIView.swift */; }; 15 | /* End PBXBuildFile section */ 16 | 17 | /* Begin PBXFileReference section */ 18 | 5CEBB54C263ECFE70066C824 /* LiquidSwipeBook.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LiquidSwipeBook.app; sourceTree = BUILT_PRODUCTS_DIR; }; 19 | 5CEBB54F263ECFE70066C824 /* LiquidSwipeBookApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiquidSwipeBookApp.swift; sourceTree = ""; }; 20 | 5CEBB551263ECFE70066C824 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 21 | 5CEBB553263ECFE80066C824 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 22 | 5CEBB556263ECFE80066C824 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 23 | 5CEBB558263ECFE80066C824 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 24 | 5CEBB563263F01B40066C824 /* PageUIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PageUIView.swift; sourceTree = ""; }; 25 | /* End PBXFileReference section */ 26 | 27 | /* Begin PBXFrameworksBuildPhase section */ 28 | 5CEBB549263ECFE70066C824 /* Frameworks */ = { 29 | isa = PBXFrameworksBuildPhase; 30 | buildActionMask = 2147483647; 31 | files = ( 32 | ); 33 | runOnlyForDeploymentPostprocessing = 0; 34 | }; 35 | /* End PBXFrameworksBuildPhase section */ 36 | 37 | /* Begin PBXGroup section */ 38 | 5CEBB543263ECFE70066C824 = { 39 | isa = PBXGroup; 40 | children = ( 41 | 5CEBB54E263ECFE70066C824 /* LiquidSwipeBook */, 42 | 5CEBB54D263ECFE70066C824 /* Products */, 43 | ); 44 | sourceTree = ""; 45 | }; 46 | 5CEBB54D263ECFE70066C824 /* Products */ = { 47 | isa = PBXGroup; 48 | children = ( 49 | 5CEBB54C263ECFE70066C824 /* LiquidSwipeBook.app */, 50 | ); 51 | name = Products; 52 | sourceTree = ""; 53 | }; 54 | 5CEBB54E263ECFE70066C824 /* LiquidSwipeBook */ = { 55 | isa = PBXGroup; 56 | children = ( 57 | 5CEBB54F263ECFE70066C824 /* LiquidSwipeBookApp.swift */, 58 | 5CEBB551263ECFE70066C824 /* ContentView.swift */, 59 | 5CEBB563263F01B40066C824 /* PageUIView.swift */, 60 | 5CEBB553263ECFE80066C824 /* Assets.xcassets */, 61 | 5CEBB558263ECFE80066C824 /* Info.plist */, 62 | 5CEBB555263ECFE80066C824 /* Preview Content */, 63 | ); 64 | path = LiquidSwipeBook; 65 | sourceTree = ""; 66 | }; 67 | 5CEBB555263ECFE80066C824 /* Preview Content */ = { 68 | isa = PBXGroup; 69 | children = ( 70 | 5CEBB556263ECFE80066C824 /* Preview Assets.xcassets */, 71 | ); 72 | path = "Preview Content"; 73 | sourceTree = ""; 74 | }; 75 | /* End PBXGroup section */ 76 | 77 | /* Begin PBXNativeTarget section */ 78 | 5CEBB54B263ECFE70066C824 /* LiquidSwipeBook */ = { 79 | isa = PBXNativeTarget; 80 | buildConfigurationList = 5CEBB55B263ECFE80066C824 /* Build configuration list for PBXNativeTarget "LiquidSwipeBook" */; 81 | buildPhases = ( 82 | 5CEBB548263ECFE70066C824 /* Sources */, 83 | 5CEBB549263ECFE70066C824 /* Frameworks */, 84 | 5CEBB54A263ECFE70066C824 /* Resources */, 85 | ); 86 | buildRules = ( 87 | ); 88 | dependencies = ( 89 | ); 90 | name = LiquidSwipeBook; 91 | productName = LiquidSwipeBook; 92 | productReference = 5CEBB54C263ECFE70066C824 /* LiquidSwipeBook.app */; 93 | productType = "com.apple.product-type.application"; 94 | }; 95 | /* End PBXNativeTarget section */ 96 | 97 | /* Begin PBXProject section */ 98 | 5CEBB544263ECFE70066C824 /* Project object */ = { 99 | isa = PBXProject; 100 | attributes = { 101 | LastSwiftUpdateCheck = 1240; 102 | LastUpgradeCheck = 1240; 103 | TargetAttributes = { 104 | 5CEBB54B263ECFE70066C824 = { 105 | CreatedOnToolsVersion = 12.4; 106 | }; 107 | }; 108 | }; 109 | buildConfigurationList = 5CEBB547263ECFE70066C824 /* Build configuration list for PBXProject "LiquidSwipeBook" */; 110 | compatibilityVersion = "Xcode 9.3"; 111 | developmentRegion = en; 112 | hasScannedForEncodings = 0; 113 | knownRegions = ( 114 | en, 115 | Base, 116 | ); 117 | mainGroup = 5CEBB543263ECFE70066C824; 118 | productRefGroup = 5CEBB54D263ECFE70066C824 /* Products */; 119 | projectDirPath = ""; 120 | projectRoot = ""; 121 | targets = ( 122 | 5CEBB54B263ECFE70066C824 /* LiquidSwipeBook */, 123 | ); 124 | }; 125 | /* End PBXProject section */ 126 | 127 | /* Begin PBXResourcesBuildPhase section */ 128 | 5CEBB54A263ECFE70066C824 /* Resources */ = { 129 | isa = PBXResourcesBuildPhase; 130 | buildActionMask = 2147483647; 131 | files = ( 132 | 5CEBB557263ECFE80066C824 /* Preview Assets.xcassets in Resources */, 133 | 5CEBB554263ECFE80066C824 /* Assets.xcassets in Resources */, 134 | ); 135 | runOnlyForDeploymentPostprocessing = 0; 136 | }; 137 | /* End PBXResourcesBuildPhase section */ 138 | 139 | /* Begin PBXSourcesBuildPhase section */ 140 | 5CEBB548263ECFE70066C824 /* Sources */ = { 141 | isa = PBXSourcesBuildPhase; 142 | buildActionMask = 2147483647; 143 | files = ( 144 | 5CEBB564263F01B40066C824 /* PageUIView.swift in Sources */, 145 | 5CEBB552263ECFE70066C824 /* ContentView.swift in Sources */, 146 | 5CEBB550263ECFE70066C824 /* LiquidSwipeBookApp.swift in Sources */, 147 | ); 148 | runOnlyForDeploymentPostprocessing = 0; 149 | }; 150 | /* End PBXSourcesBuildPhase section */ 151 | 152 | /* Begin XCBuildConfiguration section */ 153 | 5CEBB559263ECFE80066C824 /* Debug */ = { 154 | isa = XCBuildConfiguration; 155 | buildSettings = { 156 | ALWAYS_SEARCH_USER_PATHS = NO; 157 | CLANG_ANALYZER_NONNULL = YES; 158 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 159 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 160 | CLANG_CXX_LIBRARY = "libc++"; 161 | CLANG_ENABLE_MODULES = YES; 162 | CLANG_ENABLE_OBJC_ARC = YES; 163 | CLANG_ENABLE_OBJC_WEAK = YES; 164 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 165 | CLANG_WARN_BOOL_CONVERSION = YES; 166 | CLANG_WARN_COMMA = YES; 167 | CLANG_WARN_CONSTANT_CONVERSION = YES; 168 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 169 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 170 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 171 | CLANG_WARN_EMPTY_BODY = YES; 172 | CLANG_WARN_ENUM_CONVERSION = YES; 173 | CLANG_WARN_INFINITE_RECURSION = YES; 174 | CLANG_WARN_INT_CONVERSION = YES; 175 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 176 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 177 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 178 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 179 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 180 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 181 | CLANG_WARN_STRICT_PROTOTYPES = YES; 182 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 183 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 184 | CLANG_WARN_UNREACHABLE_CODE = YES; 185 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 186 | COPY_PHASE_STRIP = NO; 187 | DEBUG_INFORMATION_FORMAT = dwarf; 188 | ENABLE_STRICT_OBJC_MSGSEND = YES; 189 | ENABLE_TESTABILITY = YES; 190 | GCC_C_LANGUAGE_STANDARD = gnu11; 191 | GCC_DYNAMIC_NO_PIC = NO; 192 | GCC_NO_COMMON_BLOCKS = YES; 193 | GCC_OPTIMIZATION_LEVEL = 0; 194 | GCC_PREPROCESSOR_DEFINITIONS = ( 195 | "DEBUG=1", 196 | "$(inherited)", 197 | ); 198 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 199 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 200 | GCC_WARN_UNDECLARED_SELECTOR = YES; 201 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 202 | GCC_WARN_UNUSED_FUNCTION = YES; 203 | GCC_WARN_UNUSED_VARIABLE = YES; 204 | IPHONEOS_DEPLOYMENT_TARGET = 14.4; 205 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 206 | MTL_FAST_MATH = YES; 207 | ONLY_ACTIVE_ARCH = YES; 208 | SDKROOT = iphoneos; 209 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 210 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 211 | }; 212 | name = Debug; 213 | }; 214 | 5CEBB55A263ECFE80066C824 /* Release */ = { 215 | isa = XCBuildConfiguration; 216 | buildSettings = { 217 | ALWAYS_SEARCH_USER_PATHS = NO; 218 | CLANG_ANALYZER_NONNULL = YES; 219 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 220 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 221 | CLANG_CXX_LIBRARY = "libc++"; 222 | CLANG_ENABLE_MODULES = YES; 223 | CLANG_ENABLE_OBJC_ARC = YES; 224 | CLANG_ENABLE_OBJC_WEAK = YES; 225 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 226 | CLANG_WARN_BOOL_CONVERSION = YES; 227 | CLANG_WARN_COMMA = YES; 228 | CLANG_WARN_CONSTANT_CONVERSION = YES; 229 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 230 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 231 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 232 | CLANG_WARN_EMPTY_BODY = YES; 233 | CLANG_WARN_ENUM_CONVERSION = YES; 234 | CLANG_WARN_INFINITE_RECURSION = YES; 235 | CLANG_WARN_INT_CONVERSION = YES; 236 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 237 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 238 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 239 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 240 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 241 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 242 | CLANG_WARN_STRICT_PROTOTYPES = YES; 243 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 244 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 245 | CLANG_WARN_UNREACHABLE_CODE = YES; 246 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 247 | COPY_PHASE_STRIP = NO; 248 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 249 | ENABLE_NS_ASSERTIONS = NO; 250 | ENABLE_STRICT_OBJC_MSGSEND = YES; 251 | GCC_C_LANGUAGE_STANDARD = gnu11; 252 | GCC_NO_COMMON_BLOCKS = YES; 253 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 254 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 255 | GCC_WARN_UNDECLARED_SELECTOR = YES; 256 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 257 | GCC_WARN_UNUSED_FUNCTION = YES; 258 | GCC_WARN_UNUSED_VARIABLE = YES; 259 | IPHONEOS_DEPLOYMENT_TARGET = 14.4; 260 | MTL_ENABLE_DEBUG_INFO = NO; 261 | MTL_FAST_MATH = YES; 262 | SDKROOT = iphoneos; 263 | SWIFT_COMPILATION_MODE = wholemodule; 264 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 265 | VALIDATE_PRODUCT = YES; 266 | }; 267 | name = Release; 268 | }; 269 | 5CEBB55C263ECFE80066C824 /* Debug */ = { 270 | isa = XCBuildConfiguration; 271 | buildSettings = { 272 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 273 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 274 | CODE_SIGN_STYLE = Automatic; 275 | DEVELOPMENT_ASSET_PATHS = "\"LiquidSwipeBook/Preview Content\""; 276 | DEVELOPMENT_TEAM = 56ZBSRTSDR; 277 | ENABLE_PREVIEWS = YES; 278 | INFOPLIST_FILE = LiquidSwipeBook/Info.plist; 279 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 280 | LD_RUNPATH_SEARCH_PATHS = ( 281 | "$(inherited)", 282 | "@executable_path/Frameworks", 283 | ); 284 | PRODUCT_BUNDLE_IDENTIFIER = com.shreyasvilaschandrabhike.LiquidSwipeBook; 285 | PRODUCT_NAME = "$(TARGET_NAME)"; 286 | SWIFT_VERSION = 5.0; 287 | TARGETED_DEVICE_FAMILY = "1,2"; 288 | }; 289 | name = Debug; 290 | }; 291 | 5CEBB55D263ECFE80066C824 /* Release */ = { 292 | isa = XCBuildConfiguration; 293 | buildSettings = { 294 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 295 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 296 | CODE_SIGN_STYLE = Automatic; 297 | DEVELOPMENT_ASSET_PATHS = "\"LiquidSwipeBook/Preview Content\""; 298 | DEVELOPMENT_TEAM = 56ZBSRTSDR; 299 | ENABLE_PREVIEWS = YES; 300 | INFOPLIST_FILE = LiquidSwipeBook/Info.plist; 301 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 302 | LD_RUNPATH_SEARCH_PATHS = ( 303 | "$(inherited)", 304 | "@executable_path/Frameworks", 305 | ); 306 | PRODUCT_BUNDLE_IDENTIFIER = com.shreyasvilaschandrabhike.LiquidSwipeBook; 307 | PRODUCT_NAME = "$(TARGET_NAME)"; 308 | SWIFT_VERSION = 5.0; 309 | TARGETED_DEVICE_FAMILY = "1,2"; 310 | }; 311 | name = Release; 312 | }; 313 | /* End XCBuildConfiguration section */ 314 | 315 | /* Begin XCConfigurationList section */ 316 | 5CEBB547263ECFE70066C824 /* Build configuration list for PBXProject "LiquidSwipeBook" */ = { 317 | isa = XCConfigurationList; 318 | buildConfigurations = ( 319 | 5CEBB559263ECFE80066C824 /* Debug */, 320 | 5CEBB55A263ECFE80066C824 /* Release */, 321 | ); 322 | defaultConfigurationIsVisible = 0; 323 | defaultConfigurationName = Release; 324 | }; 325 | 5CEBB55B263ECFE80066C824 /* Build configuration list for PBXNativeTarget "LiquidSwipeBook" */ = { 326 | isa = XCConfigurationList; 327 | buildConfigurations = ( 328 | 5CEBB55C263ECFE80066C824 /* Debug */, 329 | 5CEBB55D263ECFE80066C824 /* Release */, 330 | ); 331 | defaultConfigurationIsVisible = 0; 332 | defaultConfigurationName = Release; 333 | }; 334 | /* End XCConfigurationList section */ 335 | }; 336 | rootObject = 5CEBB544263ECFE70066C824 /* Project object */; 337 | } 338 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook.xcodeproj/project.xcworkspace/xcuserdata/shreyasvilaschandrabhike.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheAppWizard/LiquidSwipeBookSwiftUI/bdc24e8eeb5db48b0d9a26cabfacb80186798eb1/LiquidSwipeBook/LiquidSwipeBook.xcodeproj/project.xcworkspace/xcuserdata/shreyasvilaschandrabhike.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook.xcodeproj/xcuserdata/shreyasvilaschandrabhike.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook.xcodeproj/xcuserdata/shreyasvilaschandrabhike.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | LiquidSwipeBook.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/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 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | } 93 | ], 94 | "info" : { 95 | "author" : "xcode", 96 | "version" : 1 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/Assets.xcassets/spartan.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "spartan.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/Assets.xcassets/spartan.imageset/spartan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheAppWizard/LiquidSwipeBookSwiftUI/bdc24e8eeb5db48b0d9a26cabfacb80186798eb1/LiquidSwipeBook/LiquidSwipeBook/Assets.xcassets/spartan.imageset/spartan.png -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/Assets.xcassets/testbg.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0x4D", 9 | "green" : "0x09", 10 | "red" : "0x21" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/Assets.xcassets/the.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "the.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/Assets.xcassets/the.imageset/the.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheAppWizard/LiquidSwipeBookSwiftUI/bdc24e8eeb5db48b0d9a26cabfacb80186798eb1/LiquidSwipeBook/LiquidSwipeBook/Assets.xcassets/the.imageset/the.png -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/Assets.xcassets/ti.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "ti.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/Assets.xcassets/ti.imageset/ti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheAppWizard/LiquidSwipeBookSwiftUI/bdc24e8eeb5db48b0d9a26cabfacb80186798eb1/LiquidSwipeBook/LiquidSwipeBook/Assets.xcassets/ti.imageset/ti.png -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // LiquidSwipeBook 4 | // 5 | // Created by Shreyas Vilaschandra Bhike on 02/05/21. 6 | // The App Wizard 7 | // Instagram : theappwizard2408 8 | 9 | import SwiftUI 10 | 11 | struct ContentView: View { 12 | var body: some View { 13 | ZStack{ 14 | SwipeView() 15 | 16 | } 17 | } 18 | } 19 | 20 | struct ContentView_Previews: PreviewProvider { 21 | static var previews: some View { 22 | ContentView() 23 | } 24 | } 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | //Home -> Swipe 58 | struct SwipeView: View { 59 | 60 | 61 | @State var offset : CGSize = .zero 62 | @State var showMainView = false 63 | 64 | var body: some View { 65 | ZStack{ 66 | RadialGradient(gradient: Gradient(colors: [.orange, .red]), center: .center, startRadius: 2, endRadius: 650) 67 | 68 | 69 | 70 | 71 | //Clip Content 72 | .overlay( 73 | VStack(alignment: .leading, spacing: 5, content: { 74 | 75 | 76 | Image("the") 77 | .resizable() 78 | .frame(width: 200, height: 80, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) 79 | .opacity(0.9) 80 | .offset(x: 80, y: 10.0) 81 | 82 | Image("ti") 83 | .resizable() 84 | .frame(width: 410, height: 100, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) 85 | .opacity(1) 86 | .offset(x: 50, y: 10.0) 87 | 88 | Text("By The App Wizard") 89 | .font(.title) 90 | .fontWeight(.light) 91 | .foregroundColor(Color.white) 92 | .offset(x: 220, y: 0) 93 | 94 | 95 | Image("spartan") 96 | .resizable() 97 | .frame(width: 480, height: 350, alignment: .center) 98 | .offset(x: 20, y: 180) 99 | .opacity(1) 100 | 101 | 102 | 103 | }) 104 | .foregroundColor(.red) 105 | .shadow(color: .red, radius: 1, x: /*@START_MENU_TOKEN@*/0.0/*@END_MENU_TOKEN@*/, y: /*@START_MENU_TOKEN@*/0.0/*@END_MENU_TOKEN@*/) 106 | .padding(.horizontal,30) 107 | .offset(x : -15) 108 | ) 109 | 110 | /// 111 | .clipShape(LiquidSwipe(Offset: offset)) 112 | .ignoresSafeArea() 113 | 114 | 115 | 116 | 117 | //--------------- 118 | .overlay( 119 | Text("01") 120 | .font(.largeTitle) 121 | .fontWeight(.medium) 122 | .frame(width: 50, height: 50) 123 | .contentShape(Rectangle()) 124 | .gesture(DragGesture().onChanged({ (value) in 125 | 126 | // let offset = value.translation 127 | // print(offset) 128 | 129 | 130 | withAnimation(.interactiveSpring(response : 0.7 , dampingFraction : 0.6 , blendDuration : 0.6)){ 131 | 132 | offset = value.translation 133 | 134 | } 135 | 136 | }).onEnded({ (value) in 137 | 138 | 139 | let screen = UIScreen.main.bounds 140 | withAnimation(.spring()){ 141 | 142 | if -offset.width > screen.width / 2 { 143 | 144 | offset.width = -screen.height 145 | showMainView.toggle() 146 | 147 | } 148 | 149 | else { 150 | offset = .zero 151 | } 152 | 153 | } 154 | 155 | 156 | })) 157 | .offset(x: 15, y: 58) 158 | .opacity(offset == .zero ? 1 : 0 ) 159 | 160 | ,alignment: .topTrailing 161 | 162 | ) 163 | //--------------- 164 | 165 | .padding(.trailing) 166 | 167 | 168 | if showMainView { 169 | 170 | 171 | // 172 | PageUIView() 173 | 174 | 175 | 176 | 177 | .onTapGesture { 178 | withAnimation(.spring()){ 179 | offset = .zero 180 | showMainView.toggle() 181 | } 182 | } 183 | 184 | 185 | } 186 | 187 | } 188 | } 189 | } 190 | 191 | 192 | //SwipeShape 193 | 194 | struct LiquidSwipe : Shape { 195 | 196 | 197 | var Offset : CGSize 198 | 199 | 200 | //Animating Path 201 | var animatableData: CGSize.AnimatableData{ 202 | get { return Offset.animatableData } 203 | set { Offset.animatableData = newValue } 204 | 205 | } 206 | 207 | 208 | 209 | func path(in rect : CGRect) -> Path { 210 | 211 | return Path {path in 212 | 213 | let width = rect.width + (-Offset.width > 0 ? Offset.width : 0) 214 | 215 | path.move(to : CGPoint(x: 0 ,y : 0)) 216 | path.addLine(to : CGPoint (x : rect.width , y : 0)) 217 | path.addLine(to : CGPoint (x : rect.width , y : rect.height)) 218 | path.addLine(to: CGPoint (x : 0 ,y : rect.height)) 219 | 220 | 221 | //Curve shape in it 222 | 223 | 224 | let from = 80 + (Offset.width) 225 | path.move(to : CGPoint (x : rect.width ,y : from > 80 ? 80 : from)) 226 | 227 | 228 | var to = 180 + (Offset.height) + (-Offset.width) 229 | to = to < 180 ? 180 : to 230 | 231 | 232 | let midpoint : CGFloat = 80 + ((to - 80) / 2) 233 | 234 | path.addCurve(to: CGPoint(x : rect.width , y : to), control1: CGPoint(x : width - 50 , y : midpoint), control2: CGPoint (x : width - 50 , y : midpoint)) 235 | 236 | } 237 | } 238 | 239 | } 240 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UIApplicationSceneManifest 24 | 25 | UIApplicationSupportsMultipleScenes 26 | 27 | 28 | UIApplicationSupportsIndirectInputEvents 29 | 30 | UILaunchScreen 31 | 32 | UIRequiredDeviceCapabilities 33 | 34 | armv7 35 | 36 | UISupportedInterfaceOrientations 37 | 38 | UIInterfaceOrientationPortrait 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UISupportedInterfaceOrientations~ipad 43 | 44 | UIInterfaceOrientationPortrait 45 | UIInterfaceOrientationPortraitUpsideDown 46 | UIInterfaceOrientationLandscapeLeft 47 | UIInterfaceOrientationLandscapeRight 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/LiquidSwipeBookApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LiquidSwipeBookApp.swift 3 | // LiquidSwipeBook 4 | // 5 | // Created by Shreyas Vilaschandra Bhike on 02/05/21. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct LiquidSwipeBookApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | ContentView() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/PageUIView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PageUIView.swift 3 | // LiquidSwipeBook 4 | // 5 | // Created by Shreyas Vilaschandra Bhike on 02/05/21. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct PageUIView: View { 11 | var body: some View { 12 | Page() 13 | } 14 | } 15 | 16 | struct PageUIView_Previews: PreviewProvider { 17 | static var previews: some View { 18 | PageUIView() 19 | } 20 | } 21 | 22 | 23 | struct Page: View { 24 | var body: some View { 25 | ZStack{ 26 | 27 | 28 | 29 | 30 | VStack{ 31 | 32 | 33 | 34 | HStack{ 35 | Text("CHAPTER 01") 36 | .font(.system(size: 40)) 37 | .fontWeight(.light) 38 | 39 | 40 | Spacer().frame(width: 180, height: 0, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) 41 | } 42 | 43 | 44 | RoundedRectangle(cornerRadius: 3) 45 | .frame(width: 300, height: 30, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) 46 | .opacity(0.2) 47 | .offset(x: 50, y: 0) 48 | 49 | RoundedRectangle(cornerRadius: 3) 50 | .frame(width: 400, height: 30, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) 51 | .opacity(0.2) 52 | 53 | ForEach(0 ..< 15) { 54 | Rectangle() 55 | .frame(width: 400, height: 30, alignment: .center) 56 | .opacity(0.2) 57 | .foregroundColor(.black) 58 | .rotationEffect(.degrees(Double($0) * 0)) 59 | 60 | } 61 | 62 | 63 | 64 | } 65 | 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /LiquidSwipeBook/LiquidSwipeBook/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LiquidSwipeBookSwiftUI 2 | Liquid Swipe made with SwiftUI 3 | 4 | 5 | ![Image of Swipe](https://github.com/TheAppWizard/LiquidSwipeBookSwiftUI/blob/main/output.png) 6 | 7 | 8 | -------------------------------------------------------------------------------- /output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheAppWizard/LiquidSwipeBookSwiftUI/bdc24e8eeb5db48b0d9a26cabfacb80186798eb1/output.png --------------------------------------------------------------------------------