├── Animating Navigation Bar.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── nfonics.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── nfonics.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ ├── Animating Navigation Bar.xcscheme │ └── xcschememanagement.plist ├── Animating Navigation Bar ├── AnimatingNavigationBarViewController.swift ├── Animating_Navigation_Bar.xcdatamodeld │ ├── .xccurrentversion │ └── Animating_Navigation_Bar.xcdatamodel │ │ └── contents ├── AppDelegate.swift ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ └── wristwatch.imageset │ │ ├── Contents.json │ │ └── pexels-photo-296951 (2).jpeg ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Info.plist ├── TableViewCell.swift └── ViewController.swift ├── Animating Navigation BarTests ├── Animating_Navigation_BarTests.swift └── Info.plist ├── Animating Navigation BarUITests ├── Animating_Navigation_BarUITests.swift └── Info.plist └── README.md /Animating Navigation Bar.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1366AF161E41AA19005A9518 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1366AF151E41AA19005A9518 /* AppDelegate.swift */; }; 11 | 1366AF181E41AA19005A9518 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1366AF171E41AA19005A9518 /* ViewController.swift */; }; 12 | 1366AF1B1E41AA19005A9518 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1366AF191E41AA19005A9518 /* Main.storyboard */; }; 13 | 1366AF1E1E41AA19005A9518 /* Animating_Navigation_Bar.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1366AF1C1E41AA19005A9518 /* Animating_Navigation_Bar.xcdatamodeld */; }; 14 | 1366AF201E41AA19005A9518 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1366AF1F1E41AA19005A9518 /* Assets.xcassets */; }; 15 | 1366AF231E41AA19005A9518 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1366AF211E41AA19005A9518 /* LaunchScreen.storyboard */; }; 16 | 1366AF2E1E41AA19005A9518 /* Animating_Navigation_BarTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1366AF2D1E41AA19005A9518 /* Animating_Navigation_BarTests.swift */; }; 17 | 1366AF391E41AA19005A9518 /* Animating_Navigation_BarUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1366AF381E41AA19005A9518 /* Animating_Navigation_BarUITests.swift */; }; 18 | 1366AF491E41B1A0005A9518 /* TableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1366AF481E41B1A0005A9518 /* TableViewCell.swift */; }; 19 | 13C7A6071E729F2700510491 /* AnimatingNavigationBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C7A6061E729F2700510491 /* AnimatingNavigationBarViewController.swift */; }; 20 | /* End PBXBuildFile section */ 21 | 22 | /* Begin PBXContainerItemProxy section */ 23 | 1366AF2A1E41AA19005A9518 /* PBXContainerItemProxy */ = { 24 | isa = PBXContainerItemProxy; 25 | containerPortal = 1366AF0A1E41AA19005A9518 /* Project object */; 26 | proxyType = 1; 27 | remoteGlobalIDString = 1366AF111E41AA19005A9518; 28 | remoteInfo = "Animating Navigation Bar"; 29 | }; 30 | 1366AF351E41AA19005A9518 /* PBXContainerItemProxy */ = { 31 | isa = PBXContainerItemProxy; 32 | containerPortal = 1366AF0A1E41AA19005A9518 /* Project object */; 33 | proxyType = 1; 34 | remoteGlobalIDString = 1366AF111E41AA19005A9518; 35 | remoteInfo = "Animating Navigation Bar"; 36 | }; 37 | /* End PBXContainerItemProxy section */ 38 | 39 | /* Begin PBXFileReference section */ 40 | 1366AF121E41AA19005A9518 /* Animating Navigation Bar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Animating Navigation Bar.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 1366AF151E41AA19005A9518 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 42 | 1366AF171E41AA19005A9518 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 43 | 1366AF1A1E41AA19005A9518 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 44 | 1366AF1D1E41AA19005A9518 /* Animating_Navigation_Bar.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Animating_Navigation_Bar.xcdatamodel; sourceTree = ""; }; 45 | 1366AF1F1E41AA19005A9518 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 46 | 1366AF221E41AA19005A9518 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 47 | 1366AF241E41AA19005A9518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 48 | 1366AF291E41AA19005A9518 /* Animating Navigation BarTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Animating Navigation BarTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 49 | 1366AF2D1E41AA19005A9518 /* Animating_Navigation_BarTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Animating_Navigation_BarTests.swift; sourceTree = ""; }; 50 | 1366AF2F1E41AA19005A9518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 51 | 1366AF341E41AA19005A9518 /* Animating Navigation BarUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Animating Navigation BarUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 52 | 1366AF381E41AA19005A9518 /* Animating_Navigation_BarUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Animating_Navigation_BarUITests.swift; sourceTree = ""; }; 53 | 1366AF3A1E41AA19005A9518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 54 | 1366AF481E41B1A0005A9518 /* TableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewCell.swift; sourceTree = ""; }; 55 | 13C7A6061E729F2700510491 /* AnimatingNavigationBarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnimatingNavigationBarViewController.swift; sourceTree = ""; }; 56 | /* End PBXFileReference section */ 57 | 58 | /* Begin PBXFrameworksBuildPhase section */ 59 | 1366AF0F1E41AA19005A9518 /* Frameworks */ = { 60 | isa = PBXFrameworksBuildPhase; 61 | buildActionMask = 2147483647; 62 | files = ( 63 | ); 64 | runOnlyForDeploymentPostprocessing = 0; 65 | }; 66 | 1366AF261E41AA19005A9518 /* Frameworks */ = { 67 | isa = PBXFrameworksBuildPhase; 68 | buildActionMask = 2147483647; 69 | files = ( 70 | ); 71 | runOnlyForDeploymentPostprocessing = 0; 72 | }; 73 | 1366AF311E41AA19005A9518 /* Frameworks */ = { 74 | isa = PBXFrameworksBuildPhase; 75 | buildActionMask = 2147483647; 76 | files = ( 77 | ); 78 | runOnlyForDeploymentPostprocessing = 0; 79 | }; 80 | /* End PBXFrameworksBuildPhase section */ 81 | 82 | /* Begin PBXGroup section */ 83 | 1366AF091E41AA19005A9518 = { 84 | isa = PBXGroup; 85 | children = ( 86 | 1366AF141E41AA19005A9518 /* Animating Navigation Bar */, 87 | 1366AF2C1E41AA19005A9518 /* Animating Navigation BarTests */, 88 | 1366AF371E41AA19005A9518 /* Animating Navigation BarUITests */, 89 | 1366AF131E41AA19005A9518 /* Products */, 90 | ); 91 | sourceTree = ""; 92 | }; 93 | 1366AF131E41AA19005A9518 /* Products */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | 1366AF121E41AA19005A9518 /* Animating Navigation Bar.app */, 97 | 1366AF291E41AA19005A9518 /* Animating Navigation BarTests.xctest */, 98 | 1366AF341E41AA19005A9518 /* Animating Navigation BarUITests.xctest */, 99 | ); 100 | name = Products; 101 | sourceTree = ""; 102 | }; 103 | 1366AF141E41AA19005A9518 /* Animating Navigation Bar */ = { 104 | isa = PBXGroup; 105 | children = ( 106 | 1366AF151E41AA19005A9518 /* AppDelegate.swift */, 107 | 1366AF171E41AA19005A9518 /* ViewController.swift */, 108 | 1366AF481E41B1A0005A9518 /* TableViewCell.swift */, 109 | 13C7A6061E729F2700510491 /* AnimatingNavigationBarViewController.swift */, 110 | 1366AF191E41AA19005A9518 /* Main.storyboard */, 111 | 1366AF1F1E41AA19005A9518 /* Assets.xcassets */, 112 | 1366AF211E41AA19005A9518 /* LaunchScreen.storyboard */, 113 | 1366AF241E41AA19005A9518 /* Info.plist */, 114 | 1366AF1C1E41AA19005A9518 /* Animating_Navigation_Bar.xcdatamodeld */, 115 | ); 116 | path = "Animating Navigation Bar"; 117 | sourceTree = ""; 118 | }; 119 | 1366AF2C1E41AA19005A9518 /* Animating Navigation BarTests */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | 1366AF2D1E41AA19005A9518 /* Animating_Navigation_BarTests.swift */, 123 | 1366AF2F1E41AA19005A9518 /* Info.plist */, 124 | ); 125 | path = "Animating Navigation BarTests"; 126 | sourceTree = ""; 127 | }; 128 | 1366AF371E41AA19005A9518 /* Animating Navigation BarUITests */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | 1366AF381E41AA19005A9518 /* Animating_Navigation_BarUITests.swift */, 132 | 1366AF3A1E41AA19005A9518 /* Info.plist */, 133 | ); 134 | path = "Animating Navigation BarUITests"; 135 | sourceTree = ""; 136 | }; 137 | /* End PBXGroup section */ 138 | 139 | /* Begin PBXNativeTarget section */ 140 | 1366AF111E41AA19005A9518 /* Animating Navigation Bar */ = { 141 | isa = PBXNativeTarget; 142 | buildConfigurationList = 1366AF3D1E41AA19005A9518 /* Build configuration list for PBXNativeTarget "Animating Navigation Bar" */; 143 | buildPhases = ( 144 | 1366AF0E1E41AA19005A9518 /* Sources */, 145 | 1366AF0F1E41AA19005A9518 /* Frameworks */, 146 | 1366AF101E41AA19005A9518 /* Resources */, 147 | ); 148 | buildRules = ( 149 | ); 150 | dependencies = ( 151 | ); 152 | name = "Animating Navigation Bar"; 153 | productName = "Animating Navigation Bar"; 154 | productReference = 1366AF121E41AA19005A9518 /* Animating Navigation Bar.app */; 155 | productType = "com.apple.product-type.application"; 156 | }; 157 | 1366AF281E41AA19005A9518 /* Animating Navigation BarTests */ = { 158 | isa = PBXNativeTarget; 159 | buildConfigurationList = 1366AF401E41AA19005A9518 /* Build configuration list for PBXNativeTarget "Animating Navigation BarTests" */; 160 | buildPhases = ( 161 | 1366AF251E41AA19005A9518 /* Sources */, 162 | 1366AF261E41AA19005A9518 /* Frameworks */, 163 | 1366AF271E41AA19005A9518 /* Resources */, 164 | ); 165 | buildRules = ( 166 | ); 167 | dependencies = ( 168 | 1366AF2B1E41AA19005A9518 /* PBXTargetDependency */, 169 | ); 170 | name = "Animating Navigation BarTests"; 171 | productName = "Animating Navigation BarTests"; 172 | productReference = 1366AF291E41AA19005A9518 /* Animating Navigation BarTests.xctest */; 173 | productType = "com.apple.product-type.bundle.unit-test"; 174 | }; 175 | 1366AF331E41AA19005A9518 /* Animating Navigation BarUITests */ = { 176 | isa = PBXNativeTarget; 177 | buildConfigurationList = 1366AF431E41AA19005A9518 /* Build configuration list for PBXNativeTarget "Animating Navigation BarUITests" */; 178 | buildPhases = ( 179 | 1366AF301E41AA19005A9518 /* Sources */, 180 | 1366AF311E41AA19005A9518 /* Frameworks */, 181 | 1366AF321E41AA19005A9518 /* Resources */, 182 | ); 183 | buildRules = ( 184 | ); 185 | dependencies = ( 186 | 1366AF361E41AA19005A9518 /* PBXTargetDependency */, 187 | ); 188 | name = "Animating Navigation BarUITests"; 189 | productName = "Animating Navigation BarUITests"; 190 | productReference = 1366AF341E41AA19005A9518 /* Animating Navigation BarUITests.xctest */; 191 | productType = "com.apple.product-type.bundle.ui-testing"; 192 | }; 193 | /* End PBXNativeTarget section */ 194 | 195 | /* Begin PBXProject section */ 196 | 1366AF0A1E41AA19005A9518 /* Project object */ = { 197 | isa = PBXProject; 198 | attributes = { 199 | LastSwiftUpdateCheck = 0810; 200 | LastUpgradeCheck = 0810; 201 | ORGANIZATIONNAME = "Nfonics Solutions"; 202 | TargetAttributes = { 203 | 1366AF111E41AA19005A9518 = { 204 | CreatedOnToolsVersion = 8.1; 205 | DevelopmentTeam = 42AQVZ9W32; 206 | ProvisioningStyle = Automatic; 207 | }; 208 | 1366AF281E41AA19005A9518 = { 209 | CreatedOnToolsVersion = 8.1; 210 | DevelopmentTeam = 42AQVZ9W32; 211 | ProvisioningStyle = Automatic; 212 | TestTargetID = 1366AF111E41AA19005A9518; 213 | }; 214 | 1366AF331E41AA19005A9518 = { 215 | CreatedOnToolsVersion = 8.1; 216 | DevelopmentTeam = 42AQVZ9W32; 217 | ProvisioningStyle = Automatic; 218 | TestTargetID = 1366AF111E41AA19005A9518; 219 | }; 220 | }; 221 | }; 222 | buildConfigurationList = 1366AF0D1E41AA19005A9518 /* Build configuration list for PBXProject "Animating Navigation Bar" */; 223 | compatibilityVersion = "Xcode 3.2"; 224 | developmentRegion = English; 225 | hasScannedForEncodings = 0; 226 | knownRegions = ( 227 | en, 228 | Base, 229 | ); 230 | mainGroup = 1366AF091E41AA19005A9518; 231 | productRefGroup = 1366AF131E41AA19005A9518 /* Products */; 232 | projectDirPath = ""; 233 | projectRoot = ""; 234 | targets = ( 235 | 1366AF111E41AA19005A9518 /* Animating Navigation Bar */, 236 | 1366AF281E41AA19005A9518 /* Animating Navigation BarTests */, 237 | 1366AF331E41AA19005A9518 /* Animating Navigation BarUITests */, 238 | ); 239 | }; 240 | /* End PBXProject section */ 241 | 242 | /* Begin PBXResourcesBuildPhase section */ 243 | 1366AF101E41AA19005A9518 /* Resources */ = { 244 | isa = PBXResourcesBuildPhase; 245 | buildActionMask = 2147483647; 246 | files = ( 247 | 1366AF231E41AA19005A9518 /* LaunchScreen.storyboard in Resources */, 248 | 1366AF201E41AA19005A9518 /* Assets.xcassets in Resources */, 249 | 1366AF1B1E41AA19005A9518 /* Main.storyboard in Resources */, 250 | ); 251 | runOnlyForDeploymentPostprocessing = 0; 252 | }; 253 | 1366AF271E41AA19005A9518 /* Resources */ = { 254 | isa = PBXResourcesBuildPhase; 255 | buildActionMask = 2147483647; 256 | files = ( 257 | ); 258 | runOnlyForDeploymentPostprocessing = 0; 259 | }; 260 | 1366AF321E41AA19005A9518 /* Resources */ = { 261 | isa = PBXResourcesBuildPhase; 262 | buildActionMask = 2147483647; 263 | files = ( 264 | ); 265 | runOnlyForDeploymentPostprocessing = 0; 266 | }; 267 | /* End PBXResourcesBuildPhase section */ 268 | 269 | /* Begin PBXSourcesBuildPhase section */ 270 | 1366AF0E1E41AA19005A9518 /* Sources */ = { 271 | isa = PBXSourcesBuildPhase; 272 | buildActionMask = 2147483647; 273 | files = ( 274 | 1366AF491E41B1A0005A9518 /* TableViewCell.swift in Sources */, 275 | 1366AF1E1E41AA19005A9518 /* Animating_Navigation_Bar.xcdatamodeld in Sources */, 276 | 1366AF181E41AA19005A9518 /* ViewController.swift in Sources */, 277 | 1366AF161E41AA19005A9518 /* AppDelegate.swift in Sources */, 278 | 13C7A6071E729F2700510491 /* AnimatingNavigationBarViewController.swift in Sources */, 279 | ); 280 | runOnlyForDeploymentPostprocessing = 0; 281 | }; 282 | 1366AF251E41AA19005A9518 /* Sources */ = { 283 | isa = PBXSourcesBuildPhase; 284 | buildActionMask = 2147483647; 285 | files = ( 286 | 1366AF2E1E41AA19005A9518 /* Animating_Navigation_BarTests.swift in Sources */, 287 | ); 288 | runOnlyForDeploymentPostprocessing = 0; 289 | }; 290 | 1366AF301E41AA19005A9518 /* Sources */ = { 291 | isa = PBXSourcesBuildPhase; 292 | buildActionMask = 2147483647; 293 | files = ( 294 | 1366AF391E41AA19005A9518 /* Animating_Navigation_BarUITests.swift in Sources */, 295 | ); 296 | runOnlyForDeploymentPostprocessing = 0; 297 | }; 298 | /* End PBXSourcesBuildPhase section */ 299 | 300 | /* Begin PBXTargetDependency section */ 301 | 1366AF2B1E41AA19005A9518 /* PBXTargetDependency */ = { 302 | isa = PBXTargetDependency; 303 | target = 1366AF111E41AA19005A9518 /* Animating Navigation Bar */; 304 | targetProxy = 1366AF2A1E41AA19005A9518 /* PBXContainerItemProxy */; 305 | }; 306 | 1366AF361E41AA19005A9518 /* PBXTargetDependency */ = { 307 | isa = PBXTargetDependency; 308 | target = 1366AF111E41AA19005A9518 /* Animating Navigation Bar */; 309 | targetProxy = 1366AF351E41AA19005A9518 /* PBXContainerItemProxy */; 310 | }; 311 | /* End PBXTargetDependency section */ 312 | 313 | /* Begin PBXVariantGroup section */ 314 | 1366AF191E41AA19005A9518 /* Main.storyboard */ = { 315 | isa = PBXVariantGroup; 316 | children = ( 317 | 1366AF1A1E41AA19005A9518 /* Base */, 318 | ); 319 | name = Main.storyboard; 320 | sourceTree = ""; 321 | }; 322 | 1366AF211E41AA19005A9518 /* LaunchScreen.storyboard */ = { 323 | isa = PBXVariantGroup; 324 | children = ( 325 | 1366AF221E41AA19005A9518 /* Base */, 326 | ); 327 | name = LaunchScreen.storyboard; 328 | sourceTree = ""; 329 | }; 330 | /* End PBXVariantGroup section */ 331 | 332 | /* Begin XCBuildConfiguration section */ 333 | 1366AF3B1E41AA19005A9518 /* Debug */ = { 334 | isa = XCBuildConfiguration; 335 | buildSettings = { 336 | ALWAYS_SEARCH_USER_PATHS = NO; 337 | CLANG_ANALYZER_NONNULL = YES; 338 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 339 | CLANG_CXX_LIBRARY = "libc++"; 340 | CLANG_ENABLE_MODULES = YES; 341 | CLANG_ENABLE_OBJC_ARC = YES; 342 | CLANG_WARN_BOOL_CONVERSION = YES; 343 | CLANG_WARN_CONSTANT_CONVERSION = YES; 344 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 345 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 346 | CLANG_WARN_EMPTY_BODY = YES; 347 | CLANG_WARN_ENUM_CONVERSION = YES; 348 | CLANG_WARN_INFINITE_RECURSION = YES; 349 | CLANG_WARN_INT_CONVERSION = YES; 350 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 351 | CLANG_WARN_SUSPICIOUS_MOVES = YES; 352 | CLANG_WARN_UNREACHABLE_CODE = YES; 353 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 354 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 355 | COPY_PHASE_STRIP = NO; 356 | DEBUG_INFORMATION_FORMAT = dwarf; 357 | ENABLE_STRICT_OBJC_MSGSEND = YES; 358 | ENABLE_TESTABILITY = YES; 359 | GCC_C_LANGUAGE_STANDARD = gnu99; 360 | GCC_DYNAMIC_NO_PIC = NO; 361 | GCC_NO_COMMON_BLOCKS = YES; 362 | GCC_OPTIMIZATION_LEVEL = 0; 363 | GCC_PREPROCESSOR_DEFINITIONS = ( 364 | "DEBUG=1", 365 | "$(inherited)", 366 | ); 367 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 368 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 369 | GCC_WARN_UNDECLARED_SELECTOR = YES; 370 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 371 | GCC_WARN_UNUSED_FUNCTION = YES; 372 | GCC_WARN_UNUSED_VARIABLE = YES; 373 | IPHONEOS_DEPLOYMENT_TARGET = 10.1; 374 | MTL_ENABLE_DEBUG_INFO = YES; 375 | ONLY_ACTIVE_ARCH = YES; 376 | SDKROOT = iphoneos; 377 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 378 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 379 | TARGETED_DEVICE_FAMILY = "1,2"; 380 | }; 381 | name = Debug; 382 | }; 383 | 1366AF3C1E41AA19005A9518 /* Release */ = { 384 | isa = XCBuildConfiguration; 385 | buildSettings = { 386 | ALWAYS_SEARCH_USER_PATHS = NO; 387 | CLANG_ANALYZER_NONNULL = YES; 388 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 389 | CLANG_CXX_LIBRARY = "libc++"; 390 | CLANG_ENABLE_MODULES = YES; 391 | CLANG_ENABLE_OBJC_ARC = YES; 392 | CLANG_WARN_BOOL_CONVERSION = YES; 393 | CLANG_WARN_CONSTANT_CONVERSION = YES; 394 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 395 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 396 | CLANG_WARN_EMPTY_BODY = YES; 397 | CLANG_WARN_ENUM_CONVERSION = YES; 398 | CLANG_WARN_INFINITE_RECURSION = YES; 399 | CLANG_WARN_INT_CONVERSION = YES; 400 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 401 | CLANG_WARN_SUSPICIOUS_MOVES = YES; 402 | CLANG_WARN_UNREACHABLE_CODE = YES; 403 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 404 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 405 | COPY_PHASE_STRIP = NO; 406 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 407 | ENABLE_NS_ASSERTIONS = NO; 408 | ENABLE_STRICT_OBJC_MSGSEND = YES; 409 | GCC_C_LANGUAGE_STANDARD = gnu99; 410 | GCC_NO_COMMON_BLOCKS = YES; 411 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 412 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 413 | GCC_WARN_UNDECLARED_SELECTOR = YES; 414 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 415 | GCC_WARN_UNUSED_FUNCTION = YES; 416 | GCC_WARN_UNUSED_VARIABLE = YES; 417 | IPHONEOS_DEPLOYMENT_TARGET = 10.1; 418 | MTL_ENABLE_DEBUG_INFO = NO; 419 | SDKROOT = iphoneos; 420 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 421 | TARGETED_DEVICE_FAMILY = "1,2"; 422 | VALIDATE_PRODUCT = YES; 423 | }; 424 | name = Release; 425 | }; 426 | 1366AF3E1E41AA19005A9518 /* Debug */ = { 427 | isa = XCBuildConfiguration; 428 | buildSettings = { 429 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 430 | DEVELOPMENT_TEAM = 42AQVZ9W32; 431 | INFOPLIST_FILE = "Animating Navigation Bar/Info.plist"; 432 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 433 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 434 | PRODUCT_BUNDLE_IDENTIFIER = "com.nfonics.Animating-Navigation-Bar"; 435 | PRODUCT_NAME = "$(TARGET_NAME)"; 436 | SWIFT_VERSION = 3.0; 437 | }; 438 | name = Debug; 439 | }; 440 | 1366AF3F1E41AA19005A9518 /* Release */ = { 441 | isa = XCBuildConfiguration; 442 | buildSettings = { 443 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 444 | DEVELOPMENT_TEAM = 42AQVZ9W32; 445 | INFOPLIST_FILE = "Animating Navigation Bar/Info.plist"; 446 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 447 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 448 | PRODUCT_BUNDLE_IDENTIFIER = "com.nfonics.Animating-Navigation-Bar"; 449 | PRODUCT_NAME = "$(TARGET_NAME)"; 450 | SWIFT_VERSION = 3.0; 451 | }; 452 | name = Release; 453 | }; 454 | 1366AF411E41AA19005A9518 /* Debug */ = { 455 | isa = XCBuildConfiguration; 456 | buildSettings = { 457 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 458 | BUNDLE_LOADER = "$(TEST_HOST)"; 459 | DEVELOPMENT_TEAM = 42AQVZ9W32; 460 | INFOPLIST_FILE = "Animating Navigation BarTests/Info.plist"; 461 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 462 | PRODUCT_BUNDLE_IDENTIFIER = "com.nfonics.Animating-Navigation-BarTests"; 463 | PRODUCT_NAME = "$(TARGET_NAME)"; 464 | SWIFT_VERSION = 3.0; 465 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Animating Navigation Bar.app/Animating Navigation Bar"; 466 | }; 467 | name = Debug; 468 | }; 469 | 1366AF421E41AA19005A9518 /* Release */ = { 470 | isa = XCBuildConfiguration; 471 | buildSettings = { 472 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 473 | BUNDLE_LOADER = "$(TEST_HOST)"; 474 | DEVELOPMENT_TEAM = 42AQVZ9W32; 475 | INFOPLIST_FILE = "Animating Navigation BarTests/Info.plist"; 476 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 477 | PRODUCT_BUNDLE_IDENTIFIER = "com.nfonics.Animating-Navigation-BarTests"; 478 | PRODUCT_NAME = "$(TARGET_NAME)"; 479 | SWIFT_VERSION = 3.0; 480 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Animating Navigation Bar.app/Animating Navigation Bar"; 481 | }; 482 | name = Release; 483 | }; 484 | 1366AF441E41AA19005A9518 /* Debug */ = { 485 | isa = XCBuildConfiguration; 486 | buildSettings = { 487 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 488 | DEVELOPMENT_TEAM = 42AQVZ9W32; 489 | INFOPLIST_FILE = "Animating Navigation BarUITests/Info.plist"; 490 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 491 | PRODUCT_BUNDLE_IDENTIFIER = "com.nfonics.Animating-Navigation-BarUITests"; 492 | PRODUCT_NAME = "$(TARGET_NAME)"; 493 | SWIFT_VERSION = 3.0; 494 | TEST_TARGET_NAME = "Animating Navigation Bar"; 495 | }; 496 | name = Debug; 497 | }; 498 | 1366AF451E41AA19005A9518 /* Release */ = { 499 | isa = XCBuildConfiguration; 500 | buildSettings = { 501 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 502 | DEVELOPMENT_TEAM = 42AQVZ9W32; 503 | INFOPLIST_FILE = "Animating Navigation BarUITests/Info.plist"; 504 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 505 | PRODUCT_BUNDLE_IDENTIFIER = "com.nfonics.Animating-Navigation-BarUITests"; 506 | PRODUCT_NAME = "$(TARGET_NAME)"; 507 | SWIFT_VERSION = 3.0; 508 | TEST_TARGET_NAME = "Animating Navigation Bar"; 509 | }; 510 | name = Release; 511 | }; 512 | /* End XCBuildConfiguration section */ 513 | 514 | /* Begin XCConfigurationList section */ 515 | 1366AF0D1E41AA19005A9518 /* Build configuration list for PBXProject "Animating Navigation Bar" */ = { 516 | isa = XCConfigurationList; 517 | buildConfigurations = ( 518 | 1366AF3B1E41AA19005A9518 /* Debug */, 519 | 1366AF3C1E41AA19005A9518 /* Release */, 520 | ); 521 | defaultConfigurationIsVisible = 0; 522 | defaultConfigurationName = Release; 523 | }; 524 | 1366AF3D1E41AA19005A9518 /* Build configuration list for PBXNativeTarget "Animating Navigation Bar" */ = { 525 | isa = XCConfigurationList; 526 | buildConfigurations = ( 527 | 1366AF3E1E41AA19005A9518 /* Debug */, 528 | 1366AF3F1E41AA19005A9518 /* Release */, 529 | ); 530 | defaultConfigurationIsVisible = 0; 531 | defaultConfigurationName = Release; 532 | }; 533 | 1366AF401E41AA19005A9518 /* Build configuration list for PBXNativeTarget "Animating Navigation BarTests" */ = { 534 | isa = XCConfigurationList; 535 | buildConfigurations = ( 536 | 1366AF411E41AA19005A9518 /* Debug */, 537 | 1366AF421E41AA19005A9518 /* Release */, 538 | ); 539 | defaultConfigurationIsVisible = 0; 540 | defaultConfigurationName = Release; 541 | }; 542 | 1366AF431E41AA19005A9518 /* Build configuration list for PBXNativeTarget "Animating Navigation BarUITests" */ = { 543 | isa = XCConfigurationList; 544 | buildConfigurations = ( 545 | 1366AF441E41AA19005A9518 /* Debug */, 546 | 1366AF451E41AA19005A9518 /* Release */, 547 | ); 548 | defaultConfigurationIsVisible = 0; 549 | defaultConfigurationName = Release; 550 | }; 551 | /* End XCConfigurationList section */ 552 | 553 | /* Begin XCVersionGroup section */ 554 | 1366AF1C1E41AA19005A9518 /* Animating_Navigation_Bar.xcdatamodeld */ = { 555 | isa = XCVersionGroup; 556 | children = ( 557 | 1366AF1D1E41AA19005A9518 /* Animating_Navigation_Bar.xcdatamodel */, 558 | ); 559 | currentVersion = 1366AF1D1E41AA19005A9518 /* Animating_Navigation_Bar.xcdatamodel */; 560 | path = Animating_Navigation_Bar.xcdatamodeld; 561 | sourceTree = ""; 562 | versionGroupType = wrapper.xcdatamodel; 563 | }; 564 | /* End XCVersionGroup section */ 565 | }; 566 | rootObject = 1366AF0A1E41AA19005A9518 /* Project object */; 567 | } 568 | -------------------------------------------------------------------------------- /Animating Navigation Bar.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Animating Navigation Bar.xcodeproj/project.xcworkspace/xcuserdata/nfonics.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bijuc92/Animating-Navigation-Bar/d789738c09ac3bf8f31d533498964ecb43988ed8/Animating Navigation Bar.xcodeproj/project.xcworkspace/xcuserdata/nfonics.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Animating Navigation Bar.xcodeproj/xcuserdata/nfonics.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /Animating Navigation Bar.xcodeproj/xcuserdata/nfonics.xcuserdatad/xcschemes/Animating Navigation Bar.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 43 | 49 | 50 | 51 | 52 | 53 | 59 | 60 | 61 | 62 | 63 | 64 | 74 | 76 | 82 | 83 | 84 | 85 | 86 | 87 | 93 | 95 | 101 | 102 | 103 | 104 | 106 | 107 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /Animating Navigation Bar.xcodeproj/xcuserdata/nfonics.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Animating Navigation Bar.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 1366AF111E41AA19005A9518 16 | 17 | primary 18 | 19 | 20 | 1366AF281E41AA19005A9518 21 | 22 | primary 23 | 24 | 25 | 1366AF331E41AA19005A9518 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Animating Navigation Bar/AnimatingNavigationBarViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnimatingNavigationBarViewController.swift 3 | // Animating Navigation Bar 4 | // 5 | // Created by Nfonics on 10/03/17. 6 | // Copyright © 2017 Nfonics Solutions. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class AnimatingNavigationBarViewController: UIViewController { 12 | 13 | var navigationBarView:UIView! 14 | override func viewDidLoad() { 15 | super.viewDidLoad() 16 | 17 | // Do any additional setup after loading the view. 18 | } 19 | 20 | override func didReceiveMemoryWarning() { 21 | super.didReceiveMemoryWarning() 22 | // Dispose of any resources that can be recreated. 23 | } 24 | 25 | // Custom navigation bar 26 | func navigationBarWith(title:String!) { 27 | navigationBarView = UIView.init(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 64)) 28 | let titleLabel = UILabel.init(frame: CGRect(x: 0, y: 8, width: self.view.frame.width, height: 64)) 29 | titleLabel.font = UIFont.init(name: "Futura-Bold", size: 25) 30 | titleLabel.backgroundColor = UIColor.darkGray.withAlphaComponent(0.0) 31 | titleLabel.textColor = UIColor.white 32 | titleLabel.textAlignment = .center 33 | titleLabel.numberOfLines = 1 34 | titleLabel.text = title.uppercased() 35 | self.navigationBarView .addSubview(titleLabel) 36 | self.view.addSubview(navigationBarView) 37 | } 38 | 39 | 40 | //animating navigation bar 41 | 42 | func navigationBarAnimationWithPosition(y:CGFloat) { 43 | //you can change the y value as per the height of image 44 | if y >= 200{ 45 | UIView.animate(withDuration: 0.1, animations: { 46 | self.navigationBarView.backgroundColor = UIColor(colorLiteralRed: 16.0/255, green: 74.0/255, blue: 140/255, alpha: 1.0) 47 | }) 48 | } 49 | else if y >= 180 { 50 | UIView.animate(withDuration: 0.1, animations: { 51 | self.navigationBarView.backgroundColor = UIColor(colorLiteralRed: 16.0/255, green: 74.0/255, blue: 140/255, alpha: 9.0) 52 | 53 | }) 54 | } 55 | else if y >= 160 { 56 | UIView.animate(withDuration: 0.1, animations: { 57 | self.navigationBarView.backgroundColor = UIColor(colorLiteralRed: 16.0/255, green: 74.0/255, blue: 140/255, alpha: 0.8) 58 | }) 59 | } 60 | else if y >= 140 { 61 | UIView.animate(withDuration: 0.1, animations: { 62 | self.navigationBarView.backgroundColor = UIColor(colorLiteralRed: 16.0/255, green: 74.0/255, blue: 140/255, alpha: 0.7) 63 | }) 64 | } 65 | 66 | else if y >= 120 { 67 | UIView.animate(withDuration: 0.1, animations: { 68 | self.navigationBarView.backgroundColor = UIColor(colorLiteralRed: 16.0/255, green: 74.0/255, blue: 140/255, alpha: 0.6) 69 | }) 70 | } 71 | else if y >= 100 { 72 | UIView.animate(withDuration: 0.1, animations: { 73 | self.navigationBarView.backgroundColor = UIColor(colorLiteralRed: 16.0/255, green: 74.0/255, blue: 140/255, alpha: 0.5) 74 | }) 75 | } 76 | else if y >= 80 { 77 | UIView.animate(withDuration: 0.1, animations: { 78 | self.navigationBarView.backgroundColor = UIColor(colorLiteralRed: 16.0/255, green: 74.0/255, blue: 140/255, alpha: 0.4) 79 | }) 80 | } 81 | else if y >= 60{ 82 | UIView.animate(withDuration: 0.1, animations: { 83 | self.navigationBarView.backgroundColor = UIColor(colorLiteralRed: 16.0/255, green: 74.0/255, blue: 140/255, alpha: 0.3) 84 | }) 85 | } 86 | else if y >= 40 { 87 | UIView.animate(withDuration: 0.1, animations: { 88 | self.navigationBarView.backgroundColor = UIColor(colorLiteralRed: 16.0/255, green: 74.0/255, blue: 140/255, alpha: 0.2) 89 | }) 90 | } 91 | else if y >= 20{ 92 | UIView.animate(withDuration: 0.1, animations: { 93 | self.navigationBarView.backgroundColor = UIColor(colorLiteralRed: 16.0/255, green: 74.0/255, blue: 140/255, alpha: 0.1) 94 | }) 95 | } 96 | else{ 97 | UIView.animate(withDuration: 0.1, animations: { 98 | self.navigationBarView.backgroundColor = UIColor.clear 99 | }) 100 | } 101 | 102 | } 103 | 104 | } 105 | -------------------------------------------------------------------------------- /Animating Navigation Bar/Animating_Navigation_Bar.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | _XCCurrentVersionName 6 | Animating_Navigation_Bar.xcdatamodel 7 | 8 | 9 | -------------------------------------------------------------------------------- /Animating Navigation Bar/Animating_Navigation_Bar.xcdatamodeld/Animating_Navigation_Bar.xcdatamodel/contents: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Animating Navigation Bar/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // Animating Navigation Bar 4 | // 5 | // Created by Nfonics on 01/02/17. 6 | // Copyright © 2017 Nfonics Solutions. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import CoreData 11 | 12 | @UIApplicationMain 13 | class AppDelegate: UIResponder, UIApplicationDelegate { 14 | 15 | var window: UIWindow? 16 | 17 | 18 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 19 | // Override point for customization after application launch. 20 | application.statusBarStyle = .lightContent 21 | return true 22 | } 23 | 24 | func applicationWillResignActive(_ application: UIApplication) { 25 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 26 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 27 | } 28 | 29 | func applicationDidEnterBackground(_ application: UIApplication) { 30 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 31 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 32 | } 33 | 34 | func applicationWillEnterForeground(_ application: UIApplication) { 35 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 36 | } 37 | 38 | func applicationDidBecomeActive(_ application: UIApplication) { 39 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 40 | } 41 | 42 | func applicationWillTerminate(_ application: UIApplication) { 43 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 44 | // Saves changes in the application's managed object context before the application terminates. 45 | 46 | } 47 | 48 | 49 | } 50 | 51 | -------------------------------------------------------------------------------- /Animating Navigation Bar/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | } 88 | ], 89 | "info" : { 90 | "version" : 1, 91 | "author" : "xcode" 92 | } 93 | } -------------------------------------------------------------------------------- /Animating Navigation Bar/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Animating Navigation Bar/Assets.xcassets/wristwatch.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "pexels-photo-296951 (2).jpeg", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Animating Navigation Bar/Assets.xcassets/wristwatch.imageset/pexels-photo-296951 (2).jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bijuc92/Animating-Navigation-Bar/d789738c09ac3bf8f31d533498964ecb43988ed8/Animating Navigation Bar/Assets.xcassets/wristwatch.imageset/pexels-photo-296951 (2).jpeg -------------------------------------------------------------------------------- /Animating Navigation Bar/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Animating Navigation Bar/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 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 | 58 | 59 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /Animating Navigation Bar/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UIStatusBarStyle 32 | UIStatusBarStyleLightContent 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Animating Navigation Bar/TableViewCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TableViewCell.swift 3 | // Animating Navigation Bar 4 | // 5 | // Created by Nfonics on 01/02/17. 6 | // Copyright © 2017 Nfonics Solutions. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class TableViewCell: UITableViewCell { 12 | 13 | @IBOutlet weak var rowLabel: UILabel! 14 | override func awakeFromNib() { 15 | super.awakeFromNib() 16 | // Initialization code 17 | } 18 | 19 | override func setSelected(_ selected: Bool, animated: Bool) { 20 | super.setSelected(selected, animated: animated) 21 | 22 | // Configure the view for the selected state 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /Animating Navigation Bar/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // Animating Navigation Bar 4 | // 5 | // Created by Nfonics on 01/02/17. 6 | // Copyright © 2017 Nfonics Solutions. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: AnimatingNavigationBarViewController { 12 | 13 | @IBOutlet weak var tableView: UITableView! 14 | 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | // Do any additional setup after loading the view, typically from a nib. 18 | self.tableView.tableFooterView = UIView() 19 | self.tableView.rowHeight = UITableViewAutomaticDimension 20 | self.tableView.estimatedRowHeight = 500 21 | self.tableView.delegate = self 22 | self.navigationBarWith(title: "Navigation Title") 23 | 24 | } 25 | 26 | override func didReceiveMemoryWarning() { 27 | super.didReceiveMemoryWarning() 28 | // Dispose of any resources that can be recreated. 29 | } 30 | 31 | 32 | 33 | 34 | } 35 | 36 | extension ViewController:UITableViewDataSource, UITableViewDelegate{ 37 | func numberOfSections(in tableView: UITableView) -> Int { 38 | return 2 39 | } 40 | 41 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 42 | if section == 0{ 43 | return 1 44 | } 45 | return 15 46 | } 47 | 48 | 49 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 50 | 51 | if indexPath.section == 0 { 52 | let cell = tableView.dequeueReusableCell(withIdentifier: "ImageHeaderCell") 53 | return cell! 54 | }else{ 55 | let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell 56 | cell.rowLabel.text = "Row \(indexPath.row)" 57 | return cell 58 | } 59 | } 60 | } 61 | 62 | 63 | extension ViewController:UIScrollViewDelegate{ 64 | func scrollViewDidScroll(_ scrollView: UIScrollView) { 65 | let a = self.tableView.contentOffset 66 | self.navigationBarAnimationWithPosition(y: a.y) 67 | } 68 | 69 | } 70 | 71 | -------------------------------------------------------------------------------- /Animating Navigation BarTests/Animating_Navigation_BarTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Animating_Navigation_BarTests.swift 3 | // Animating Navigation BarTests 4 | // 5 | // Created by Nfonics on 01/02/17. 6 | // Copyright © 2017 Nfonics Solutions. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import Animating_Navigation_Bar 11 | 12 | class Animating_Navigation_BarTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Animating Navigation BarTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Animating Navigation BarUITests/Animating_Navigation_BarUITests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Animating_Navigation_BarUITests.swift 3 | // Animating Navigation BarUITests 4 | // 5 | // Created by Nfonics on 01/02/17. 6 | // Copyright © 2017 Nfonics Solutions. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | class Animating_Navigation_BarUITests: XCTestCase { 12 | 13 | override func setUp() { 14 | super.setUp() 15 | 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | 18 | // In UI tests it is usually best to stop immediately when a failure occurs. 19 | continueAfterFailure = false 20 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 21 | XCUIApplication().launch() 22 | 23 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 24 | } 25 | 26 | override func tearDown() { 27 | // Put teardown code here. This method is called after the invocation of each test method in the class. 28 | super.tearDown() 29 | } 30 | 31 | func testExample() { 32 | // Use recording to get started writing UI tests. 33 | // Use XCTAssert and related functions to verify your tests produce the correct results. 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Animating Navigation BarUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Animating-Navigation-Bar 2 | animate the navigation bar while scrolling using Swift 3 3 | 4 | -![alt tag](https://cloud.githubusercontent.com/assets/16201832/23786674/6a84a19c-0594-11e7-8d9b-170d334660bc.gif) 5 | 6 | --------------------------------------------------------------------------------