├── .gitignore ├── APDropDownNavToolbar.podspec ├── Classes ├── APNavigationController.h └── APNavigationController.m ├── Demo ├── DropDownToolBar.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── DropDownToolBar.xcworkspace │ └── contents.xcworkspacedata ├── DropDownToolBar │ ├── APAppDelegate.h │ ├── APAppDelegate.m │ ├── APViewController.h │ ├── APViewController.m │ ├── Base.lproj │ │ └── Main.storyboard │ ├── DropDownToolBar-Info.plist │ ├── DropDownToolBar-Prefix.pch │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── LaunchImage.launchimage │ │ │ └── Contents.json │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── DropDownToolBarTests │ ├── DropDownToolBarTests-Info.plist │ ├── DropDownToolBarTests.m │ └── en.lproj │ │ └── InfoPlist.strings ├── Podfile └── Podfile.lock ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | .DS_Store 3 | */build/* 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | xcuserdata 13 | profile 14 | *.moved-aside 15 | DerivedData 16 | .idea/ 17 | *.hmap 18 | *.xccheckout 19 | 20 | #CocoaPods 21 | Pods 22 | -------------------------------------------------------------------------------- /APDropDownNavToolbar.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "APDropDownNavToolbar" 3 | s.version = "1.1" 4 | s.summary = "Subclass of UINavigationController to drop down toolbar when a bar button item is tapped like in the Messages App in iOS7" 5 | s.homepage = "https://github.com/ankurp/APDropDownNavToolbar" 6 | s.license = { :type => 'MIT', :text => <<-LICENSE 7 | The MIT License (MIT) 8 | 9 | Copyright (c) 2013 Ankur Patel 10 | 11 | Permission is hereby granted, free of charge, to any person obtaining a copy of 12 | this software and associated documentation files (the "Software"), to deal in 13 | the Software without restriction, including without limitation the rights to 14 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 15 | the Software, and to permit persons to whom the Software is furnished to do so, 16 | subject to the following conditions: 17 | 18 | The above copyright notice and this permission notice shall be included in all 19 | copies or substantial portions of the Software. 20 | 21 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 23 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 24 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 25 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 26 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 | LICENSE 28 | } 29 | s.author = { "Ankur Patel" => "ankur.patel@ymail.com" } 30 | s.platform = :ios, "7.0" 31 | s.source = { :git => "https://github.com/ankurp/APDropDownNavToolbar.git", :tag => "1.1" } 32 | s.source_files = 'Classes', 'Classes/*.{h,m}' 33 | s.exclude_files = 'Classes/Exclude' 34 | s.public_header_files = 'Classes/*.h' 35 | s.requires_arc = true 36 | end 37 | -------------------------------------------------------------------------------- /Classes/APNavigationController.h: -------------------------------------------------------------------------------- 1 | // 2 | // APNavigationController.h 3 | // DropDownToolBar 4 | // 5 | // Created by Ankur Patel on 2/24/14. 6 | // Copyright (c) 2014 Encore Dev Labs LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface APNavigationController : UINavigationController 12 | 13 | @property (nonatomic, strong) UIToolbar *dropDownToolbar; // Reference to dynamically change items based on which bar button item is clicked 14 | @property (nonatomic, strong) NSString *activeNavigationBarTitle; // Navigation bar title when the toolbar is shown 15 | @property (nonatomic, strong) NSString *activeBarButtonTitle; // UIBarButton title when toolbar is shown 16 | @property (nonatomic, assign) BOOL isDropDownVisible; 17 | 18 | - (void)setActiveBarButtonTitle:(NSString*)title; 19 | - (void)setActiveNavigationBarTitle:(NSString*)title; 20 | - (void)toggleDropDown:(id)sender; 21 | - (void)hideDropDown:(id)sender; 22 | - (void)showDropDown:(id)sender; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Classes/APNavigationController.m: -------------------------------------------------------------------------------- 1 | // 2 | // APNavigationController.m 3 | // DropDownToolBar 4 | // 5 | // Created by Ankur Patel on 2/24/14. 6 | // Copyright (c) 2014 Encore Dev Labs LLC. All rights reserved. 7 | // 8 | 9 | #import "APNavigationController.h" 10 | 11 | @interface APNavigationController () 12 | 13 | @property (nonatomic, copy) NSString *originalNavigationBarTitle; 14 | @property (nonatomic, copy) NSString *originalBarButtonTitle; 15 | 16 | @end 17 | 18 | @implementation APNavigationController 19 | 20 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 21 | { 22 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 23 | if (self) { 24 | // Custom initialization 25 | } 26 | return self; 27 | } 28 | 29 | - (void)viewDidLoad 30 | { 31 | [super viewDidLoad]; 32 | // Do any additional setup after loading the view. 33 | self.dropDownToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)]; 34 | self.dropDownToolbar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 35 | self.dropDownToolbar.tintColor = self.navigationBar.tintColor; 36 | [self.navigationBar.superview insertSubview:self.dropDownToolbar belowSubview:self.navigationBar]; 37 | self.originalNavigationBarTitle = self.navigationBar.topItem.title; 38 | } 39 | 40 | - (void)didReceiveMemoryWarning 41 | { 42 | [super didReceiveMemoryWarning]; 43 | // Dispose of any resources that can be recreated. 44 | } 45 | 46 | - (void)toggleDropDown:(id)sender 47 | { 48 | if (self.isDropDownVisible) { 49 | [self hideDropDown:sender]; 50 | } else { 51 | [self showDropDown:sender]; 52 | } 53 | } 54 | 55 | - (void)hideDropDown:(id)sender 56 | { 57 | if(self.isDropDownVisible){ 58 | __weak APNavigationController *weakSelf = self; 59 | CGRect frame = self.dropDownToolbar.frame; 60 | frame.origin.y = CGRectGetMaxY(self.navigationBar.frame); 61 | self.dropDownToolbar.frame = frame; 62 | [UIView animateWithDuration:0.25 animations:^{ 63 | CGRect frame = self.dropDownToolbar.frame; 64 | frame.origin.y = 0.; 65 | weakSelf.dropDownToolbar.frame = frame; 66 | } completion:^(BOOL finished) { 67 | weakSelf.isDropDownVisible = !weakSelf.isDropDownVisible; 68 | weakSelf.dropDownToolbar.hidden = YES; 69 | }]; 70 | self.navigationBar.topItem.title = self.originalNavigationBarTitle; 71 | if(sender && [sender isKindOfClass:[UIBarButtonItem class]]){ 72 | [(UIBarButtonItem *)sender setTitle:self.originalBarButtonTitle]; 73 | } 74 | 75 | } 76 | } 77 | 78 | - (void)showDropDown:(id)sender 79 | { 80 | if(!self.isDropDownVisible){ 81 | __weak APNavigationController *weakSelf = self; 82 | CGRect frame = self.dropDownToolbar.frame; 83 | frame.origin.y = 0.f; 84 | self.dropDownToolbar.hidden = NO; 85 | self.dropDownToolbar.frame = frame; 86 | [UIView animateWithDuration:0.25 animations:^{ 87 | CGRect frame = self.dropDownToolbar.frame; 88 | frame.origin.y = CGRectGetMaxY(self.navigationBar.frame); 89 | weakSelf.dropDownToolbar.frame = frame; 90 | } completion:^(BOOL finished) { 91 | weakSelf.isDropDownVisible = !weakSelf.isDropDownVisible; 92 | }]; 93 | if (self.activeNavigationBarTitle) { 94 | self.navigationBar.topItem.title = self.activeNavigationBarTitle; 95 | } 96 | if(sender && [sender isKindOfClass:[UIBarButtonItem class]]){ 97 | self.originalBarButtonTitle = [(UIBarButtonItem *)sender title]; 98 | if (self.activeBarButtonTitle) { 99 | [(UIBarButtonItem *)sender setTitle:self.activeBarButtonTitle]; 100 | } 101 | } 102 | 103 | } 104 | } 105 | 106 | @end 107 | -------------------------------------------------------------------------------- /Demo/DropDownToolBar.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | archiveVersion 6 | 1 7 | classes 8 | 9 | objectVersion 10 | 46 11 | objects 12 | 13 | 0653B47EECCB4BC994D7DC31 14 | 15 | fileRef 16 | 9C229E2B2CF34042A11F8C28 17 | isa 18 | PBXBuildFile 19 | 20 | 9295E89218BBEF15002ADA10 21 | 22 | children 23 | 24 | 9295E8A418BBEF15002ADA10 25 | 9295E8C318BBEF15002ADA10 26 | 9295E89D18BBEF15002ADA10 27 | 9295E89C18BBEF15002ADA10 28 | B020E03429B94024B714B3CD 29 | 30 | isa 31 | PBXGroup 32 | sourceTree 33 | <group> 34 | 35 | 9295E89318BBEF15002ADA10 36 | 37 | attributes 38 | 39 | CLASSPREFIX 40 | AP 41 | LastUpgradeCheck 42 | 0500 43 | ORGANIZATIONNAME 44 | Encore Dev Labs LLC 45 | TargetAttributes 46 | 47 | 9295E8BB18BBEF15002ADA10 48 | 49 | TestTargetID 50 | 9295E89A18BBEF15002ADA10 51 | 52 | 53 | 54 | buildConfigurationList 55 | 9295E89618BBEF15002ADA10 56 | compatibilityVersion 57 | Xcode 3.2 58 | developmentRegion 59 | English 60 | hasScannedForEncodings 61 | 0 62 | isa 63 | PBXProject 64 | knownRegions 65 | 66 | en 67 | Base 68 | 69 | mainGroup 70 | 9295E89218BBEF15002ADA10 71 | productRefGroup 72 | 9295E89C18BBEF15002ADA10 73 | projectDirPath 74 | 75 | projectReferences 76 | 77 | projectRoot 78 | 79 | targets 80 | 81 | 9295E89A18BBEF15002ADA10 82 | 9295E8BB18BBEF15002ADA10 83 | 84 | 85 | 9295E89618BBEF15002ADA10 86 | 87 | buildConfigurations 88 | 89 | 9295E8CB18BBEF15002ADA10 90 | 9295E8CC18BBEF15002ADA10 91 | 92 | defaultConfigurationIsVisible 93 | 0 94 | defaultConfigurationName 95 | Release 96 | isa 97 | XCConfigurationList 98 | 99 | 9295E89718BBEF15002ADA10 100 | 101 | buildActionMask 102 | 2147483647 103 | files 104 | 105 | 9295E8AB18BBEF15002ADA10 106 | 9295E8B518BBEF15002ADA10 107 | 9295E8AF18BBEF15002ADA10 108 | 109 | isa 110 | PBXSourcesBuildPhase 111 | runOnlyForDeploymentPostprocessing 112 | 0 113 | 114 | 9295E89818BBEF15002ADA10 115 | 116 | buildActionMask 117 | 2147483647 118 | files 119 | 120 | 9295E8A118BBEF15002ADA10 121 | 9295E8A318BBEF15002ADA10 122 | 9295E89F18BBEF15002ADA10 123 | 0653B47EECCB4BC994D7DC31 124 | 125 | isa 126 | PBXFrameworksBuildPhase 127 | runOnlyForDeploymentPostprocessing 128 | 0 129 | 130 | 9295E89918BBEF15002ADA10 131 | 132 | buildActionMask 133 | 2147483647 134 | files 135 | 136 | 9295E8B718BBEF15002ADA10 137 | 9295E8A918BBEF15002ADA10 138 | 9295E8B218BBEF15002ADA10 139 | 140 | isa 141 | PBXResourcesBuildPhase 142 | runOnlyForDeploymentPostprocessing 143 | 0 144 | 145 | 9295E89A18BBEF15002ADA10 146 | 147 | buildConfigurationList 148 | 9295E8CD18BBEF15002ADA10 149 | buildPhases 150 | 151 | 9AA94A9310A042A098D7E53F 152 | 9295E89718BBEF15002ADA10 153 | 9295E89818BBEF15002ADA10 154 | 9295E89918BBEF15002ADA10 155 | AF170D7639FE4EF7B60FFE6C 156 | 157 | buildRules 158 | 159 | dependencies 160 | 161 | isa 162 | PBXNativeTarget 163 | name 164 | DropDownToolBar 165 | productName 166 | DropDownToolBar 167 | productReference 168 | 9295E89B18BBEF15002ADA10 169 | productType 170 | com.apple.product-type.application 171 | 172 | 9295E89B18BBEF15002ADA10 173 | 174 | explicitFileType 175 | wrapper.application 176 | includeInIndex 177 | 0 178 | isa 179 | PBXFileReference 180 | path 181 | DropDownToolBar.app 182 | sourceTree 183 | BUILT_PRODUCTS_DIR 184 | 185 | 9295E89C18BBEF15002ADA10 186 | 187 | children 188 | 189 | 9295E89B18BBEF15002ADA10 190 | 9295E8BC18BBEF15002ADA10 191 | 192 | isa 193 | PBXGroup 194 | name 195 | Products 196 | sourceTree 197 | <group> 198 | 199 | 9295E89D18BBEF15002ADA10 200 | 201 | children 202 | 203 | 9295E89E18BBEF15002ADA10 204 | 9295E8A018BBEF15002ADA10 205 | 9295E8A218BBEF15002ADA10 206 | 9295E8BD18BBEF15002ADA10 207 | 9C229E2B2CF34042A11F8C28 208 | 209 | isa 210 | PBXGroup 211 | name 212 | Frameworks 213 | sourceTree 214 | <group> 215 | 216 | 9295E89E18BBEF15002ADA10 217 | 218 | isa 219 | PBXFileReference 220 | lastKnownFileType 221 | wrapper.framework 222 | name 223 | Foundation.framework 224 | path 225 | System/Library/Frameworks/Foundation.framework 226 | sourceTree 227 | SDKROOT 228 | 229 | 9295E89F18BBEF15002ADA10 230 | 231 | fileRef 232 | 9295E89E18BBEF15002ADA10 233 | isa 234 | PBXBuildFile 235 | 236 | 9295E8A018BBEF15002ADA10 237 | 238 | isa 239 | PBXFileReference 240 | lastKnownFileType 241 | wrapper.framework 242 | name 243 | CoreGraphics.framework 244 | path 245 | System/Library/Frameworks/CoreGraphics.framework 246 | sourceTree 247 | SDKROOT 248 | 249 | 9295E8A118BBEF15002ADA10 250 | 251 | fileRef 252 | 9295E8A018BBEF15002ADA10 253 | isa 254 | PBXBuildFile 255 | 256 | 9295E8A218BBEF15002ADA10 257 | 258 | isa 259 | PBXFileReference 260 | lastKnownFileType 261 | wrapper.framework 262 | name 263 | UIKit.framework 264 | path 265 | System/Library/Frameworks/UIKit.framework 266 | sourceTree 267 | SDKROOT 268 | 269 | 9295E8A318BBEF15002ADA10 270 | 271 | fileRef 272 | 9295E8A218BBEF15002ADA10 273 | isa 274 | PBXBuildFile 275 | 276 | 9295E8A418BBEF15002ADA10 277 | 278 | children 279 | 280 | 9295E8AD18BBEF15002ADA10 281 | 9295E8AE18BBEF15002ADA10 282 | 9295E8B018BBEF15002ADA10 283 | 9295E8B318BBEF15002ADA10 284 | 9295E8B418BBEF15002ADA10 285 | 9295E8B618BBEF15002ADA10 286 | 9295E8A518BBEF15002ADA10 287 | 288 | isa 289 | PBXGroup 290 | path 291 | DropDownToolBar 292 | sourceTree 293 | <group> 294 | 295 | 9295E8A518BBEF15002ADA10 296 | 297 | children 298 | 299 | 9295E8A618BBEF15002ADA10 300 | 9295E8A718BBEF15002ADA10 301 | 9295E8AA18BBEF15002ADA10 302 | 9295E8AC18BBEF15002ADA10 303 | 304 | isa 305 | PBXGroup 306 | name 307 | Supporting Files 308 | sourceTree 309 | <group> 310 | 311 | 9295E8A618BBEF15002ADA10 312 | 313 | isa 314 | PBXFileReference 315 | lastKnownFileType 316 | text.plist.xml 317 | path 318 | DropDownToolBar-Info.plist 319 | sourceTree 320 | <group> 321 | 322 | 9295E8A718BBEF15002ADA10 323 | 324 | children 325 | 326 | 9295E8A818BBEF15002ADA10 327 | 328 | isa 329 | PBXVariantGroup 330 | name 331 | InfoPlist.strings 332 | sourceTree 333 | <group> 334 | 335 | 9295E8A818BBEF15002ADA10 336 | 337 | isa 338 | PBXFileReference 339 | lastKnownFileType 340 | text.plist.strings 341 | name 342 | en 343 | path 344 | en.lproj/InfoPlist.strings 345 | sourceTree 346 | <group> 347 | 348 | 9295E8A918BBEF15002ADA10 349 | 350 | fileRef 351 | 9295E8A718BBEF15002ADA10 352 | isa 353 | PBXBuildFile 354 | 355 | 9295E8AA18BBEF15002ADA10 356 | 357 | isa 358 | PBXFileReference 359 | lastKnownFileType 360 | sourcecode.c.objc 361 | path 362 | main.m 363 | sourceTree 364 | <group> 365 | 366 | 9295E8AB18BBEF15002ADA10 367 | 368 | fileRef 369 | 9295E8AA18BBEF15002ADA10 370 | isa 371 | PBXBuildFile 372 | 373 | 9295E8AC18BBEF15002ADA10 374 | 375 | isa 376 | PBXFileReference 377 | lastKnownFileType 378 | sourcecode.c.h 379 | path 380 | DropDownToolBar-Prefix.pch 381 | sourceTree 382 | <group> 383 | 384 | 9295E8AD18BBEF15002ADA10 385 | 386 | isa 387 | PBXFileReference 388 | lastKnownFileType 389 | sourcecode.c.h 390 | path 391 | APAppDelegate.h 392 | sourceTree 393 | <group> 394 | 395 | 9295E8AE18BBEF15002ADA10 396 | 397 | isa 398 | PBXFileReference 399 | lastKnownFileType 400 | sourcecode.c.objc 401 | path 402 | APAppDelegate.m 403 | sourceTree 404 | <group> 405 | 406 | 9295E8AF18BBEF15002ADA10 407 | 408 | fileRef 409 | 9295E8AE18BBEF15002ADA10 410 | isa 411 | PBXBuildFile 412 | 413 | 9295E8B018BBEF15002ADA10 414 | 415 | children 416 | 417 | 9295E8B118BBEF15002ADA10 418 | 419 | isa 420 | PBXVariantGroup 421 | name 422 | Main.storyboard 423 | sourceTree 424 | <group> 425 | 426 | 9295E8B118BBEF15002ADA10 427 | 428 | isa 429 | PBXFileReference 430 | lastKnownFileType 431 | file.storyboard 432 | name 433 | Base 434 | path 435 | Base.lproj/Main.storyboard 436 | sourceTree 437 | <group> 438 | 439 | 9295E8B218BBEF15002ADA10 440 | 441 | fileRef 442 | 9295E8B018BBEF15002ADA10 443 | isa 444 | PBXBuildFile 445 | 446 | 9295E8B318BBEF15002ADA10 447 | 448 | isa 449 | PBXFileReference 450 | lastKnownFileType 451 | sourcecode.c.h 452 | path 453 | APViewController.h 454 | sourceTree 455 | <group> 456 | 457 | 9295E8B418BBEF15002ADA10 458 | 459 | isa 460 | PBXFileReference 461 | lastKnownFileType 462 | sourcecode.c.objc 463 | path 464 | APViewController.m 465 | sourceTree 466 | <group> 467 | 468 | 9295E8B518BBEF15002ADA10 469 | 470 | fileRef 471 | 9295E8B418BBEF15002ADA10 472 | isa 473 | PBXBuildFile 474 | 475 | 9295E8B618BBEF15002ADA10 476 | 477 | isa 478 | PBXFileReference 479 | lastKnownFileType 480 | folder.assetcatalog 481 | path 482 | Images.xcassets 483 | sourceTree 484 | <group> 485 | 486 | 9295E8B718BBEF15002ADA10 487 | 488 | fileRef 489 | 9295E8B618BBEF15002ADA10 490 | isa 491 | PBXBuildFile 492 | 493 | 9295E8B818BBEF15002ADA10 494 | 495 | buildActionMask 496 | 2147483647 497 | files 498 | 499 | 9295E8CA18BBEF15002ADA10 500 | 501 | isa 502 | PBXSourcesBuildPhase 503 | runOnlyForDeploymentPostprocessing 504 | 0 505 | 506 | 9295E8B918BBEF15002ADA10 507 | 508 | buildActionMask 509 | 2147483647 510 | files 511 | 512 | 9295E8BE18BBEF15002ADA10 513 | 9295E8C018BBEF15002ADA10 514 | 9295E8BF18BBEF15002ADA10 515 | 516 | isa 517 | PBXFrameworksBuildPhase 518 | runOnlyForDeploymentPostprocessing 519 | 0 520 | 521 | 9295E8BA18BBEF15002ADA10 522 | 523 | buildActionMask 524 | 2147483647 525 | files 526 | 527 | 9295E8C818BBEF15002ADA10 528 | 529 | isa 530 | PBXResourcesBuildPhase 531 | runOnlyForDeploymentPostprocessing 532 | 0 533 | 534 | 9295E8BB18BBEF15002ADA10 535 | 536 | buildConfigurationList 537 | 9295E8D018BBEF15002ADA10 538 | buildPhases 539 | 540 | 9295E8B818BBEF15002ADA10 541 | 9295E8B918BBEF15002ADA10 542 | 9295E8BA18BBEF15002ADA10 543 | 544 | buildRules 545 | 546 | dependencies 547 | 548 | 9295E8C218BBEF15002ADA10 549 | 550 | isa 551 | PBXNativeTarget 552 | name 553 | DropDownToolBarTests 554 | productName 555 | DropDownToolBarTests 556 | productReference 557 | 9295E8BC18BBEF15002ADA10 558 | productType 559 | com.apple.product-type.bundle.unit-test 560 | 561 | 9295E8BC18BBEF15002ADA10 562 | 563 | explicitFileType 564 | wrapper.cfbundle 565 | includeInIndex 566 | 0 567 | isa 568 | PBXFileReference 569 | path 570 | DropDownToolBarTests.xctest 571 | sourceTree 572 | BUILT_PRODUCTS_DIR 573 | 574 | 9295E8BD18BBEF15002ADA10 575 | 576 | isa 577 | PBXFileReference 578 | lastKnownFileType 579 | wrapper.framework 580 | name 581 | XCTest.framework 582 | path 583 | Library/Frameworks/XCTest.framework 584 | sourceTree 585 | DEVELOPER_DIR 586 | 587 | 9295E8BE18BBEF15002ADA10 588 | 589 | fileRef 590 | 9295E8BD18BBEF15002ADA10 591 | isa 592 | PBXBuildFile 593 | 594 | 9295E8BF18BBEF15002ADA10 595 | 596 | fileRef 597 | 9295E89E18BBEF15002ADA10 598 | isa 599 | PBXBuildFile 600 | 601 | 9295E8C018BBEF15002ADA10 602 | 603 | fileRef 604 | 9295E8A218BBEF15002ADA10 605 | isa 606 | PBXBuildFile 607 | 608 | 9295E8C118BBEF15002ADA10 609 | 610 | containerPortal 611 | 9295E89318BBEF15002ADA10 612 | isa 613 | PBXContainerItemProxy 614 | proxyType 615 | 1 616 | remoteGlobalIDString 617 | 9295E89A18BBEF15002ADA10 618 | remoteInfo 619 | DropDownToolBar 620 | 621 | 9295E8C218BBEF15002ADA10 622 | 623 | isa 624 | PBXTargetDependency 625 | target 626 | 9295E89A18BBEF15002ADA10 627 | targetProxy 628 | 9295E8C118BBEF15002ADA10 629 | 630 | 9295E8C318BBEF15002ADA10 631 | 632 | children 633 | 634 | 9295E8C918BBEF15002ADA10 635 | 9295E8C418BBEF15002ADA10 636 | 637 | isa 638 | PBXGroup 639 | path 640 | DropDownToolBarTests 641 | sourceTree 642 | <group> 643 | 644 | 9295E8C418BBEF15002ADA10 645 | 646 | children 647 | 648 | 9295E8C518BBEF15002ADA10 649 | 9295E8C618BBEF15002ADA10 650 | 651 | isa 652 | PBXGroup 653 | name 654 | Supporting Files 655 | sourceTree 656 | <group> 657 | 658 | 9295E8C518BBEF15002ADA10 659 | 660 | isa 661 | PBXFileReference 662 | lastKnownFileType 663 | text.plist.xml 664 | path 665 | DropDownToolBarTests-Info.plist 666 | sourceTree 667 | <group> 668 | 669 | 9295E8C618BBEF15002ADA10 670 | 671 | children 672 | 673 | 9295E8C718BBEF15002ADA10 674 | 675 | isa 676 | PBXVariantGroup 677 | name 678 | InfoPlist.strings 679 | sourceTree 680 | <group> 681 | 682 | 9295E8C718BBEF15002ADA10 683 | 684 | isa 685 | PBXFileReference 686 | lastKnownFileType 687 | text.plist.strings 688 | name 689 | en 690 | path 691 | en.lproj/InfoPlist.strings 692 | sourceTree 693 | <group> 694 | 695 | 9295E8C818BBEF15002ADA10 696 | 697 | fileRef 698 | 9295E8C618BBEF15002ADA10 699 | isa 700 | PBXBuildFile 701 | 702 | 9295E8C918BBEF15002ADA10 703 | 704 | isa 705 | PBXFileReference 706 | lastKnownFileType 707 | sourcecode.c.objc 708 | path 709 | DropDownToolBarTests.m 710 | sourceTree 711 | <group> 712 | 713 | 9295E8CA18BBEF15002ADA10 714 | 715 | fileRef 716 | 9295E8C918BBEF15002ADA10 717 | isa 718 | PBXBuildFile 719 | 720 | 9295E8CB18BBEF15002ADA10 721 | 722 | buildSettings 723 | 724 | ALWAYS_SEARCH_USER_PATHS 725 | NO 726 | ARCHS 727 | $(ARCHS_STANDARD_INCLUDING_64_BIT) 728 | CLANG_CXX_LANGUAGE_STANDARD 729 | gnu++0x 730 | CLANG_CXX_LIBRARY 731 | libc++ 732 | CLANG_ENABLE_MODULES 733 | YES 734 | CLANG_ENABLE_OBJC_ARC 735 | YES 736 | CLANG_WARN_BOOL_CONVERSION 737 | YES 738 | CLANG_WARN_CONSTANT_CONVERSION 739 | YES 740 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE 741 | YES_ERROR 742 | CLANG_WARN_EMPTY_BODY 743 | YES 744 | CLANG_WARN_ENUM_CONVERSION 745 | YES 746 | CLANG_WARN_INT_CONVERSION 747 | YES 748 | CLANG_WARN_OBJC_ROOT_CLASS 749 | YES_ERROR 750 | CLANG_WARN__DUPLICATE_METHOD_MATCH 751 | YES 752 | CODE_SIGN_IDENTITY[sdk=iphoneos*] 753 | iPhone Developer 754 | COPY_PHASE_STRIP 755 | NO 756 | GCC_C_LANGUAGE_STANDARD 757 | gnu99 758 | GCC_DYNAMIC_NO_PIC 759 | NO 760 | GCC_OPTIMIZATION_LEVEL 761 | 0 762 | GCC_PREPROCESSOR_DEFINITIONS 763 | 764 | DEBUG=1 765 | $(inherited) 766 | 767 | GCC_SYMBOLS_PRIVATE_EXTERN 768 | NO 769 | GCC_WARN_64_TO_32_BIT_CONVERSION 770 | YES 771 | GCC_WARN_ABOUT_RETURN_TYPE 772 | YES_ERROR 773 | GCC_WARN_UNDECLARED_SELECTOR 774 | YES 775 | GCC_WARN_UNINITIALIZED_AUTOS 776 | YES 777 | GCC_WARN_UNUSED_FUNCTION 778 | YES 779 | GCC_WARN_UNUSED_VARIABLE 780 | YES 781 | IPHONEOS_DEPLOYMENT_TARGET 782 | 7.0 783 | ONLY_ACTIVE_ARCH 784 | YES 785 | SDKROOT 786 | iphoneos 787 | 788 | isa 789 | XCBuildConfiguration 790 | name 791 | Debug 792 | 793 | 9295E8CC18BBEF15002ADA10 794 | 795 | buildSettings 796 | 797 | ALWAYS_SEARCH_USER_PATHS 798 | NO 799 | ARCHS 800 | $(ARCHS_STANDARD_INCLUDING_64_BIT) 801 | CLANG_CXX_LANGUAGE_STANDARD 802 | gnu++0x 803 | CLANG_CXX_LIBRARY 804 | libc++ 805 | CLANG_ENABLE_MODULES 806 | YES 807 | CLANG_ENABLE_OBJC_ARC 808 | YES 809 | CLANG_WARN_BOOL_CONVERSION 810 | YES 811 | CLANG_WARN_CONSTANT_CONVERSION 812 | YES 813 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE 814 | YES_ERROR 815 | CLANG_WARN_EMPTY_BODY 816 | YES 817 | CLANG_WARN_ENUM_CONVERSION 818 | YES 819 | CLANG_WARN_INT_CONVERSION 820 | YES 821 | CLANG_WARN_OBJC_ROOT_CLASS 822 | YES_ERROR 823 | CLANG_WARN__DUPLICATE_METHOD_MATCH 824 | YES 825 | CODE_SIGN_IDENTITY[sdk=iphoneos*] 826 | iPhone Developer 827 | COPY_PHASE_STRIP 828 | YES 829 | ENABLE_NS_ASSERTIONS 830 | NO 831 | GCC_C_LANGUAGE_STANDARD 832 | gnu99 833 | GCC_WARN_64_TO_32_BIT_CONVERSION 834 | YES 835 | GCC_WARN_ABOUT_RETURN_TYPE 836 | YES_ERROR 837 | GCC_WARN_UNDECLARED_SELECTOR 838 | YES 839 | GCC_WARN_UNINITIALIZED_AUTOS 840 | YES 841 | GCC_WARN_UNUSED_FUNCTION 842 | YES 843 | GCC_WARN_UNUSED_VARIABLE 844 | YES 845 | IPHONEOS_DEPLOYMENT_TARGET 846 | 7.0 847 | SDKROOT 848 | iphoneos 849 | VALIDATE_PRODUCT 850 | YES 851 | 852 | isa 853 | XCBuildConfiguration 854 | name 855 | Release 856 | 857 | 9295E8CD18BBEF15002ADA10 858 | 859 | buildConfigurations 860 | 861 | 9295E8CE18BBEF15002ADA10 862 | 9295E8CF18BBEF15002ADA10 863 | 864 | defaultConfigurationIsVisible 865 | 0 866 | defaultConfigurationName 867 | Release 868 | isa 869 | XCConfigurationList 870 | 871 | 9295E8CE18BBEF15002ADA10 872 | 873 | baseConfigurationReference 874 | B020E03429B94024B714B3CD 875 | buildSettings 876 | 877 | ASSETCATALOG_COMPILER_APPICON_NAME 878 | AppIcon 879 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME 880 | LaunchImage 881 | GCC_PRECOMPILE_PREFIX_HEADER 882 | YES 883 | GCC_PREFIX_HEADER 884 | DropDownToolBar/DropDownToolBar-Prefix.pch 885 | INFOPLIST_FILE 886 | DropDownToolBar/DropDownToolBar-Info.plist 887 | PRODUCT_NAME 888 | $(TARGET_NAME) 889 | WRAPPER_EXTENSION 890 | app 891 | 892 | isa 893 | XCBuildConfiguration 894 | name 895 | Debug 896 | 897 | 9295E8CF18BBEF15002ADA10 898 | 899 | baseConfigurationReference 900 | B020E03429B94024B714B3CD 901 | buildSettings 902 | 903 | ASSETCATALOG_COMPILER_APPICON_NAME 904 | AppIcon 905 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME 906 | LaunchImage 907 | GCC_PRECOMPILE_PREFIX_HEADER 908 | YES 909 | GCC_PREFIX_HEADER 910 | DropDownToolBar/DropDownToolBar-Prefix.pch 911 | INFOPLIST_FILE 912 | DropDownToolBar/DropDownToolBar-Info.plist 913 | PRODUCT_NAME 914 | $(TARGET_NAME) 915 | WRAPPER_EXTENSION 916 | app 917 | 918 | isa 919 | XCBuildConfiguration 920 | name 921 | Release 922 | 923 | 9295E8D018BBEF15002ADA10 924 | 925 | buildConfigurations 926 | 927 | 9295E8D118BBEF15002ADA10 928 | 9295E8D218BBEF15002ADA10 929 | 930 | defaultConfigurationIsVisible 931 | 0 932 | defaultConfigurationName 933 | Release 934 | isa 935 | XCConfigurationList 936 | 937 | 9295E8D118BBEF15002ADA10 938 | 939 | buildSettings 940 | 941 | ARCHS 942 | $(ARCHS_STANDARD_INCLUDING_64_BIT) 943 | BUNDLE_LOADER 944 | $(BUILT_PRODUCTS_DIR)/DropDownToolBar.app/DropDownToolBar 945 | FRAMEWORK_SEARCH_PATHS 946 | 947 | $(SDKROOT)/Developer/Library/Frameworks 948 | $(inherited) 949 | $(DEVELOPER_FRAMEWORKS_DIR) 950 | 951 | GCC_PRECOMPILE_PREFIX_HEADER 952 | YES 953 | GCC_PREFIX_HEADER 954 | DropDownToolBar/DropDownToolBar-Prefix.pch 955 | GCC_PREPROCESSOR_DEFINITIONS 956 | 957 | DEBUG=1 958 | $(inherited) 959 | 960 | INFOPLIST_FILE 961 | DropDownToolBarTests/DropDownToolBarTests-Info.plist 962 | PRODUCT_NAME 963 | $(TARGET_NAME) 964 | TEST_HOST 965 | $(BUNDLE_LOADER) 966 | WRAPPER_EXTENSION 967 | xctest 968 | 969 | isa 970 | XCBuildConfiguration 971 | name 972 | Debug 973 | 974 | 9295E8D218BBEF15002ADA10 975 | 976 | buildSettings 977 | 978 | ARCHS 979 | $(ARCHS_STANDARD_INCLUDING_64_BIT) 980 | BUNDLE_LOADER 981 | $(BUILT_PRODUCTS_DIR)/DropDownToolBar.app/DropDownToolBar 982 | FRAMEWORK_SEARCH_PATHS 983 | 984 | $(SDKROOT)/Developer/Library/Frameworks 985 | $(inherited) 986 | $(DEVELOPER_FRAMEWORKS_DIR) 987 | 988 | GCC_PRECOMPILE_PREFIX_HEADER 989 | YES 990 | GCC_PREFIX_HEADER 991 | DropDownToolBar/DropDownToolBar-Prefix.pch 992 | INFOPLIST_FILE 993 | DropDownToolBarTests/DropDownToolBarTests-Info.plist 994 | PRODUCT_NAME 995 | $(TARGET_NAME) 996 | TEST_HOST 997 | $(BUNDLE_LOADER) 998 | WRAPPER_EXTENSION 999 | xctest 1000 | 1001 | isa 1002 | XCBuildConfiguration 1003 | name 1004 | Release 1005 | 1006 | 9AA94A9310A042A098D7E53F 1007 | 1008 | buildActionMask 1009 | 2147483647 1010 | files 1011 | 1012 | inputPaths 1013 | 1014 | isa 1015 | PBXShellScriptBuildPhase 1016 | name 1017 | Check Pods Manifest.lock 1018 | outputPaths 1019 | 1020 | runOnlyForDeploymentPostprocessing 1021 | 0 1022 | shellPath 1023 | /bin/sh 1024 | shellScript 1025 | diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null 1026 | if [[ $? != 0 ]] ; then 1027 | cat << EOM 1028 | error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. 1029 | EOM 1030 | exit 1 1031 | fi 1032 | 1033 | showEnvVarsInLog 1034 | 0 1035 | 1036 | 9C229E2B2CF34042A11F8C28 1037 | 1038 | explicitFileType 1039 | archive.ar 1040 | includeInIndex 1041 | 0 1042 | isa 1043 | PBXFileReference 1044 | path 1045 | libPods.a 1046 | sourceTree 1047 | BUILT_PRODUCTS_DIR 1048 | 1049 | AF170D7639FE4EF7B60FFE6C 1050 | 1051 | buildActionMask 1052 | 2147483647 1053 | files 1054 | 1055 | inputPaths 1056 | 1057 | isa 1058 | PBXShellScriptBuildPhase 1059 | name 1060 | Copy Pods Resources 1061 | outputPaths 1062 | 1063 | runOnlyForDeploymentPostprocessing 1064 | 0 1065 | shellPath 1066 | /bin/sh 1067 | shellScript 1068 | "${SRCROOT}/Pods/Pods-resources.sh" 1069 | 1070 | showEnvVarsInLog 1071 | 0 1072 | 1073 | B020E03429B94024B714B3CD 1074 | 1075 | includeInIndex 1076 | 1 1077 | isa 1078 | PBXFileReference 1079 | lastKnownFileType 1080 | text.xcconfig 1081 | name 1082 | Pods.xcconfig 1083 | path 1084 | Pods/Pods.xcconfig 1085 | sourceTree 1086 | <group> 1087 | 1088 | 1089 | rootObject 1090 | 9295E89318BBEF15002ADA10 1091 | 1092 | 1093 | -------------------------------------------------------------------------------- /Demo/DropDownToolBar.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demo/DropDownToolBar.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Demo/DropDownToolBar/APAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // APAppDelegate.h 3 | // DropDownToolBar 4 | // 5 | // Created by Ankur Patel on 2/24/14. 6 | // Copyright (c) 2014 Encore Dev Labs LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface APAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Demo/DropDownToolBar/APAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // APAppDelegate.m 3 | // DropDownToolBar 4 | // 5 | // Created by Ankur Patel on 2/24/14. 6 | // Copyright (c) 2014 Encore Dev Labs LLC. All rights reserved. 7 | // 8 | 9 | #import "APAppDelegate.h" 10 | 11 | @implementation APAppDelegate 12 | 13 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 14 | { 15 | // Override point for customization after application launch. 16 | return YES; 17 | } 18 | 19 | - (void)applicationWillResignActive:(UIApplication *)application 20 | { 21 | // 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. 22 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 23 | } 24 | 25 | - (void)applicationDidEnterBackground:(UIApplication *)application 26 | { 27 | // 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. 28 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 29 | } 30 | 31 | - (void)applicationWillEnterForeground:(UIApplication *)application 32 | { 33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | - (void)applicationDidBecomeActive:(UIApplication *)application 37 | { 38 | // 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. 39 | } 40 | 41 | - (void)applicationWillTerminate:(UIApplication *)application 42 | { 43 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Demo/DropDownToolBar/APViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // APViewController.h 3 | // DropDownToolBar 4 | // 5 | // Created by Ankur Patel on 2/24/14. 6 | // Copyright (c) 2014 Encore Dev Labs LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "APNavigationController.h" 11 | 12 | @interface APViewController : UIViewController 13 | 14 | @property (nonatomic, retain) APNavigationController *navController; 15 | 16 | - (IBAction)didSelectShow:(id)sender; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Demo/DropDownToolBar/APViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // APViewController.m 3 | // DropDownToolBar 4 | // 5 | // Created by Ankur Patel on 2/24/14. 6 | // Copyright (c) 2014 Encore Dev Labs LLC. All rights reserved. 7 | // 8 | 9 | #import "APViewController.h" 10 | #import "APNavigationController.h" 11 | 12 | @interface APViewController () 13 | 14 | @end 15 | 16 | @implementation APViewController 17 | 18 | - (void)viewDidLoad 19 | { 20 | [super viewDidLoad]; 21 | // Do any additional setup after loading the view, typically from a nib. 22 | self.navController = (APNavigationController*)self.navigationController; 23 | self.navController.activeNavigationBarTitle = @"Tool bar visible"; 24 | self.navController.activeBarButtonTitle = @"Hide"; 25 | } 26 | 27 | - (void)didReceiveMemoryWarning 28 | { 29 | [super didReceiveMemoryWarning]; 30 | // Dispose of any resources that can be recreated. 31 | } 32 | 33 | - (IBAction)didSelectShow:(id)sender 34 | { 35 | self.navController.dropDownToolbar.items = ({ 36 | @[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], 37 | [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editClicked:)], 38 | [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(actionClicked:)]]; 39 | }); 40 | if(self.navController.isDropDownVisible){ 41 | [self.navController hideDropDown:sender]; 42 | } 43 | else{ 44 | [self.navController showDropDown:sender]; 45 | } 46 | // Can also toggle toolbar from current state 47 | // [self.navController toggleToolbar:sender]; 48 | } 49 | 50 | - (void)editClicked:(id)sender 51 | { 52 | NSLog(@"Edit clicked"); 53 | } 54 | 55 | - (void)actionClicked:(id)sender 56 | { 57 | NSLog(@"Action clicked"); 58 | } 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /Demo/DropDownToolBar/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 | -------------------------------------------------------------------------------- /Demo/DropDownToolBar/DropDownToolBar-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | com.encoredevlabs.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /Demo/DropDownToolBar/DropDownToolBar-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /Demo/DropDownToolBar/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "60x60", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Demo/DropDownToolBar/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Demo/DropDownToolBar/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demo/DropDownToolBar/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // DropDownToolBar 4 | // 5 | // Created by Ankur Patel on 2/24/14. 6 | // Copyright (c) 2014 Encore Dev Labs LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "APAppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([APAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Demo/DropDownToolBarTests/DropDownToolBarTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | com.encoredevlabs.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Demo/DropDownToolBarTests/DropDownToolBarTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // DropDownToolBarTests.m 3 | // DropDownToolBarTests 4 | // 5 | // Created by Ankur Patel on 2/24/14. 6 | // Copyright (c) 2014 Encore Dev Labs LLC. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DropDownToolBarTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation DropDownToolBarTests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Demo/DropDownToolBarTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demo/Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, "7.0" 2 | pod "APDropDownNavToolbar", :git => "https://github.com/ankurp/APDropDownNavToolbar.git" -------------------------------------------------------------------------------- /Demo/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - APDropDownNavToolbar (1.1) 3 | 4 | DEPENDENCIES: 5 | - APDropDownNavToolbar (from `https://github.com/ankurp/APDropDownNavToolbar.git`) 6 | 7 | EXTERNAL SOURCES: 8 | APDropDownNavToolbar: 9 | :git: https://github.com/ankurp/APDropDownNavToolbar.git 10 | 11 | SPEC CHECKSUMS: 12 | APDropDownNavToolbar: 62131873890d3a30a2fdc98ffdda180a11e49aa4 13 | 14 | COCOAPODS: 0.32.1 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Ankur Patel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | 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, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | APDropDownNavToolbar 2 | ==================== 3 | 4 | iOS7 Messages App style toolbar that drops down from navigation bar when tapping on the UIBarButton item 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 18 | 19 |
iOS 7 Messages AppAPDropDownNavToolbar Demo:
13 | 14 | 16 | 17 |
20 | --------------------------------------------------------------------------------