├── .github └── workflows │ └── blank.yml ├── .gitignore ├── Example ├── Podfile ├── Podfile.lock ├── TQNavigationBarUnderLine.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── TQNavigationBarUnderLine-Example.xcscheme ├── TQNavigationBarUnderLine.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── TQNavigationBarUnderLine │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── TQAppDelegate.h │ ├── TQAppDelegate.m │ ├── TQNavigationBarUnderLine-Info.plist │ ├── TQNavigationBarUnderLine-Prefix.pch │ ├── TQViewController.h │ ├── TQViewController.m │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m └── Tests │ ├── Tests-Info.plist │ ├── Tests-Prefix.pch │ ├── Tests.m │ └── en.lproj │ └── InfoPlist.strings ├── LICENSE ├── README.md ├── TQNavigationBarUnderLine.podspec ├── TQNavigationBarUnderLine ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── TQNavigationBarUnderLine.h │ ├── UINavigationBar+UnderLine.h │ └── UINavigationBar+UnderLine.m ├── _Pods.xcodeproj └── images └── demo.jpg /.github/workflows/blank.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: macOS-10.14 9 | 10 | steps: 11 | - uses: actions/checkout@v1 12 | - name: pod install 13 | run: | 14 | gem install cocoapods 15 | cd Example 16 | pod install 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xccheckout 23 | *.xcscmblueprint 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | *.ipa 28 | *.dSYM.zip 29 | *.dSYM 30 | 31 | # CocoaPods 32 | # 33 | # We recommend against adding the Pods directory to your .gitignore. However 34 | # you should judge for yourself, the pros and cons are mentioned at: 35 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 36 | # 37 | Pods/ 38 | 39 | # Carthage 40 | # 41 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 42 | # Carthage/Checkouts 43 | 44 | Carthage/Build 45 | 46 | # fastlane 47 | # 48 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 49 | # screenshots whenever they are needed. 50 | # For more information about the recommended setup visit: 51 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 52 | 53 | fastlane/report.xml 54 | fastlane/Preview.html 55 | fastlane/screenshots 56 | fastlane/test_output 57 | 58 | # Code Injection 59 | # 60 | # After new code Injection tools there's a generated folder /iOSInjectionProject 61 | # https://github.com/johnno1962/injectionforxcode 62 | 63 | iOSInjectionProject/ 64 | 65 | # DS_Store 66 | */.DS_Store -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target 'TQNavigationBarUnderLine_Example' do 4 | pod 'TQNavigationBarUnderLine', :path => '../' 5 | 6 | target 'TQNavigationBarUnderLine_Tests' do 7 | inherit! :search_paths 8 | 9 | 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - TQNavigationBarUnderLine (0.1.1) 3 | 4 | DEPENDENCIES: 5 | - TQNavigationBarUnderLine (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | TQNavigationBarUnderLine: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | TQNavigationBarUnderLine: 56d35b4e34a51d156f222a26a29d7ac22654c964 13 | 14 | PODFILE CHECKSUM: 82d358e7a40752c47d8412b6cb33d3c273fe27c3 15 | 16 | COCOAPODS: 1.7.5 17 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; 11 | 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; }; 12 | 6003F592195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; }; 13 | 6003F598195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F596195388D20070C39A /* InfoPlist.strings */; }; 14 | 6003F59A195388D20070C39A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F599195388D20070C39A /* main.m */; }; 15 | 6003F59E195388D20070C39A /* TQAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F59D195388D20070C39A /* TQAppDelegate.m */; }; 16 | 6003F5A7195388D20070C39A /* TQViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5A6195388D20070C39A /* TQViewController.m */; }; 17 | 6003F5A9195388D20070C39A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5A8195388D20070C39A /* Images.xcassets */; }; 18 | 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F5AF195388D20070C39A /* XCTest.framework */; }; 19 | 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; 20 | 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; }; 21 | 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5B8195388D20070C39A /* InfoPlist.strings */; }; 22 | 6003F5BC195388D20070C39A /* Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5BB195388D20070C39A /* Tests.m */; }; 23 | 71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */; }; 24 | 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; }; 25 | 9CB1D990B5CBA9915006660E /* Pods_TQNavigationBarUnderLine_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65544B189763753041911E44 /* Pods_TQNavigationBarUnderLine_Example.framework */; }; 26 | A90CCC6AF2EFB0387AD798AD /* Pods_TQNavigationBarUnderLine_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DBDCC6BA39E90ABB1164E46D /* Pods_TQNavigationBarUnderLine_Tests.framework */; }; 27 | /* End PBXBuildFile section */ 28 | 29 | /* Begin PBXContainerItemProxy section */ 30 | 6003F5B3195388D20070C39A /* PBXContainerItemProxy */ = { 31 | isa = PBXContainerItemProxy; 32 | containerPortal = 6003F582195388D10070C39A /* Project object */; 33 | proxyType = 1; 34 | remoteGlobalIDString = 6003F589195388D20070C39A; 35 | remoteInfo = TQNavigationBarUnderLine; 36 | }; 37 | /* End PBXContainerItemProxy section */ 38 | 39 | /* Begin PBXFileReference section */ 40 | 2E2D4C1B288E0F7E4AE59C41 /* Pods-TQNavigationBarUnderLine_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TQNavigationBarUnderLine_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-TQNavigationBarUnderLine_Example/Pods-TQNavigationBarUnderLine_Example.debug.xcconfig"; sourceTree = ""; }; 41 | 6003F58A195388D20070C39A /* TQNavigationBarUnderLine_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TQNavigationBarUnderLine_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 42 | 6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 43 | 6003F58F195388D20070C39A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 44 | 6003F591195388D20070C39A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 45 | 6003F595195388D20070C39A /* TQNavigationBarUnderLine-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "TQNavigationBarUnderLine-Info.plist"; sourceTree = ""; }; 46 | 6003F597195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 47 | 6003F599195388D20070C39A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 48 | 6003F59B195388D20070C39A /* TQNavigationBarUnderLine-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TQNavigationBarUnderLine-Prefix.pch"; sourceTree = ""; }; 49 | 6003F59C195388D20070C39A /* TQAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TQAppDelegate.h; sourceTree = ""; }; 50 | 6003F59D195388D20070C39A /* TQAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TQAppDelegate.m; sourceTree = ""; }; 51 | 6003F5A5195388D20070C39A /* TQViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TQViewController.h; sourceTree = ""; }; 52 | 6003F5A6195388D20070C39A /* TQViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TQViewController.m; sourceTree = ""; }; 53 | 6003F5A8195388D20070C39A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 54 | 6003F5AE195388D20070C39A /* TQNavigationBarUnderLine_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TQNavigationBarUnderLine_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 55 | 6003F5AF195388D20070C39A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 56 | 6003F5B7195388D20070C39A /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; sourceTree = ""; }; 57 | 6003F5B9195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 58 | 6003F5BB195388D20070C39A /* Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Tests.m; sourceTree = ""; }; 59 | 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = ""; }; 60 | 65544B189763753041911E44 /* Pods_TQNavigationBarUnderLine_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TQNavigationBarUnderLine_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 61 | 71719F9E1E33DC2100824A3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 62 | 78842D13A61F850239E69545 /* TQNavigationBarUnderLine.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = TQNavigationBarUnderLine.podspec; path = ../TQNavigationBarUnderLine.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 63 | 7A6FDB601E6D9D39EAE563EC /* Pods-TQNavigationBarUnderLine_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TQNavigationBarUnderLine_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-TQNavigationBarUnderLine_Tests/Pods-TQNavigationBarUnderLine_Tests.debug.xcconfig"; sourceTree = ""; }; 64 | 81D02D5035233208BFBC00DD /* Pods-TQNavigationBarUnderLine_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TQNavigationBarUnderLine_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-TQNavigationBarUnderLine_Tests/Pods-TQNavigationBarUnderLine_Tests.release.xcconfig"; sourceTree = ""; }; 65 | 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 66 | B45ADA924975E2C50AA21B0D /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 67 | BA99A4430B03DB9C2C957DAD /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 68 | DBDCC6BA39E90ABB1164E46D /* Pods_TQNavigationBarUnderLine_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TQNavigationBarUnderLine_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 69 | E4DB985832A2325674BFF6A9 /* Pods-TQNavigationBarUnderLine_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TQNavigationBarUnderLine_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-TQNavigationBarUnderLine_Example/Pods-TQNavigationBarUnderLine_Example.release.xcconfig"; sourceTree = ""; }; 70 | /* End PBXFileReference section */ 71 | 72 | /* Begin PBXFrameworksBuildPhase section */ 73 | 6003F587195388D20070C39A /* Frameworks */ = { 74 | isa = PBXFrameworksBuildPhase; 75 | buildActionMask = 2147483647; 76 | files = ( 77 | 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */, 78 | 6003F592195388D20070C39A /* UIKit.framework in Frameworks */, 79 | 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */, 80 | 9CB1D990B5CBA9915006660E /* Pods_TQNavigationBarUnderLine_Example.framework in Frameworks */, 81 | ); 82 | runOnlyForDeploymentPostprocessing = 0; 83 | }; 84 | 6003F5AB195388D20070C39A /* Frameworks */ = { 85 | isa = PBXFrameworksBuildPhase; 86 | buildActionMask = 2147483647; 87 | files = ( 88 | 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */, 89 | 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */, 90 | 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */, 91 | A90CCC6AF2EFB0387AD798AD /* Pods_TQNavigationBarUnderLine_Tests.framework in Frameworks */, 92 | ); 93 | runOnlyForDeploymentPostprocessing = 0; 94 | }; 95 | /* End PBXFrameworksBuildPhase section */ 96 | 97 | /* Begin PBXGroup section */ 98 | 6003F581195388D10070C39A = { 99 | isa = PBXGroup; 100 | children = ( 101 | 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */, 102 | 6003F593195388D20070C39A /* Example for TQNavigationBarUnderLine */, 103 | 6003F5B5195388D20070C39A /* Tests */, 104 | 6003F58C195388D20070C39A /* Frameworks */, 105 | 6003F58B195388D20070C39A /* Products */, 106 | 626F80234E01DE50E97F6B16 /* Pods */, 107 | ); 108 | sourceTree = ""; 109 | }; 110 | 6003F58B195388D20070C39A /* Products */ = { 111 | isa = PBXGroup; 112 | children = ( 113 | 6003F58A195388D20070C39A /* TQNavigationBarUnderLine_Example.app */, 114 | 6003F5AE195388D20070C39A /* TQNavigationBarUnderLine_Tests.xctest */, 115 | ); 116 | name = Products; 117 | sourceTree = ""; 118 | }; 119 | 6003F58C195388D20070C39A /* Frameworks */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | 6003F58D195388D20070C39A /* Foundation.framework */, 123 | 6003F58F195388D20070C39A /* CoreGraphics.framework */, 124 | 6003F591195388D20070C39A /* UIKit.framework */, 125 | 6003F5AF195388D20070C39A /* XCTest.framework */, 126 | 65544B189763753041911E44 /* Pods_TQNavigationBarUnderLine_Example.framework */, 127 | DBDCC6BA39E90ABB1164E46D /* Pods_TQNavigationBarUnderLine_Tests.framework */, 128 | ); 129 | name = Frameworks; 130 | sourceTree = ""; 131 | }; 132 | 6003F593195388D20070C39A /* Example for TQNavigationBarUnderLine */ = { 133 | isa = PBXGroup; 134 | children = ( 135 | 6003F59C195388D20070C39A /* TQAppDelegate.h */, 136 | 6003F59D195388D20070C39A /* TQAppDelegate.m */, 137 | 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */, 138 | 6003F5A5195388D20070C39A /* TQViewController.h */, 139 | 6003F5A6195388D20070C39A /* TQViewController.m */, 140 | 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */, 141 | 6003F5A8195388D20070C39A /* Images.xcassets */, 142 | 6003F594195388D20070C39A /* Supporting Files */, 143 | ); 144 | name = "Example for TQNavigationBarUnderLine"; 145 | path = TQNavigationBarUnderLine; 146 | sourceTree = ""; 147 | }; 148 | 6003F594195388D20070C39A /* Supporting Files */ = { 149 | isa = PBXGroup; 150 | children = ( 151 | 6003F595195388D20070C39A /* TQNavigationBarUnderLine-Info.plist */, 152 | 6003F596195388D20070C39A /* InfoPlist.strings */, 153 | 6003F599195388D20070C39A /* main.m */, 154 | 6003F59B195388D20070C39A /* TQNavigationBarUnderLine-Prefix.pch */, 155 | ); 156 | name = "Supporting Files"; 157 | sourceTree = ""; 158 | }; 159 | 6003F5B5195388D20070C39A /* Tests */ = { 160 | isa = PBXGroup; 161 | children = ( 162 | 6003F5BB195388D20070C39A /* Tests.m */, 163 | 6003F5B6195388D20070C39A /* Supporting Files */, 164 | ); 165 | path = Tests; 166 | sourceTree = ""; 167 | }; 168 | 6003F5B6195388D20070C39A /* Supporting Files */ = { 169 | isa = PBXGroup; 170 | children = ( 171 | 6003F5B7195388D20070C39A /* Tests-Info.plist */, 172 | 6003F5B8195388D20070C39A /* InfoPlist.strings */, 173 | 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */, 174 | ); 175 | name = "Supporting Files"; 176 | sourceTree = ""; 177 | }; 178 | 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */ = { 179 | isa = PBXGroup; 180 | children = ( 181 | 78842D13A61F850239E69545 /* TQNavigationBarUnderLine.podspec */, 182 | BA99A4430B03DB9C2C957DAD /* README.md */, 183 | B45ADA924975E2C50AA21B0D /* LICENSE */, 184 | ); 185 | name = "Podspec Metadata"; 186 | sourceTree = ""; 187 | }; 188 | 626F80234E01DE50E97F6B16 /* Pods */ = { 189 | isa = PBXGroup; 190 | children = ( 191 | 2E2D4C1B288E0F7E4AE59C41 /* Pods-TQNavigationBarUnderLine_Example.debug.xcconfig */, 192 | E4DB985832A2325674BFF6A9 /* Pods-TQNavigationBarUnderLine_Example.release.xcconfig */, 193 | 7A6FDB601E6D9D39EAE563EC /* Pods-TQNavigationBarUnderLine_Tests.debug.xcconfig */, 194 | 81D02D5035233208BFBC00DD /* Pods-TQNavigationBarUnderLine_Tests.release.xcconfig */, 195 | ); 196 | name = Pods; 197 | sourceTree = ""; 198 | }; 199 | /* End PBXGroup section */ 200 | 201 | /* Begin PBXNativeTarget section */ 202 | 6003F589195388D20070C39A /* TQNavigationBarUnderLine_Example */ = { 203 | isa = PBXNativeTarget; 204 | buildConfigurationList = 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "TQNavigationBarUnderLine_Example" */; 205 | buildPhases = ( 206 | 44BB891B92AC146830DF1BBA /* [CP] Check Pods Manifest.lock */, 207 | 6003F586195388D20070C39A /* Sources */, 208 | 6003F587195388D20070C39A /* Frameworks */, 209 | 6003F588195388D20070C39A /* Resources */, 210 | E8BE7FD0605C63C884BCE5DC /* [CP] Embed Pods Frameworks */, 211 | ); 212 | buildRules = ( 213 | ); 214 | dependencies = ( 215 | ); 216 | name = TQNavigationBarUnderLine_Example; 217 | productName = TQNavigationBarUnderLine; 218 | productReference = 6003F58A195388D20070C39A /* TQNavigationBarUnderLine_Example.app */; 219 | productType = "com.apple.product-type.application"; 220 | }; 221 | 6003F5AD195388D20070C39A /* TQNavigationBarUnderLine_Tests */ = { 222 | isa = PBXNativeTarget; 223 | buildConfigurationList = 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "TQNavigationBarUnderLine_Tests" */; 224 | buildPhases = ( 225 | ADDF0B69238D7683DCC6902A /* [CP] Check Pods Manifest.lock */, 226 | 6003F5AA195388D20070C39A /* Sources */, 227 | 6003F5AB195388D20070C39A /* Frameworks */, 228 | 6003F5AC195388D20070C39A /* Resources */, 229 | ); 230 | buildRules = ( 231 | ); 232 | dependencies = ( 233 | 6003F5B4195388D20070C39A /* PBXTargetDependency */, 234 | ); 235 | name = TQNavigationBarUnderLine_Tests; 236 | productName = TQNavigationBarUnderLineTests; 237 | productReference = 6003F5AE195388D20070C39A /* TQNavigationBarUnderLine_Tests.xctest */; 238 | productType = "com.apple.product-type.bundle.unit-test"; 239 | }; 240 | /* End PBXNativeTarget section */ 241 | 242 | /* Begin PBXProject section */ 243 | 6003F582195388D10070C39A /* Project object */ = { 244 | isa = PBXProject; 245 | attributes = { 246 | CLASSPREFIX = TQ; 247 | LastUpgradeCheck = 1030; 248 | ORGANIZATIONNAME = "443054369@qq.com"; 249 | TargetAttributes = { 250 | 6003F5AD195388D20070C39A = { 251 | TestTargetID = 6003F589195388D20070C39A; 252 | }; 253 | }; 254 | }; 255 | buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "TQNavigationBarUnderLine" */; 256 | compatibilityVersion = "Xcode 3.2"; 257 | developmentRegion = en; 258 | hasScannedForEncodings = 0; 259 | knownRegions = ( 260 | en, 261 | Base, 262 | ); 263 | mainGroup = 6003F581195388D10070C39A; 264 | productRefGroup = 6003F58B195388D20070C39A /* Products */; 265 | projectDirPath = ""; 266 | projectRoot = ""; 267 | targets = ( 268 | 6003F589195388D20070C39A /* TQNavigationBarUnderLine_Example */, 269 | 6003F5AD195388D20070C39A /* TQNavigationBarUnderLine_Tests */, 270 | ); 271 | }; 272 | /* End PBXProject section */ 273 | 274 | /* Begin PBXResourcesBuildPhase section */ 275 | 6003F588195388D20070C39A /* Resources */ = { 276 | isa = PBXResourcesBuildPhase; 277 | buildActionMask = 2147483647; 278 | files = ( 279 | 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */, 280 | 71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */, 281 | 6003F5A9195388D20070C39A /* Images.xcassets in Resources */, 282 | 6003F598195388D20070C39A /* InfoPlist.strings in Resources */, 283 | ); 284 | runOnlyForDeploymentPostprocessing = 0; 285 | }; 286 | 6003F5AC195388D20070C39A /* Resources */ = { 287 | isa = PBXResourcesBuildPhase; 288 | buildActionMask = 2147483647; 289 | files = ( 290 | 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */, 291 | ); 292 | runOnlyForDeploymentPostprocessing = 0; 293 | }; 294 | /* End PBXResourcesBuildPhase section */ 295 | 296 | /* Begin PBXShellScriptBuildPhase section */ 297 | 44BB891B92AC146830DF1BBA /* [CP] Check Pods Manifest.lock */ = { 298 | isa = PBXShellScriptBuildPhase; 299 | buildActionMask = 2147483647; 300 | files = ( 301 | ); 302 | inputPaths = ( 303 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 304 | "${PODS_ROOT}/Manifest.lock", 305 | ); 306 | name = "[CP] Check Pods Manifest.lock"; 307 | outputPaths = ( 308 | "$(DERIVED_FILE_DIR)/Pods-TQNavigationBarUnderLine_Example-checkManifestLockResult.txt", 309 | ); 310 | runOnlyForDeploymentPostprocessing = 0; 311 | shellPath = /bin/sh; 312 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 313 | showEnvVarsInLog = 0; 314 | }; 315 | ADDF0B69238D7683DCC6902A /* [CP] Check Pods Manifest.lock */ = { 316 | isa = PBXShellScriptBuildPhase; 317 | buildActionMask = 2147483647; 318 | files = ( 319 | ); 320 | inputPaths = ( 321 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 322 | "${PODS_ROOT}/Manifest.lock", 323 | ); 324 | name = "[CP] Check Pods Manifest.lock"; 325 | outputPaths = ( 326 | "$(DERIVED_FILE_DIR)/Pods-TQNavigationBarUnderLine_Tests-checkManifestLockResult.txt", 327 | ); 328 | runOnlyForDeploymentPostprocessing = 0; 329 | shellPath = /bin/sh; 330 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 331 | showEnvVarsInLog = 0; 332 | }; 333 | E8BE7FD0605C63C884BCE5DC /* [CP] Embed Pods Frameworks */ = { 334 | isa = PBXShellScriptBuildPhase; 335 | buildActionMask = 2147483647; 336 | files = ( 337 | ); 338 | inputPaths = ( 339 | "${PODS_ROOT}/Target Support Files/Pods-TQNavigationBarUnderLine_Example/Pods-TQNavigationBarUnderLine_Example-frameworks.sh", 340 | "${BUILT_PRODUCTS_DIR}/TQNavigationBarUnderLine/TQNavigationBarUnderLine.framework", 341 | ); 342 | name = "[CP] Embed Pods Frameworks"; 343 | outputPaths = ( 344 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TQNavigationBarUnderLine.framework", 345 | ); 346 | runOnlyForDeploymentPostprocessing = 0; 347 | shellPath = /bin/sh; 348 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TQNavigationBarUnderLine_Example/Pods-TQNavigationBarUnderLine_Example-frameworks.sh\"\n"; 349 | showEnvVarsInLog = 0; 350 | }; 351 | /* End PBXShellScriptBuildPhase section */ 352 | 353 | /* Begin PBXSourcesBuildPhase section */ 354 | 6003F586195388D20070C39A /* Sources */ = { 355 | isa = PBXSourcesBuildPhase; 356 | buildActionMask = 2147483647; 357 | files = ( 358 | 6003F59E195388D20070C39A /* TQAppDelegate.m in Sources */, 359 | 6003F5A7195388D20070C39A /* TQViewController.m in Sources */, 360 | 6003F59A195388D20070C39A /* main.m in Sources */, 361 | ); 362 | runOnlyForDeploymentPostprocessing = 0; 363 | }; 364 | 6003F5AA195388D20070C39A /* Sources */ = { 365 | isa = PBXSourcesBuildPhase; 366 | buildActionMask = 2147483647; 367 | files = ( 368 | 6003F5BC195388D20070C39A /* Tests.m in Sources */, 369 | ); 370 | runOnlyForDeploymentPostprocessing = 0; 371 | }; 372 | /* End PBXSourcesBuildPhase section */ 373 | 374 | /* Begin PBXTargetDependency section */ 375 | 6003F5B4195388D20070C39A /* PBXTargetDependency */ = { 376 | isa = PBXTargetDependency; 377 | target = 6003F589195388D20070C39A /* TQNavigationBarUnderLine_Example */; 378 | targetProxy = 6003F5B3195388D20070C39A /* PBXContainerItemProxy */; 379 | }; 380 | /* End PBXTargetDependency section */ 381 | 382 | /* Begin PBXVariantGroup section */ 383 | 6003F596195388D20070C39A /* InfoPlist.strings */ = { 384 | isa = PBXVariantGroup; 385 | children = ( 386 | 6003F597195388D20070C39A /* en */, 387 | ); 388 | name = InfoPlist.strings; 389 | sourceTree = ""; 390 | }; 391 | 6003F5B8195388D20070C39A /* InfoPlist.strings */ = { 392 | isa = PBXVariantGroup; 393 | children = ( 394 | 6003F5B9195388D20070C39A /* en */, 395 | ); 396 | name = InfoPlist.strings; 397 | sourceTree = ""; 398 | }; 399 | 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */ = { 400 | isa = PBXVariantGroup; 401 | children = ( 402 | 71719F9E1E33DC2100824A3D /* Base */, 403 | ); 404 | name = LaunchScreen.storyboard; 405 | sourceTree = ""; 406 | }; 407 | /* End PBXVariantGroup section */ 408 | 409 | /* Begin XCBuildConfiguration section */ 410 | 6003F5BD195388D20070C39A /* Debug */ = { 411 | isa = XCBuildConfiguration; 412 | buildSettings = { 413 | ALWAYS_SEARCH_USER_PATHS = NO; 414 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 415 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 416 | CLANG_CXX_LIBRARY = "libc++"; 417 | CLANG_ENABLE_MODULES = YES; 418 | CLANG_ENABLE_OBJC_ARC = YES; 419 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 420 | CLANG_WARN_BOOL_CONVERSION = YES; 421 | CLANG_WARN_COMMA = YES; 422 | CLANG_WARN_CONSTANT_CONVERSION = YES; 423 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 424 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 425 | CLANG_WARN_EMPTY_BODY = YES; 426 | CLANG_WARN_ENUM_CONVERSION = YES; 427 | CLANG_WARN_INFINITE_RECURSION = YES; 428 | CLANG_WARN_INT_CONVERSION = YES; 429 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 430 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 431 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 432 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 433 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 434 | CLANG_WARN_STRICT_PROTOTYPES = YES; 435 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 436 | CLANG_WARN_UNREACHABLE_CODE = YES; 437 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 438 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 439 | COPY_PHASE_STRIP = NO; 440 | ENABLE_STRICT_OBJC_MSGSEND = YES; 441 | ENABLE_TESTABILITY = YES; 442 | GCC_C_LANGUAGE_STANDARD = gnu99; 443 | GCC_DYNAMIC_NO_PIC = NO; 444 | GCC_NO_COMMON_BLOCKS = YES; 445 | GCC_OPTIMIZATION_LEVEL = 0; 446 | GCC_PREPROCESSOR_DEFINITIONS = ( 447 | "DEBUG=1", 448 | "$(inherited)", 449 | ); 450 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 451 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 452 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 453 | GCC_WARN_UNDECLARED_SELECTOR = YES; 454 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 455 | GCC_WARN_UNUSED_FUNCTION = YES; 456 | GCC_WARN_UNUSED_VARIABLE = YES; 457 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 458 | ONLY_ACTIVE_ARCH = YES; 459 | SDKROOT = iphoneos; 460 | TARGETED_DEVICE_FAMILY = "1,2"; 461 | }; 462 | name = Debug; 463 | }; 464 | 6003F5BE195388D20070C39A /* Release */ = { 465 | isa = XCBuildConfiguration; 466 | buildSettings = { 467 | ALWAYS_SEARCH_USER_PATHS = NO; 468 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 469 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 470 | CLANG_CXX_LIBRARY = "libc++"; 471 | CLANG_ENABLE_MODULES = YES; 472 | CLANG_ENABLE_OBJC_ARC = YES; 473 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 474 | CLANG_WARN_BOOL_CONVERSION = YES; 475 | CLANG_WARN_COMMA = YES; 476 | CLANG_WARN_CONSTANT_CONVERSION = YES; 477 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 478 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 479 | CLANG_WARN_EMPTY_BODY = YES; 480 | CLANG_WARN_ENUM_CONVERSION = YES; 481 | CLANG_WARN_INFINITE_RECURSION = YES; 482 | CLANG_WARN_INT_CONVERSION = YES; 483 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 484 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 485 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 486 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 487 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 488 | CLANG_WARN_STRICT_PROTOTYPES = YES; 489 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 490 | CLANG_WARN_UNREACHABLE_CODE = YES; 491 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 492 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 493 | COPY_PHASE_STRIP = YES; 494 | ENABLE_NS_ASSERTIONS = NO; 495 | ENABLE_STRICT_OBJC_MSGSEND = YES; 496 | GCC_C_LANGUAGE_STANDARD = gnu99; 497 | GCC_NO_COMMON_BLOCKS = YES; 498 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 499 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 500 | GCC_WARN_UNDECLARED_SELECTOR = YES; 501 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 502 | GCC_WARN_UNUSED_FUNCTION = YES; 503 | GCC_WARN_UNUSED_VARIABLE = YES; 504 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 505 | SDKROOT = iphoneos; 506 | TARGETED_DEVICE_FAMILY = "1,2"; 507 | VALIDATE_PRODUCT = YES; 508 | }; 509 | name = Release; 510 | }; 511 | 6003F5C0195388D20070C39A /* Debug */ = { 512 | isa = XCBuildConfiguration; 513 | baseConfigurationReference = 2E2D4C1B288E0F7E4AE59C41 /* Pods-TQNavigationBarUnderLine_Example.debug.xcconfig */; 514 | buildSettings = { 515 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 516 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 517 | GCC_PREFIX_HEADER = "TQNavigationBarUnderLine/TQNavigationBarUnderLine-Prefix.pch"; 518 | INFOPLIST_FILE = "TQNavigationBarUnderLine/TQNavigationBarUnderLine-Info.plist"; 519 | MODULE_NAME = ExampleApp; 520 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; 521 | PRODUCT_NAME = "$(TARGET_NAME)"; 522 | WRAPPER_EXTENSION = app; 523 | }; 524 | name = Debug; 525 | }; 526 | 6003F5C1195388D20070C39A /* Release */ = { 527 | isa = XCBuildConfiguration; 528 | baseConfigurationReference = E4DB985832A2325674BFF6A9 /* Pods-TQNavigationBarUnderLine_Example.release.xcconfig */; 529 | buildSettings = { 530 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 531 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 532 | GCC_PREFIX_HEADER = "TQNavigationBarUnderLine/TQNavigationBarUnderLine-Prefix.pch"; 533 | INFOPLIST_FILE = "TQNavigationBarUnderLine/TQNavigationBarUnderLine-Info.plist"; 534 | MODULE_NAME = ExampleApp; 535 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; 536 | PRODUCT_NAME = "$(TARGET_NAME)"; 537 | WRAPPER_EXTENSION = app; 538 | }; 539 | name = Release; 540 | }; 541 | 6003F5C3195388D20070C39A /* Debug */ = { 542 | isa = XCBuildConfiguration; 543 | baseConfigurationReference = 7A6FDB601E6D9D39EAE563EC /* Pods-TQNavigationBarUnderLine_Tests.debug.xcconfig */; 544 | buildSettings = { 545 | BUNDLE_LOADER = "$(TEST_HOST)"; 546 | FRAMEWORK_SEARCH_PATHS = ( 547 | "$(SDKROOT)/Developer/Library/Frameworks", 548 | "$(inherited)", 549 | "$(DEVELOPER_FRAMEWORKS_DIR)", 550 | ); 551 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 552 | GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch"; 553 | GCC_PREPROCESSOR_DEFINITIONS = ( 554 | "DEBUG=1", 555 | "$(inherited)", 556 | ); 557 | INFOPLIST_FILE = "Tests/Tests-Info.plist"; 558 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; 559 | PRODUCT_NAME = "$(TARGET_NAME)"; 560 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TQNavigationBarUnderLine_Example.app/TQNavigationBarUnderLine_Example"; 561 | WRAPPER_EXTENSION = xctest; 562 | }; 563 | name = Debug; 564 | }; 565 | 6003F5C4195388D20070C39A /* Release */ = { 566 | isa = XCBuildConfiguration; 567 | baseConfigurationReference = 81D02D5035233208BFBC00DD /* Pods-TQNavigationBarUnderLine_Tests.release.xcconfig */; 568 | buildSettings = { 569 | BUNDLE_LOADER = "$(TEST_HOST)"; 570 | FRAMEWORK_SEARCH_PATHS = ( 571 | "$(SDKROOT)/Developer/Library/Frameworks", 572 | "$(inherited)", 573 | "$(DEVELOPER_FRAMEWORKS_DIR)", 574 | ); 575 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 576 | GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch"; 577 | INFOPLIST_FILE = "Tests/Tests-Info.plist"; 578 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; 579 | PRODUCT_NAME = "$(TARGET_NAME)"; 580 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TQNavigationBarUnderLine_Example.app/TQNavigationBarUnderLine_Example"; 581 | WRAPPER_EXTENSION = xctest; 582 | }; 583 | name = Release; 584 | }; 585 | /* End XCBuildConfiguration section */ 586 | 587 | /* Begin XCConfigurationList section */ 588 | 6003F585195388D10070C39A /* Build configuration list for PBXProject "TQNavigationBarUnderLine" */ = { 589 | isa = XCConfigurationList; 590 | buildConfigurations = ( 591 | 6003F5BD195388D20070C39A /* Debug */, 592 | 6003F5BE195388D20070C39A /* Release */, 593 | ); 594 | defaultConfigurationIsVisible = 0; 595 | defaultConfigurationName = Release; 596 | }; 597 | 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "TQNavigationBarUnderLine_Example" */ = { 598 | isa = XCConfigurationList; 599 | buildConfigurations = ( 600 | 6003F5C0195388D20070C39A /* Debug */, 601 | 6003F5C1195388D20070C39A /* Release */, 602 | ); 603 | defaultConfigurationIsVisible = 0; 604 | defaultConfigurationName = Release; 605 | }; 606 | 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "TQNavigationBarUnderLine_Tests" */ = { 607 | isa = XCConfigurationList; 608 | buildConfigurations = ( 609 | 6003F5C3195388D20070C39A /* Debug */, 610 | 6003F5C4195388D20070C39A /* Release */, 611 | ); 612 | defaultConfigurationIsVisible = 0; 613 | defaultConfigurationName = Release; 614 | }; 615 | /* End XCConfigurationList section */ 616 | }; 617 | rootObject = 6003F582195388D10070C39A /* Project object */; 618 | } 619 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine.xcodeproj/xcshareddata/xcschemes/TQNavigationBarUnderLine-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 53 | 54 | 64 | 66 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 85 | 91 | 92 | 93 | 94 | 96 | 97 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine/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 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine/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 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine/Images.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 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine/TQAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // TQAppDelegate.h 3 | // TQNavigationBarUnderLine 4 | // 5 | // Created by 443054369@qq.com on 07/13/2018. 6 | // Copyright (c) 2018 443054369@qq.com. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @interface TQAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine/TQAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // TQAppDelegate.m 3 | // TQNavigationBarUnderLine 4 | // 5 | // Created by 443054369@qq.com on 07/13/2018. 6 | // Copyright (c) 2018 443054369@qq.com. All rights reserved. 7 | // 8 | 9 | #import "TQAppDelegate.h" 10 | #import "TQViewController.h" 11 | 12 | @implementation TQAppDelegate 13 | 14 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 15 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 16 | 17 | TQViewController *viewController = [[TQViewController alloc] init]; 18 | viewController.title = @"Home"; 19 | self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:viewController];; 20 | [self.window makeKeyAndVisible]; 21 | return YES; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine/TQNavigationBarUnderLine-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 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 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UIRequiredDeviceCapabilities 32 | 33 | armv7 34 | 35 | UISupportedInterfaceOrientations 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationLandscapeLeft 39 | UIInterfaceOrientationLandscapeRight 40 | 41 | UISupportedInterfaceOrientations~ipad 42 | 43 | UIInterfaceOrientationPortrait 44 | UIInterfaceOrientationPortraitUpsideDown 45 | UIInterfaceOrientationLandscapeLeft 46 | UIInterfaceOrientationLandscapeRight 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine/TQNavigationBarUnderLine-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 UIKit; 15 | @import Foundation; 16 | #endif 17 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine/TQViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TQViewController.h 3 | // TQNavigationBarUnderLine 4 | // 5 | // Created by 443054369@qq.com on 07/13/2018. 6 | // Copyright (c) 2018 443054369@qq.com. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @interface TQViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine/TQViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // TQViewController.m 3 | // TQNavigationBarUnderLine 4 | // 5 | // Created by 443054369@qq.com on 07/13/2018. 6 | // Copyright (c) 2018 443054369@qq.com. All rights reserved. 7 | // 8 | 9 | #import "TQViewController.h" 10 | #import 11 | 12 | @interface TQViewController () 13 | 14 | @end 15 | 16 | @implementation TQViewController 17 | 18 | - (void)viewDidLoad { 19 | [super viewDidLoad]; 20 | [self.view setBackgroundColor:[UIColor colorWithRed: 0.9118 green: 0.9118 blue: 0.9118 alpha: 1.0]]; 21 | [self.navigationController.navigationBar ul_setUnderLineColor:[UIColor redColor]]; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/TQNavigationBarUnderLine/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // TQNavigationBarUnderLine 4 | // 5 | // Created by 443054369@qq.com on 07/13/2018. 6 | // Copyright (c) 2018 443054369@qq.com. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | #import "TQAppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) 13 | { 14 | @autoreleasepool { 15 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([TQAppDelegate class])); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Example/Tests/Tests-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 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Example/Tests/Tests-Prefix.pch: -------------------------------------------------------------------------------- 1 | // The contents of this file are implicitly included at the beginning of every test case source file. 2 | 3 | #ifdef __OBJC__ 4 | 5 | 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /Example/Tests/Tests.m: -------------------------------------------------------------------------------- 1 | // 2 | // TQNavigationBarUnderLineTests.m 3 | // TQNavigationBarUnderLineTests 4 | // 5 | // Created by 443054369@qq.com on 07/13/2018. 6 | // Copyright (c) 2018 443054369@qq.com. All rights reserved. 7 | // 8 | 9 | @import XCTest; 10 | 11 | @interface Tests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation Tests 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 | 36 | -------------------------------------------------------------------------------- /Example/Tests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 tinyq 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TQNavigationBarUnderLine 2 | 3 | [![Version](https://img.shields.io/cocoapods/v/TQNavigationBarUnderLine.svg?style=flat)](https://cocoapods.org/pods/TQNavigationBarUnderLine) 4 | [![License](https://img.shields.io/cocoapods/l/TQNavigationBarUnderLine.svg?style=flat)](https://cocoapods.org/pods/TQNavigationBarUnderLine) 5 | [![Platform](https://img.shields.io/cocoapods/p/TQNavigationBarUnderLine.svg?style=flat)](https://cocoapods.org/pods/TQNavigationBarUnderLine) 6 | 7 | Easy way to set under line Color for UINavigationBar (iOS7 available) . 8 | 9 | ## Example 10 | 11 | 12 | ![Mou icon](images/demo.jpg) 13 | 14 | ## Installation 15 | 16 | TQNavigationBarUnderLine is available through [CocoaPods](https://cocoapods.org). To install 17 | it, simply add the following line to your Podfile: 18 | 19 | ```ruby 20 | pod 'TQNavigationBarUnderLine' 21 | ``` 22 | 23 | ## Usage 24 | 25 | import 26 | 27 | ```objective-c 28 | 29 | #import 30 | // or 31 | @import TQNavigationBarUnderLine; 32 | 33 | ``` 34 | 35 | set 36 | 37 | ```objective-c 38 | 39 | [self.navigationController.navigationBar ul_setUnderLineColor:[UIColor redColor]]; 40 | 41 | ``` 42 | 43 | remove 44 | 45 | ```objective-c 46 | 47 | [self.navigationController.navigationBar ul_reset]; 48 | 49 | ``` 50 | 51 | ## Author 52 | 53 | tinyqf@gmail.com 54 | 55 | ## License 56 | 57 | TQNavigationBarUnderLine is available under the MIT license. See the LICENSE file for more info. 58 | -------------------------------------------------------------------------------- /TQNavigationBarUnderLine.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "TQNavigationBarUnderLine" 3 | s.version = "0.1.1" 4 | s.summary = "Easy way to set under line Color for iOS UINavigationBar." 5 | 6 | s.description = <<-DESC 7 | A UINavigationBar category, set a under line in NavigationBar UI. 8 | DESC 9 | 10 | s.homepage = "https://github.com/TinyQ/TQNavigationBarUnderLine" 11 | s.license = { :type => "MIT", :file => "LICENSE" } 12 | s.author = { "qfu" => "tinyqf@gmial.com" } 13 | s.ios.deployment_target = "7.0" 14 | s.source = { :git => "https://github.com/TinyQ/TQNavigationBarUnderLine.git", :tag => "#{s.version}" } 15 | s.source_files = "TQNavigationBarUnderLine/Classes/**/*" 16 | end 17 | -------------------------------------------------------------------------------- /TQNavigationBarUnderLine/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TinyQ/TQNavigationBarUnderLine/df05372620f642c871cbb667a59f8075920f7f73/TQNavigationBarUnderLine/Assets/.gitkeep -------------------------------------------------------------------------------- /TQNavigationBarUnderLine/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TinyQ/TQNavigationBarUnderLine/df05372620f642c871cbb667a59f8075920f7f73/TQNavigationBarUnderLine/Classes/.gitkeep -------------------------------------------------------------------------------- /TQNavigationBarUnderLine/Classes/TQNavigationBarUnderLine.h: -------------------------------------------------------------------------------- 1 | // 2 | // TQNavigationBarUnderLine.h 3 | // TQNavigationBarUnderLine 4 | // 5 | // Created by qfu on 2018/7/13. 6 | // 7 | 8 | #import 9 | 10 | //! Project version number for TQNavigationBarUnderLine. 11 | FOUNDATION_EXPORT double TQNavigationBarUnderLineVersionNumber; 12 | 13 | //! Project version string for TQNavigationBarUnderLine. 14 | FOUNDATION_EXPORT const unsigned char TQNavigationBarUnderLineVersionString[]; 15 | -------------------------------------------------------------------------------- /TQNavigationBarUnderLine/Classes/UINavigationBar+UnderLine.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationBar+UnderLine.h 3 | // TQNavigationBarUnderLine 4 | // 5 | // Created by qfu on 8/19/15. 6 | // Copyright (c) 2015 qfu. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UINavigationBar (UnderLine) 12 | 13 | /** 14 | The ender line overlay view. 15 | */ 16 | @property (nonatomic, strong, readonly) UIView *overlay; 17 | 18 | /** 19 | Add overlay under line view in UINavigationBar`s ShadowView with color background. 20 | 21 | @param color line background color. 22 | */ 23 | - (void)ul_setUnderLineColor:(UIColor *)color; 24 | 25 | /** 26 | remove under line view. 27 | */ 28 | - (void)ul_reset; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /TQNavigationBarUnderLine/Classes/UINavigationBar+UnderLine.m: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationBar+UnderLine.m 3 | // TQNavigationBarUnderLine 4 | // 5 | // Created by qfu on 8/19/15. 6 | // Copyright (c) 2015 qfu. All rights reserved. 7 | // 8 | 9 | #import "UINavigationBar+UnderLine.h" 10 | #import 11 | 12 | // before iOS 10 use _UINavigationBarBackground 13 | static NSString *const UINavigationBarBackground = @"_UINavigationBarBackground"; 14 | // after iOS 10 use _UIBarBackground 15 | static NSString *const UIBarBackground = @"_UIBarBackground"; 16 | 17 | static NSString *const ShadowView = @"_shadowView"; 18 | 19 | @implementation UINavigationBar (UnderLine) 20 | @dynamic overlay; 21 | 22 | - (UIView *)overlay { 23 | return objc_getAssociatedObject(self, @selector(overlay)); 24 | } 25 | 26 | - (void)setOverlay:(UIView *)overlay { 27 | objc_setAssociatedObject(self, @selector(overlay), overlay, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 28 | } 29 | 30 | #pragma mark - public 31 | 32 | - (void)ul_setUnderLineColor:(UIColor *)color { 33 | if (!self.overlay) { 34 | UIImageView *shadow = nil; 35 | NSArray *subviews = [self subviews]; 36 | for (UIView *view in subviews) { 37 | NSString *viewName = NSStringFromClass([view class]); 38 | if ([viewName isEqualToString:UINavigationBarBackground] || 39 | [viewName isEqualToString:UIBarBackground]) { 40 | shadow = [view valueForKey:ShadowView]; 41 | if (shadow == nil) { 42 | return; 43 | } 44 | 45 | self.overlay = [[UIView alloc] initWithFrame:shadow.frame]; 46 | self.overlay.userInteractionEnabled = NO; 47 | self.overlay.translatesAutoresizingMaskIntoConstraints = NO; 48 | [view addSubview:self.overlay]; 49 | [view addConstraints:[[self class] fillingConstraintsView:self.overlay superView:shadow]]; 50 | break; 51 | } 52 | 53 | if (shadow) { 54 | break; 55 | } 56 | } 57 | } 58 | 59 | if (self.overlay) { 60 | self.overlay.backgroundColor = color; 61 | } 62 | } 63 | 64 | - (void)ul_reset { 65 | [self.overlay removeFromSuperview]; 66 | self.overlay = nil; 67 | } 68 | 69 | #pragma mark - helper 70 | 71 | + (NSArray<__kindof NSLayoutConstraint *> *)fillingConstraintsView:(UIView *)view superView:(UIView *)superView { 72 | return @[ 73 | [NSLayoutConstraint constraintWithItem:view 74 | attribute:NSLayoutAttributeTop 75 | relatedBy:NSLayoutRelationEqual 76 | toItem:superView 77 | attribute:NSLayoutAttributeTop 78 | multiplier:1.0 79 | constant:0], 80 | [NSLayoutConstraint constraintWithItem:view 81 | attribute:NSLayoutAttributeBottom 82 | relatedBy:NSLayoutRelationEqual 83 | toItem:superView 84 | attribute:NSLayoutAttributeBottom 85 | multiplier:1.0 86 | constant:0], 87 | [NSLayoutConstraint constraintWithItem:view 88 | attribute:NSLayoutAttributeLeft 89 | relatedBy:NSLayoutRelationEqual 90 | toItem:superView 91 | attribute:NSLayoutAttributeLeft 92 | multiplier:1.0 93 | constant:0], 94 | [NSLayoutConstraint constraintWithItem:view 95 | attribute:NSLayoutAttributeRight 96 | relatedBy:NSLayoutRelationEqual 97 | toItem:superView 98 | attribute:NSLayoutAttributeRight 99 | multiplier:1.0 100 | constant:0] 101 | ]; 102 | } 103 | 104 | @end 105 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /images/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TinyQ/TQNavigationBarUnderLine/df05372620f642c871cbb667a59f8075920f7f73/images/demo.jpg --------------------------------------------------------------------------------