├── .gitignore ├── FlexibleTitleView1.gif ├── FlexibleTitleViewDEMO.xcodeproj ├── project.pbxproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── FlexibleTitleViewDEMO.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── FlexibleTitleViewDEMO ├── ViewController.h ├── ViewController.m ├── main.m └── other │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── icon-1024@2x.png │ │ ├── icon-20-ipad.png │ │ ├── icon-20@2x-ipad.png │ │ ├── icon-20@2x.png │ │ ├── icon-20@3x.png │ │ ├── icon-29-ipad.png │ │ ├── icon-29.png │ │ ├── icon-29@2x-ipad.png │ │ ├── icon-29@2x.png │ │ ├── icon-29@3x.png │ │ ├── icon-40.png │ │ ├── icon-40@2x.png │ │ ├── icon-40@3x.png │ │ ├── icon-50.png │ │ ├── icon-50@2x.png │ │ ├── icon-57.png │ │ ├── icon-57@2x.png │ │ ├── icon-60@2x.png │ │ ├── icon-60@3x.png │ │ ├── icon-72.png │ │ ├── icon-72@2x.png │ │ ├── icon-76.png │ │ ├── icon-76@2x.png │ │ └── icon-83.5@2x.png │ ├── Contents.json │ └── LaunchImage.launchimage │ │ ├── 1024iPadPortraitWOSBiOS56_768x1004pt.png │ │ ├── 1024iPadPortraitWOSBiOS56_768x1004pt@2x.png │ │ ├── 1024iPadPortraitiOS56_768x1024pt.png │ │ ├── 1024iPadPortraitiOS56_768x1024pt@2x.png │ │ ├── 1024iPadPortraitiOS789_768x1024pt.png │ │ ├── 1024iPadPortraitiOS789_768x1024pt@2x.png │ │ ├── 1024iPhonePortraitiOS56_320x480pt.png │ │ ├── 1024iPhonePortraitiOS56_320x480pt@2x.png │ │ ├── 1024iPhonePortraitiOS56_320x568pt@2x.png │ │ ├── 1024iPhonePortraitiOS789_320x480pt@2x.png │ │ ├── 1024iPhonePortraitiOS789_320x568pt@2x.png │ │ ├── 1024iPhonePortraitiOS89_375x667pt@2x.png │ │ ├── 1024iPhonePortraitiOS89_414x736pt@3x.png │ │ └── Contents.json │ ├── FlexibleTitleViewDEMOTests │ ├── FlexibleTitleViewDEMOTests.m │ └── Info.plist │ ├── FlexibleTitleViewDEMOUITests │ ├── FlexibleTitleViewDEMOUITests.m │ └── Info.plist │ └── Info.plist ├── LICENSE ├── MSFlexibleTitleView.podspec ├── MSFlexibleTitleView ├── MSFlexibleTitleView.h ├── MSFlexibleTitleView.m └── redDot@2x.png ├── Podfile ├── Podfile.lock ├── Pods ├── Headers │ ├── Private │ │ └── MSFlexibleTitleView │ │ │ └── MSFlexibleTitleView.h │ └── Public │ │ └── MSFlexibleTitleView │ │ └── MSFlexibleTitleView.h ├── MSFlexibleTitleView │ ├── LICENSE │ ├── MSFlexibleTitleView │ │ ├── MSFlexibleTitleView.h │ │ └── MSFlexibleTitleView.m │ └── README.md ├── Manifest.lock ├── Pods.xcodeproj │ └── project.pbxproj └── Target Support Files │ ├── MSFlexibleTitleView │ ├── MSFlexibleTitleView-dummy.m │ ├── MSFlexibleTitleView-prefix.pch │ └── MSFlexibleTitleView.xcconfig │ ├── Pods-FlexibleTitleViewDEMO │ ├── Pods-FlexibleTitleViewDEMO-acknowledgements.markdown │ ├── Pods-FlexibleTitleViewDEMO-acknowledgements.plist │ ├── Pods-FlexibleTitleViewDEMO-dummy.m │ ├── Pods-FlexibleTitleViewDEMO-frameworks.sh │ ├── Pods-FlexibleTitleViewDEMO-resources.sh │ ├── Pods-FlexibleTitleViewDEMO.debug.xcconfig │ └── Pods-FlexibleTitleViewDEMO.release.xcconfig │ ├── Pods-FlexibleTitleViewDEMOTests │ ├── Pods-FlexibleTitleViewDEMOTests-acknowledgements.markdown │ ├── Pods-FlexibleTitleViewDEMOTests-acknowledgements.plist │ ├── Pods-FlexibleTitleViewDEMOTests-dummy.m │ ├── Pods-FlexibleTitleViewDEMOTests-frameworks.sh │ ├── Pods-FlexibleTitleViewDEMOTests-resources.sh │ ├── Pods-FlexibleTitleViewDEMOTests.debug.xcconfig │ └── Pods-FlexibleTitleViewDEMOTests.release.xcconfig │ └── Pods-FlexibleTitleViewDEMOUITests │ ├── Pods-FlexibleTitleViewDEMOUITests-acknowledgements.markdown │ ├── Pods-FlexibleTitleViewDEMOUITests-acknowledgements.plist │ ├── Pods-FlexibleTitleViewDEMOUITests-dummy.m │ ├── Pods-FlexibleTitleViewDEMOUITests-frameworks.sh │ ├── Pods-FlexibleTitleViewDEMOUITests-resources.sh │ ├── Pods-FlexibleTitleViewDEMOUITests.debug.xcconfig │ └── Pods-FlexibleTitleViewDEMOUITests.release.xcconfig └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## User settings 6 | xcuserdata/ 7 | 8 | ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) 9 | *.xcscmblueprint 10 | *.xccheckout 11 | 12 | ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) 13 | build/ 14 | DerivedData/ 15 | *.moved-aside 16 | *.pbxuser 17 | !default.pbxuser 18 | *.mode1v3 19 | !default.mode1v3 20 | *.mode2v3 21 | !default.mode2v3 22 | *.perspectivev3 23 | !default.perspectivev3 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | 28 | ## App packaging 29 | *.ipa 30 | *.dSYM.zip 31 | *.dSYM 32 | 33 | # CocoaPods 34 | # 35 | # We recommend against adding the Pods directory to your .gitignore. However 36 | # you should judge for yourself, the pros and cons are mentioned at: 37 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 38 | # 39 | # Pods/ 40 | # 41 | # Add this line if you want to avoid checking in source code from the Xcode workspace 42 | # *.xcworkspace 43 | 44 | # Carthage 45 | # 46 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 47 | # Carthage/Checkouts 48 | 49 | Carthage/Build/ 50 | 51 | # fastlane 52 | # 53 | # It is recommended to not store the screenshots in the git repo. 54 | # Instead, use fastlane to re-generate the screenshots whenever they are needed. 55 | # For more information about the recommended setup visit: 56 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 57 | 58 | fastlane/report.xml 59 | fastlane/Preview.html 60 | fastlane/screenshots/**/*.png 61 | fastlane/test_output 62 | 63 | # Code Injection 64 | # 65 | # After new code Injection tools there's a generated folder /iOSInjectionProject 66 | # https://github.com/johnno1962/injectionforxcode 67 | 68 | iOSInjectionProject/ 69 | -------------------------------------------------------------------------------- /FlexibleTitleView1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleView1.gif -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 0EF2893221555AE200718D91 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EF2893121555AE200718D91 /* main.m */; }; 11 | 0EF2893521555AE200718D91 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EF2893421555AE200718D91 /* AppDelegate.m */; }; 12 | 0EF2893821555AE200718D91 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EF2893721555AE200718D91 /* ViewController.m */; }; 13 | 0EF2893D21555AE200718D91 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0EF2893C21555AE200718D91 /* Assets.xcassets */; }; 14 | 0EF2894B21555AE200718D91 /* FlexibleTitleViewDEMOTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EF2894A21555AE200718D91 /* FlexibleTitleViewDEMOTests.m */; }; 15 | 0EF2895621555AE200718D91 /* FlexibleTitleViewDEMOUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EF2895521555AE200718D91 /* FlexibleTitleViewDEMOUITests.m */; }; 16 | 4EB0E6E6B3733E776FE225CD /* libPods-FlexibleTitleViewDEMOTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FFD89CD57A98FABC84E62022 /* libPods-FlexibleTitleViewDEMOTests.a */; }; 17 | B1654BB2A2C6346B3A5641DC /* libPods-FlexibleTitleViewDEMO.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 224AFEB3451B9CE29A0A7E41 /* libPods-FlexibleTitleViewDEMO.a */; }; 18 | C37FFBD864A9CAE51F3FA10A /* libPods-FlexibleTitleViewDEMOUITests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5638CB393AF434BB8A326B8A /* libPods-FlexibleTitleViewDEMOUITests.a */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXContainerItemProxy section */ 22 | 0EF2894721555AE200718D91 /* PBXContainerItemProxy */ = { 23 | isa = PBXContainerItemProxy; 24 | containerPortal = 0EF2892521555AE200718D91 /* Project object */; 25 | proxyType = 1; 26 | remoteGlobalIDString = 0EF2892C21555AE200718D91; 27 | remoteInfo = FlexibleTitleViewDEMO; 28 | }; 29 | 0EF2895221555AE200718D91 /* PBXContainerItemProxy */ = { 30 | isa = PBXContainerItemProxy; 31 | containerPortal = 0EF2892521555AE200718D91 /* Project object */; 32 | proxyType = 1; 33 | remoteGlobalIDString = 0EF2892C21555AE200718D91; 34 | remoteInfo = FlexibleTitleViewDEMO; 35 | }; 36 | /* End PBXContainerItemProxy section */ 37 | 38 | /* Begin PBXFileReference section */ 39 | 0E54FCC62156CFBC00F46145 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 40 | 0EF2892D21555AE200718D91 /* FlexibleTitleViewDEMO.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FlexibleTitleViewDEMO.app; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 0EF2893121555AE200718D91 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 42 | 0EF2893321555AE200718D91 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 43 | 0EF2893421555AE200718D91 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 44 | 0EF2893621555AE200718D91 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 45 | 0EF2893721555AE200718D91 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 46 | 0EF2893C21555AE200718D91 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 47 | 0EF2894121555AE200718D91 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 48 | 0EF2894621555AE200718D91 /* FlexibleTitleViewDEMOTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FlexibleTitleViewDEMOTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 49 | 0EF2894A21555AE200718D91 /* FlexibleTitleViewDEMOTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FlexibleTitleViewDEMOTests.m; sourceTree = ""; }; 50 | 0EF2894C21555AE200718D91 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 51 | 0EF2895121555AE200718D91 /* FlexibleTitleViewDEMOUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FlexibleTitleViewDEMOUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 52 | 0EF2895521555AE200718D91 /* FlexibleTitleViewDEMOUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FlexibleTitleViewDEMOUITests.m; sourceTree = ""; }; 53 | 0EF2895721555AE300718D91 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 54 | 224AFEB3451B9CE29A0A7E41 /* libPods-FlexibleTitleViewDEMO.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FlexibleTitleViewDEMO.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 55 | 40FDB28E46A89D2D94E94356 /* Pods-FlexibleTitleViewDEMOTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlexibleTitleViewDEMOTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-FlexibleTitleViewDEMOTests/Pods-FlexibleTitleViewDEMOTests.debug.xcconfig"; sourceTree = ""; }; 56 | 5638CB393AF434BB8A326B8A /* libPods-FlexibleTitleViewDEMOUITests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FlexibleTitleViewDEMOUITests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 57 | 7B42F79875F00F330F8A2340 /* Pods-FlexibleTitleViewDEMOTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlexibleTitleViewDEMOTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-FlexibleTitleViewDEMOTests/Pods-FlexibleTitleViewDEMOTests.release.xcconfig"; sourceTree = ""; }; 58 | 82BBB83C82600B2254CCC862 /* Pods-FlexibleTitleViewDEMOUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlexibleTitleViewDEMOUITests.release.xcconfig"; path = "Pods/Target Support Files/Pods-FlexibleTitleViewDEMOUITests/Pods-FlexibleTitleViewDEMOUITests.release.xcconfig"; sourceTree = ""; }; 59 | 895AE8A343CAC2BA025EEFFD /* Pods-FlexibleTitleViewDEMO.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlexibleTitleViewDEMO.release.xcconfig"; path = "Pods/Target Support Files/Pods-FlexibleTitleViewDEMO/Pods-FlexibleTitleViewDEMO.release.xcconfig"; sourceTree = ""; }; 60 | B4FD3E956369A502781147DF /* Pods-FlexibleTitleViewDEMOUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlexibleTitleViewDEMOUITests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-FlexibleTitleViewDEMOUITests/Pods-FlexibleTitleViewDEMOUITests.debug.xcconfig"; sourceTree = ""; }; 61 | BF28C1DEFA4FC319C731EDFD /* Pods-FlexibleTitleViewDEMO.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlexibleTitleViewDEMO.debug.xcconfig"; path = "Pods/Target Support Files/Pods-FlexibleTitleViewDEMO/Pods-FlexibleTitleViewDEMO.debug.xcconfig"; sourceTree = ""; }; 62 | FFD89CD57A98FABC84E62022 /* libPods-FlexibleTitleViewDEMOTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FlexibleTitleViewDEMOTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 63 | /* End PBXFileReference section */ 64 | 65 | /* Begin PBXFrameworksBuildPhase section */ 66 | 0EF2892A21555AE200718D91 /* Frameworks */ = { 67 | isa = PBXFrameworksBuildPhase; 68 | buildActionMask = 2147483647; 69 | files = ( 70 | B1654BB2A2C6346B3A5641DC /* libPods-FlexibleTitleViewDEMO.a in Frameworks */, 71 | ); 72 | runOnlyForDeploymentPostprocessing = 0; 73 | }; 74 | 0EF2894321555AE200718D91 /* Frameworks */ = { 75 | isa = PBXFrameworksBuildPhase; 76 | buildActionMask = 2147483647; 77 | files = ( 78 | 4EB0E6E6B3733E776FE225CD /* libPods-FlexibleTitleViewDEMOTests.a in Frameworks */, 79 | ); 80 | runOnlyForDeploymentPostprocessing = 0; 81 | }; 82 | 0EF2894E21555AE200718D91 /* Frameworks */ = { 83 | isa = PBXFrameworksBuildPhase; 84 | buildActionMask = 2147483647; 85 | files = ( 86 | C37FFBD864A9CAE51F3FA10A /* libPods-FlexibleTitleViewDEMOUITests.a in Frameworks */, 87 | ); 88 | runOnlyForDeploymentPostprocessing = 0; 89 | }; 90 | /* End PBXFrameworksBuildPhase section */ 91 | 92 | /* Begin PBXGroup section */ 93 | 0E54FCC52156CFBC00F46145 /* Frameworks */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | 0E54FCC62156CFBC00F46145 /* UIKit.framework */, 97 | 224AFEB3451B9CE29A0A7E41 /* libPods-FlexibleTitleViewDEMO.a */, 98 | FFD89CD57A98FABC84E62022 /* libPods-FlexibleTitleViewDEMOTests.a */, 99 | 5638CB393AF434BB8A326B8A /* libPods-FlexibleTitleViewDEMOUITests.a */, 100 | ); 101 | name = Frameworks; 102 | sourceTree = ""; 103 | }; 104 | 0E658A492155657100AB1B00 /* other */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | 0EF2894121555AE200718D91 /* Info.plist */, 108 | 0EF2893321555AE200718D91 /* AppDelegate.h */, 109 | 0EF2893421555AE200718D91 /* AppDelegate.m */, 110 | 0EF2893C21555AE200718D91 /* Assets.xcassets */, 111 | 0EF2893021555AE200718D91 /* Supporting Files */, 112 | 0EF2894921555AE200718D91 /* FlexibleTitleViewDEMOTests */, 113 | 0EF2895421555AE200718D91 /* FlexibleTitleViewDEMOUITests */, 114 | ); 115 | path = other; 116 | sourceTree = ""; 117 | }; 118 | 0EF2892421555AE200718D91 = { 119 | isa = PBXGroup; 120 | children = ( 121 | 0EF2892F21555AE200718D91 /* FlexibleTitleViewDEMO */, 122 | 0EF2892E21555AE200718D91 /* Products */, 123 | 0E54FCC52156CFBC00F46145 /* Frameworks */, 124 | 354FB8A8BD718B49EB3CF4D0 /* Pods */, 125 | ); 126 | sourceTree = ""; 127 | }; 128 | 0EF2892E21555AE200718D91 /* Products */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | 0EF2892D21555AE200718D91 /* FlexibleTitleViewDEMO.app */, 132 | 0EF2894621555AE200718D91 /* FlexibleTitleViewDEMOTests.xctest */, 133 | 0EF2895121555AE200718D91 /* FlexibleTitleViewDEMOUITests.xctest */, 134 | ); 135 | name = Products; 136 | sourceTree = ""; 137 | }; 138 | 0EF2892F21555AE200718D91 /* FlexibleTitleViewDEMO */ = { 139 | isa = PBXGroup; 140 | children = ( 141 | 0EF2893621555AE200718D91 /* ViewController.h */, 142 | 0EF2893721555AE200718D91 /* ViewController.m */, 143 | 0E658A492155657100AB1B00 /* other */, 144 | ); 145 | path = FlexibleTitleViewDEMO; 146 | sourceTree = ""; 147 | }; 148 | 0EF2893021555AE200718D91 /* Supporting Files */ = { 149 | isa = PBXGroup; 150 | children = ( 151 | 0EF2893121555AE200718D91 /* main.m */, 152 | ); 153 | name = "Supporting Files"; 154 | path = ..; 155 | sourceTree = ""; 156 | }; 157 | 0EF2894921555AE200718D91 /* FlexibleTitleViewDEMOTests */ = { 158 | isa = PBXGroup; 159 | children = ( 160 | 0EF2894A21555AE200718D91 /* FlexibleTitleViewDEMOTests.m */, 161 | 0EF2894C21555AE200718D91 /* Info.plist */, 162 | ); 163 | path = FlexibleTitleViewDEMOTests; 164 | sourceTree = ""; 165 | }; 166 | 0EF2895421555AE200718D91 /* FlexibleTitleViewDEMOUITests */ = { 167 | isa = PBXGroup; 168 | children = ( 169 | 0EF2895521555AE200718D91 /* FlexibleTitleViewDEMOUITests.m */, 170 | 0EF2895721555AE300718D91 /* Info.plist */, 171 | ); 172 | path = FlexibleTitleViewDEMOUITests; 173 | sourceTree = ""; 174 | }; 175 | 354FB8A8BD718B49EB3CF4D0 /* Pods */ = { 176 | isa = PBXGroup; 177 | children = ( 178 | BF28C1DEFA4FC319C731EDFD /* Pods-FlexibleTitleViewDEMO.debug.xcconfig */, 179 | 895AE8A343CAC2BA025EEFFD /* Pods-FlexibleTitleViewDEMO.release.xcconfig */, 180 | 40FDB28E46A89D2D94E94356 /* Pods-FlexibleTitleViewDEMOTests.debug.xcconfig */, 181 | 7B42F79875F00F330F8A2340 /* Pods-FlexibleTitleViewDEMOTests.release.xcconfig */, 182 | B4FD3E956369A502781147DF /* Pods-FlexibleTitleViewDEMOUITests.debug.xcconfig */, 183 | 82BBB83C82600B2254CCC862 /* Pods-FlexibleTitleViewDEMOUITests.release.xcconfig */, 184 | ); 185 | name = Pods; 186 | sourceTree = ""; 187 | }; 188 | /* End PBXGroup section */ 189 | 190 | /* Begin PBXNativeTarget section */ 191 | 0EF2892C21555AE200718D91 /* FlexibleTitleViewDEMO */ = { 192 | isa = PBXNativeTarget; 193 | buildConfigurationList = 0EF2895A21555AE300718D91 /* Build configuration list for PBXNativeTarget "FlexibleTitleViewDEMO" */; 194 | buildPhases = ( 195 | 50500CA3815C0C91BFA46C06 /* [CP] Check Pods Manifest.lock */, 196 | 0EF2892921555AE200718D91 /* Sources */, 197 | 0EF2892A21555AE200718D91 /* Frameworks */, 198 | 0EF2892B21555AE200718D91 /* Resources */, 199 | ); 200 | buildRules = ( 201 | ); 202 | dependencies = ( 203 | ); 204 | name = FlexibleTitleViewDEMO; 205 | productName = FlexibleTitleViewDEMO; 206 | productReference = 0EF2892D21555AE200718D91 /* FlexibleTitleViewDEMO.app */; 207 | productType = "com.apple.product-type.application"; 208 | }; 209 | 0EF2894521555AE200718D91 /* FlexibleTitleViewDEMOTests */ = { 210 | isa = PBXNativeTarget; 211 | buildConfigurationList = 0EF2895D21555AE300718D91 /* Build configuration list for PBXNativeTarget "FlexibleTitleViewDEMOTests" */; 212 | buildPhases = ( 213 | 9C683613702288A1ACF9FF60 /* [CP] Check Pods Manifest.lock */, 214 | 0EF2894221555AE200718D91 /* Sources */, 215 | 0EF2894321555AE200718D91 /* Frameworks */, 216 | 0EF2894421555AE200718D91 /* Resources */, 217 | ); 218 | buildRules = ( 219 | ); 220 | dependencies = ( 221 | 0EF2894821555AE200718D91 /* PBXTargetDependency */, 222 | ); 223 | name = FlexibleTitleViewDEMOTests; 224 | productName = FlexibleTitleViewDEMOTests; 225 | productReference = 0EF2894621555AE200718D91 /* FlexibleTitleViewDEMOTests.xctest */; 226 | productType = "com.apple.product-type.bundle.unit-test"; 227 | }; 228 | 0EF2895021555AE200718D91 /* FlexibleTitleViewDEMOUITests */ = { 229 | isa = PBXNativeTarget; 230 | buildConfigurationList = 0EF2896021555AE300718D91 /* Build configuration list for PBXNativeTarget "FlexibleTitleViewDEMOUITests" */; 231 | buildPhases = ( 232 | 0CBD2F1ECDE6BB99A6728401 /* [CP] Check Pods Manifest.lock */, 233 | 0EF2894D21555AE200718D91 /* Sources */, 234 | 0EF2894E21555AE200718D91 /* Frameworks */, 235 | 0EF2894F21555AE200718D91 /* Resources */, 236 | ); 237 | buildRules = ( 238 | ); 239 | dependencies = ( 240 | 0EF2895321555AE200718D91 /* PBXTargetDependency */, 241 | ); 242 | name = FlexibleTitleViewDEMOUITests; 243 | productName = FlexibleTitleViewDEMOUITests; 244 | productReference = 0EF2895121555AE200718D91 /* FlexibleTitleViewDEMOUITests.xctest */; 245 | productType = "com.apple.product-type.bundle.ui-testing"; 246 | }; 247 | /* End PBXNativeTarget section */ 248 | 249 | /* Begin PBXProject section */ 250 | 0EF2892521555AE200718D91 /* Project object */ = { 251 | isa = PBXProject; 252 | attributes = { 253 | LastUpgradeCheck = 0910; 254 | ORGANIZATIONNAME = JZJ; 255 | TargetAttributes = { 256 | 0EF2892C21555AE200718D91 = { 257 | CreatedOnToolsVersion = 8.0; 258 | ProvisioningStyle = Manual; 259 | }; 260 | 0EF2894521555AE200718D91 = { 261 | CreatedOnToolsVersion = 8.0; 262 | ProvisioningStyle = Automatic; 263 | TestTargetID = 0EF2892C21555AE200718D91; 264 | }; 265 | 0EF2895021555AE200718D91 = { 266 | CreatedOnToolsVersion = 8.0; 267 | ProvisioningStyle = Automatic; 268 | TestTargetID = 0EF2892C21555AE200718D91; 269 | }; 270 | }; 271 | }; 272 | buildConfigurationList = 0EF2892821555AE200718D91 /* Build configuration list for PBXProject "FlexibleTitleViewDEMO" */; 273 | compatibilityVersion = "Xcode 3.2"; 274 | developmentRegion = English; 275 | hasScannedForEncodings = 0; 276 | knownRegions = ( 277 | en, 278 | Base, 279 | ); 280 | mainGroup = 0EF2892421555AE200718D91; 281 | productRefGroup = 0EF2892E21555AE200718D91 /* Products */; 282 | projectDirPath = ""; 283 | projectRoot = ""; 284 | targets = ( 285 | 0EF2892C21555AE200718D91 /* FlexibleTitleViewDEMO */, 286 | 0EF2894521555AE200718D91 /* FlexibleTitleViewDEMOTests */, 287 | 0EF2895021555AE200718D91 /* FlexibleTitleViewDEMOUITests */, 288 | ); 289 | }; 290 | /* End PBXProject section */ 291 | 292 | /* Begin PBXResourcesBuildPhase section */ 293 | 0EF2892B21555AE200718D91 /* Resources */ = { 294 | isa = PBXResourcesBuildPhase; 295 | buildActionMask = 2147483647; 296 | files = ( 297 | 0EF2893D21555AE200718D91 /* Assets.xcassets in Resources */, 298 | ); 299 | runOnlyForDeploymentPostprocessing = 0; 300 | }; 301 | 0EF2894421555AE200718D91 /* Resources */ = { 302 | isa = PBXResourcesBuildPhase; 303 | buildActionMask = 2147483647; 304 | files = ( 305 | ); 306 | runOnlyForDeploymentPostprocessing = 0; 307 | }; 308 | 0EF2894F21555AE200718D91 /* Resources */ = { 309 | isa = PBXResourcesBuildPhase; 310 | buildActionMask = 2147483647; 311 | files = ( 312 | ); 313 | runOnlyForDeploymentPostprocessing = 0; 314 | }; 315 | /* End PBXResourcesBuildPhase section */ 316 | 317 | /* Begin PBXShellScriptBuildPhase section */ 318 | 0CBD2F1ECDE6BB99A6728401 /* [CP] Check Pods Manifest.lock */ = { 319 | isa = PBXShellScriptBuildPhase; 320 | buildActionMask = 2147483647; 321 | files = ( 322 | ); 323 | inputPaths = ( 324 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 325 | "${PODS_ROOT}/Manifest.lock", 326 | ); 327 | name = "[CP] Check Pods Manifest.lock"; 328 | outputPaths = ( 329 | "$(DERIVED_FILE_DIR)/Pods-FlexibleTitleViewDEMOUITests-checkManifestLockResult.txt", 330 | ); 331 | runOnlyForDeploymentPostprocessing = 0; 332 | shellPath = /bin/sh; 333 | 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"; 334 | showEnvVarsInLog = 0; 335 | }; 336 | 50500CA3815C0C91BFA46C06 /* [CP] Check Pods Manifest.lock */ = { 337 | isa = PBXShellScriptBuildPhase; 338 | buildActionMask = 2147483647; 339 | files = ( 340 | ); 341 | inputPaths = ( 342 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 343 | "${PODS_ROOT}/Manifest.lock", 344 | ); 345 | name = "[CP] Check Pods Manifest.lock"; 346 | outputPaths = ( 347 | "$(DERIVED_FILE_DIR)/Pods-FlexibleTitleViewDEMO-checkManifestLockResult.txt", 348 | ); 349 | runOnlyForDeploymentPostprocessing = 0; 350 | shellPath = /bin/sh; 351 | 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"; 352 | showEnvVarsInLog = 0; 353 | }; 354 | 9C683613702288A1ACF9FF60 /* [CP] Check Pods Manifest.lock */ = { 355 | isa = PBXShellScriptBuildPhase; 356 | buildActionMask = 2147483647; 357 | files = ( 358 | ); 359 | inputPaths = ( 360 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 361 | "${PODS_ROOT}/Manifest.lock", 362 | ); 363 | name = "[CP] Check Pods Manifest.lock"; 364 | outputPaths = ( 365 | "$(DERIVED_FILE_DIR)/Pods-FlexibleTitleViewDEMOTests-checkManifestLockResult.txt", 366 | ); 367 | runOnlyForDeploymentPostprocessing = 0; 368 | shellPath = /bin/sh; 369 | 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"; 370 | showEnvVarsInLog = 0; 371 | }; 372 | /* End PBXShellScriptBuildPhase section */ 373 | 374 | /* Begin PBXSourcesBuildPhase section */ 375 | 0EF2892921555AE200718D91 /* Sources */ = { 376 | isa = PBXSourcesBuildPhase; 377 | buildActionMask = 2147483647; 378 | files = ( 379 | 0EF2893821555AE200718D91 /* ViewController.m in Sources */, 380 | 0EF2893521555AE200718D91 /* AppDelegate.m in Sources */, 381 | 0EF2893221555AE200718D91 /* main.m in Sources */, 382 | ); 383 | runOnlyForDeploymentPostprocessing = 0; 384 | }; 385 | 0EF2894221555AE200718D91 /* Sources */ = { 386 | isa = PBXSourcesBuildPhase; 387 | buildActionMask = 2147483647; 388 | files = ( 389 | 0EF2894B21555AE200718D91 /* FlexibleTitleViewDEMOTests.m in Sources */, 390 | ); 391 | runOnlyForDeploymentPostprocessing = 0; 392 | }; 393 | 0EF2894D21555AE200718D91 /* Sources */ = { 394 | isa = PBXSourcesBuildPhase; 395 | buildActionMask = 2147483647; 396 | files = ( 397 | 0EF2895621555AE200718D91 /* FlexibleTitleViewDEMOUITests.m in Sources */, 398 | ); 399 | runOnlyForDeploymentPostprocessing = 0; 400 | }; 401 | /* End PBXSourcesBuildPhase section */ 402 | 403 | /* Begin PBXTargetDependency section */ 404 | 0EF2894821555AE200718D91 /* PBXTargetDependency */ = { 405 | isa = PBXTargetDependency; 406 | target = 0EF2892C21555AE200718D91 /* FlexibleTitleViewDEMO */; 407 | targetProxy = 0EF2894721555AE200718D91 /* PBXContainerItemProxy */; 408 | }; 409 | 0EF2895321555AE200718D91 /* PBXTargetDependency */ = { 410 | isa = PBXTargetDependency; 411 | target = 0EF2892C21555AE200718D91 /* FlexibleTitleViewDEMO */; 412 | targetProxy = 0EF2895221555AE200718D91 /* PBXContainerItemProxy */; 413 | }; 414 | /* End PBXTargetDependency section */ 415 | 416 | /* Begin XCBuildConfiguration section */ 417 | 0EF2895821555AE300718D91 /* Debug */ = { 418 | isa = XCBuildConfiguration; 419 | buildSettings = { 420 | ALWAYS_SEARCH_USER_PATHS = NO; 421 | CLANG_ANALYZER_NONNULL = YES; 422 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 423 | CLANG_CXX_LIBRARY = "libc++"; 424 | CLANG_ENABLE_MODULES = YES; 425 | CLANG_ENABLE_OBJC_ARC = YES; 426 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 427 | CLANG_WARN_BOOL_CONVERSION = YES; 428 | CLANG_WARN_COMMA = YES; 429 | CLANG_WARN_CONSTANT_CONVERSION = YES; 430 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 431 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 432 | CLANG_WARN_EMPTY_BODY = YES; 433 | CLANG_WARN_ENUM_CONVERSION = YES; 434 | CLANG_WARN_INFINITE_RECURSION = YES; 435 | CLANG_WARN_INT_CONVERSION = YES; 436 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 437 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 438 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 439 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 440 | CLANG_WARN_STRICT_PROTOTYPES = YES; 441 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 442 | CLANG_WARN_SUSPICIOUS_MOVES = YES; 443 | CLANG_WARN_UNREACHABLE_CODE = YES; 444 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 445 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 446 | COPY_PHASE_STRIP = NO; 447 | DEBUG_INFORMATION_FORMAT = dwarf; 448 | ENABLE_STRICT_OBJC_MSGSEND = YES; 449 | ENABLE_TESTABILITY = YES; 450 | GCC_C_LANGUAGE_STANDARD = gnu99; 451 | GCC_DYNAMIC_NO_PIC = NO; 452 | GCC_NO_COMMON_BLOCKS = YES; 453 | GCC_OPTIMIZATION_LEVEL = 0; 454 | GCC_PREPROCESSOR_DEFINITIONS = ( 455 | "DEBUG=1", 456 | "$(inherited)", 457 | ); 458 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 459 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 460 | GCC_WARN_UNDECLARED_SELECTOR = YES; 461 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 462 | GCC_WARN_UNUSED_FUNCTION = YES; 463 | GCC_WARN_UNUSED_VARIABLE = YES; 464 | IPHONEOS_DEPLOYMENT_TARGET = 10.0; 465 | MTL_ENABLE_DEBUG_INFO = YES; 466 | ONLY_ACTIVE_ARCH = YES; 467 | SDKROOT = iphoneos; 468 | TARGETED_DEVICE_FAMILY = "1,2"; 469 | }; 470 | name = Debug; 471 | }; 472 | 0EF2895921555AE300718D91 /* Release */ = { 473 | isa = XCBuildConfiguration; 474 | buildSettings = { 475 | ALWAYS_SEARCH_USER_PATHS = NO; 476 | CLANG_ANALYZER_NONNULL = YES; 477 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 478 | CLANG_CXX_LIBRARY = "libc++"; 479 | CLANG_ENABLE_MODULES = YES; 480 | CLANG_ENABLE_OBJC_ARC = YES; 481 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 482 | CLANG_WARN_BOOL_CONVERSION = YES; 483 | CLANG_WARN_COMMA = YES; 484 | CLANG_WARN_CONSTANT_CONVERSION = YES; 485 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 486 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 487 | CLANG_WARN_EMPTY_BODY = YES; 488 | CLANG_WARN_ENUM_CONVERSION = YES; 489 | CLANG_WARN_INFINITE_RECURSION = YES; 490 | CLANG_WARN_INT_CONVERSION = YES; 491 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 492 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 493 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 494 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 495 | CLANG_WARN_STRICT_PROTOTYPES = YES; 496 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 497 | CLANG_WARN_SUSPICIOUS_MOVES = YES; 498 | CLANG_WARN_UNREACHABLE_CODE = YES; 499 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 500 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 501 | COPY_PHASE_STRIP = NO; 502 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 503 | ENABLE_NS_ASSERTIONS = NO; 504 | ENABLE_STRICT_OBJC_MSGSEND = YES; 505 | GCC_C_LANGUAGE_STANDARD = gnu99; 506 | GCC_NO_COMMON_BLOCKS = YES; 507 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 508 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 509 | GCC_WARN_UNDECLARED_SELECTOR = YES; 510 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 511 | GCC_WARN_UNUSED_FUNCTION = YES; 512 | GCC_WARN_UNUSED_VARIABLE = YES; 513 | IPHONEOS_DEPLOYMENT_TARGET = 10.0; 514 | MTL_ENABLE_DEBUG_INFO = NO; 515 | SDKROOT = iphoneos; 516 | TARGETED_DEVICE_FAMILY = "1,2"; 517 | VALIDATE_PRODUCT = YES; 518 | }; 519 | name = Release; 520 | }; 521 | 0EF2895B21555AE300718D91 /* Debug */ = { 522 | isa = XCBuildConfiguration; 523 | baseConfigurationReference = BF28C1DEFA4FC319C731EDFD /* Pods-FlexibleTitleViewDEMO.debug.xcconfig */; 524 | buildSettings = { 525 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 526 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 527 | CLANG_ENABLE_OBJC_WEAK = NO; 528 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 529 | CODE_SIGN_STYLE = Manual; 530 | DEVELOPMENT_TEAM = ""; 531 | INFOPLIST_FILE = FlexibleTitleViewDEMO/other/Info.plist; 532 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 533 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 534 | PRODUCT_BUNDLE_IDENTIFIER = jzj.FlexibleTitleViewDEMO; 535 | PRODUCT_NAME = "$(TARGET_NAME)"; 536 | PROVISIONING_PROFILE_SPECIFIER = ""; 537 | }; 538 | name = Debug; 539 | }; 540 | 0EF2895C21555AE300718D91 /* Release */ = { 541 | isa = XCBuildConfiguration; 542 | baseConfigurationReference = 895AE8A343CAC2BA025EEFFD /* Pods-FlexibleTitleViewDEMO.release.xcconfig */; 543 | buildSettings = { 544 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 545 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 546 | CLANG_ENABLE_OBJC_WEAK = NO; 547 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 548 | CODE_SIGN_STYLE = Manual; 549 | DEVELOPMENT_TEAM = ""; 550 | INFOPLIST_FILE = FlexibleTitleViewDEMO/other/Info.plist; 551 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 552 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 553 | PRODUCT_BUNDLE_IDENTIFIER = jzj.FlexibleTitleViewDEMO; 554 | PRODUCT_NAME = "$(TARGET_NAME)"; 555 | PROVISIONING_PROFILE_SPECIFIER = ""; 556 | }; 557 | name = Release; 558 | }; 559 | 0EF2895E21555AE300718D91 /* Debug */ = { 560 | isa = XCBuildConfiguration; 561 | baseConfigurationReference = 40FDB28E46A89D2D94E94356 /* Pods-FlexibleTitleViewDEMOTests.debug.xcconfig */; 562 | buildSettings = { 563 | BUNDLE_LOADER = "$(TEST_HOST)"; 564 | INFOPLIST_FILE = FlexibleTitleViewDEMOTests/Info.plist; 565 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 566 | PRODUCT_BUNDLE_IDENTIFIER = jzj.FlexibleTitleViewDEMOTests; 567 | PRODUCT_NAME = "$(TARGET_NAME)"; 568 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FlexibleTitleViewDEMO.app/FlexibleTitleViewDEMO"; 569 | }; 570 | name = Debug; 571 | }; 572 | 0EF2895F21555AE300718D91 /* Release */ = { 573 | isa = XCBuildConfiguration; 574 | baseConfigurationReference = 7B42F79875F00F330F8A2340 /* Pods-FlexibleTitleViewDEMOTests.release.xcconfig */; 575 | buildSettings = { 576 | BUNDLE_LOADER = "$(TEST_HOST)"; 577 | INFOPLIST_FILE = FlexibleTitleViewDEMOTests/Info.plist; 578 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 579 | PRODUCT_BUNDLE_IDENTIFIER = jzj.FlexibleTitleViewDEMOTests; 580 | PRODUCT_NAME = "$(TARGET_NAME)"; 581 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FlexibleTitleViewDEMO.app/FlexibleTitleViewDEMO"; 582 | }; 583 | name = Release; 584 | }; 585 | 0EF2896121555AE300718D91 /* Debug */ = { 586 | isa = XCBuildConfiguration; 587 | baseConfigurationReference = B4FD3E956369A502781147DF /* Pods-FlexibleTitleViewDEMOUITests.debug.xcconfig */; 588 | buildSettings = { 589 | INFOPLIST_FILE = FlexibleTitleViewDEMOUITests/Info.plist; 590 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 591 | PRODUCT_BUNDLE_IDENTIFIER = jzj.FlexibleTitleViewDEMOUITests; 592 | PRODUCT_NAME = "$(TARGET_NAME)"; 593 | TEST_TARGET_NAME = FlexibleTitleViewDEMO; 594 | }; 595 | name = Debug; 596 | }; 597 | 0EF2896221555AE300718D91 /* Release */ = { 598 | isa = XCBuildConfiguration; 599 | baseConfigurationReference = 82BBB83C82600B2254CCC862 /* Pods-FlexibleTitleViewDEMOUITests.release.xcconfig */; 600 | buildSettings = { 601 | INFOPLIST_FILE = FlexibleTitleViewDEMOUITests/Info.plist; 602 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 603 | PRODUCT_BUNDLE_IDENTIFIER = jzj.FlexibleTitleViewDEMOUITests; 604 | PRODUCT_NAME = "$(TARGET_NAME)"; 605 | TEST_TARGET_NAME = FlexibleTitleViewDEMO; 606 | }; 607 | name = Release; 608 | }; 609 | /* End XCBuildConfiguration section */ 610 | 611 | /* Begin XCConfigurationList section */ 612 | 0EF2892821555AE200718D91 /* Build configuration list for PBXProject "FlexibleTitleViewDEMO" */ = { 613 | isa = XCConfigurationList; 614 | buildConfigurations = ( 615 | 0EF2895821555AE300718D91 /* Debug */, 616 | 0EF2895921555AE300718D91 /* Release */, 617 | ); 618 | defaultConfigurationIsVisible = 0; 619 | defaultConfigurationName = Release; 620 | }; 621 | 0EF2895A21555AE300718D91 /* Build configuration list for PBXNativeTarget "FlexibleTitleViewDEMO" */ = { 622 | isa = XCConfigurationList; 623 | buildConfigurations = ( 624 | 0EF2895B21555AE300718D91 /* Debug */, 625 | 0EF2895C21555AE300718D91 /* Release */, 626 | ); 627 | defaultConfigurationIsVisible = 0; 628 | defaultConfigurationName = Release; 629 | }; 630 | 0EF2895D21555AE300718D91 /* Build configuration list for PBXNativeTarget "FlexibleTitleViewDEMOTests" */ = { 631 | isa = XCConfigurationList; 632 | buildConfigurations = ( 633 | 0EF2895E21555AE300718D91 /* Debug */, 634 | 0EF2895F21555AE300718D91 /* Release */, 635 | ); 636 | defaultConfigurationIsVisible = 0; 637 | defaultConfigurationName = Release; 638 | }; 639 | 0EF2896021555AE300718D91 /* Build configuration list for PBXNativeTarget "FlexibleTitleViewDEMOUITests" */ = { 640 | isa = XCConfigurationList; 641 | buildConfigurations = ( 642 | 0EF2896121555AE300718D91 /* Debug */, 643 | 0EF2896221555AE300718D91 /* Release */, 644 | ); 645 | defaultConfigurationIsVisible = 0; 646 | defaultConfigurationName = Release; 647 | }; 648 | /* End XCConfigurationList section */ 649 | }; 650 | rootObject = 0EF2892521555AE200718D91 /* Project object */; 651 | } 652 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // FlexibleTitleViewDEMO 4 | // 5 | // Created by JZJ on 2016/9/22. 6 | // Copyright © 2016年 JZJ. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // FlexibleTitleViewDEMO 4 | // 5 | // Created by JZJ on 2016/9/22. 6 | // Copyright © 2016年 JZJ. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | #import "MSFlexibleTitleView.h" 11 | 12 | @interface ViewController () 13 | @property (nonatomic, strong) MSFlexibleTitleView *titleView; 14 | @property (nonatomic, strong) UIScrollView *containerView; 15 | @property (nonatomic, strong) NSArray *titles; 16 | @property (nonatomic, assign) NSInteger currentIndex; 17 | @end 18 | 19 | @implementation ViewController 20 | 21 | - (void)viewDidLoad { 22 | [super viewDidLoad]; 23 | self.navigationItem.titleView = self.titleView; 24 | [self.view addSubview:self.containerView]; 25 | } 26 | 27 | 28 | - (void)didTapViewIndex:(NSInteger)index { 29 | if(index<0)return; 30 | 31 | CGPoint point = CGPointMake([UIScreen mainScreen].bounds.size.width*index, self.containerView.contentOffset.y); 32 | [self.containerView setContentOffset:point animated:YES]; 33 | } 34 | 35 | 36 | 37 | -(void)scrollViewDidScroll:(UIScrollView *)scrollView { 38 | 39 | CGFloat pageWidth = scrollView.frame.size.width; 40 | NSUInteger page = (NSUInteger) (floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1); 41 | 42 | if (page != self.currentIndex) { 43 | self.titleView.scrollBlock(self.currentIndex, page, 0, YES); 44 | [self setNewCurrentIndex:page]; 45 | } 46 | CGFloat f = scrollView.contentOffset.x / pageWidth; 47 | CGFloat scale = fabs(1 - (f - (NSInteger)f) * 2); 48 | NSInteger nextPage = self.currentIndex; 49 | if (scrollView.contentOffset.x > self.currentIndex*pageWidth) { 50 | nextPage = self.currentIndex + 1; 51 | } 52 | else if (scrollView.contentOffset.x < self.currentIndex*pageWidth) { 53 | nextPage = self.currentIndex - 1; 54 | } 55 | self.titleView.scrollBlock(self.currentIndex, nextPage, scale, NO); 56 | } 57 | 58 | 59 | 60 | - (void)setNewCurrentIndex:(NSInteger)currentIndex { 61 | if (_currentIndex == currentIndex) return; 62 | _currentIndex = currentIndex; 63 | } 64 | 65 | 66 | 67 | #pragma mark -- lazy 68 | 69 | - (NSArray *)titles{ 70 | if(!_titles){ 71 | _titles = @[@"One" ,@"Two", @"Three"]; 72 | } 73 | return _titles; 74 | } 75 | 76 | - (UIScrollView *)containerView{ 77 | if(!_containerView){ 78 | _containerView = [UIScrollView new]; 79 | _containerView.delegate = self; 80 | _containerView.showsVerticalScrollIndicator = NO; 81 | _containerView.showsHorizontalScrollIndicator = NO; 82 | _containerView.pagingEnabled = YES; 83 | UIScreen* screen = [UIScreen mainScreen]; 84 | _containerView.contentSize = CGSizeMake(screen.bounds.size.width*self.titleView.tapTitles.count, screen.bounds.size.height); 85 | _containerView.frame = self.view.bounds; 86 | _containerView.backgroundColor = [UIColor whiteColor]; 87 | } 88 | return _containerView; 89 | } 90 | 91 | 92 | - (MSFlexibleTitleView *)titleView { 93 | if (!_titleView) { 94 | __weak typeof(self)weakSelf = self; 95 | _titleView = [[MSFlexibleTitleView alloc] initWithTitles:self.titles showIndex:MSTitleTypeMoment tapBlock:^(MSFlexibleTitleView *titleView, NSInteger index) { 96 | [weakSelf didTapViewIndex:index]; 97 | }]; 98 | } 99 | return _titleView; 100 | } 101 | 102 | 103 | @end 104 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // FlexibleTitleViewDEMO 4 | // 5 | // Created by JZJ on 2016/9/22. 6 | // Copyright © 2016年 JZJ. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // FlexibleTitleViewDEMO 4 | // 5 | // Created by JZJ on 2016/9/22. 6 | // Copyright © 2016年 JZJ. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // FlexibleTitleViewDEMO 4 | // 5 | // Created by JZJ on 2016/9/22. 6 | // Copyright © 2016年 JZJ. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "ViewController.h" 11 | 12 | @interface AppDelegate () 13 | 14 | @end 15 | 16 | @implementation AppDelegate 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 19 | self.window = [UIWindow new]; 20 | self.window.frame = [UIScreen mainScreen].bounds; 21 | UINavigationController* nav = [[UINavigationController alloc] initWithRootViewController:ViewController.new]; 22 | self.window.rootViewController = nav; 23 | [self.window makeKeyAndVisible]; 24 | return YES; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "icon-20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "icon-20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "icon-29.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "icon-29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "icon-29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "icon-40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "icon-40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "57x57", 47 | "idiom" : "iphone", 48 | "filename" : "icon-57.png", 49 | "scale" : "1x" 50 | }, 51 | { 52 | "size" : "57x57", 53 | "idiom" : "iphone", 54 | "filename" : "icon-57@2x.png", 55 | "scale" : "2x" 56 | }, 57 | { 58 | "size" : "60x60", 59 | "idiom" : "iphone", 60 | "filename" : "icon-60@2x.png", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "size" : "60x60", 65 | "idiom" : "iphone", 66 | "filename" : "icon-60@3x.png", 67 | "scale" : "3x" 68 | }, 69 | { 70 | "size" : "20x20", 71 | "idiom" : "ipad", 72 | "filename" : "icon-20-ipad.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "20x20", 77 | "idiom" : "ipad", 78 | "filename" : "icon-20@2x-ipad.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "29x29", 83 | "idiom" : "ipad", 84 | "filename" : "icon-29-ipad.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "29x29", 89 | "idiom" : "ipad", 90 | "filename" : "icon-29@2x-ipad.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "40x40", 95 | "idiom" : "ipad", 96 | "filename" : "icon-40.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "40x40", 101 | "idiom" : "ipad", 102 | "filename" : "icon-40@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "50x50", 107 | "idiom" : "ipad", 108 | "filename" : "icon-50.png", 109 | "scale" : "1x" 110 | }, 111 | { 112 | "size" : "50x50", 113 | "idiom" : "ipad", 114 | "filename" : "icon-50@2x.png", 115 | "scale" : "2x" 116 | }, 117 | { 118 | "size" : "72x72", 119 | "idiom" : "ipad", 120 | "filename" : "icon-72.png", 121 | "scale" : "1x" 122 | }, 123 | { 124 | "size" : "72x72", 125 | "idiom" : "ipad", 126 | "filename" : "icon-72@2x.png", 127 | "scale" : "2x" 128 | }, 129 | { 130 | "size" : "76x76", 131 | "idiom" : "ipad", 132 | "filename" : "icon-76.png", 133 | "scale" : "1x" 134 | }, 135 | { 136 | "size" : "76x76", 137 | "idiom" : "ipad", 138 | "filename" : "icon-76@2x.png", 139 | "scale" : "2x" 140 | }, 141 | { 142 | "size" : "83.5x83.5", 143 | "idiom" : "ipad", 144 | "filename" : "icon-83.5@2x.png", 145 | "scale" : "2x" 146 | }, 147 | { 148 | "size" : "1024x1024", 149 | "idiom" : "ios-marketing", 150 | "filename" : "icon-1024@2x.png", 151 | "scale" : "1x" 152 | } 153 | ], 154 | "info" : { 155 | "version" : 1, 156 | "author" : "xcode" 157 | } 158 | } -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-1024@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-1024@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-29.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-40.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-50.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-57.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-72.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-76.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitWOSBiOS56_768x1004pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitWOSBiOS56_768x1004pt.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitWOSBiOS56_768x1004pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitWOSBiOS56_768x1004pt@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS56_768x1024pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS56_768x1024pt.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS56_768x1024pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS56_768x1024pt@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS789_768x1024pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS789_768x1024pt.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS789_768x1024pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPadPortraitiOS789_768x1024pt@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS56_320x480pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS56_320x480pt.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS56_320x480pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS56_320x480pt@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS56_320x568pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS56_320x568pt@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS789_320x480pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS789_320x480pt@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS789_320x568pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS789_320x568pt@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS89_375x667pt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS89_375x667pt@2x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS89_414x736pt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/1024iPhonePortraitiOS89_414x736pt@3x.png -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Assets.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "filename" : "1024iPhonePortraitiOS56_320x480pt.png", 7 | "extent" : "full-screen", 8 | "scale" : "1x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "filename" : "1024iPhonePortraitiOS56_320x480pt@2x.png", 14 | "extent" : "full-screen", 15 | "scale" : "2x" 16 | }, 17 | { 18 | "orientation" : "portrait", 19 | "idiom" : "iphone", 20 | "filename" : "1024iPhonePortraitiOS56_320x568pt@2x.png", 21 | "extent" : "full-screen", 22 | "subtype" : "retina4", 23 | "scale" : "2x" 24 | }, 25 | { 26 | "orientation" : "portrait", 27 | "idiom" : "ipad", 28 | "filename" : "1024iPadPortraitWOSBiOS56_768x1004pt.png", 29 | "extent" : "to-status-bar", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "filename" : "1024iPadPortraitiOS56_768x1024pt.png", 36 | "extent" : "full-screen", 37 | "scale" : "1x" 38 | }, 39 | { 40 | "orientation" : "portrait", 41 | "idiom" : "ipad", 42 | "filename" : "1024iPadPortraitWOSBiOS56_768x1004pt@2x.png", 43 | "extent" : "to-status-bar", 44 | "scale" : "2x" 45 | }, 46 | { 47 | "orientation" : "portrait", 48 | "idiom" : "ipad", 49 | "filename" : "1024iPadPortraitiOS56_768x1024pt@2x.png", 50 | "extent" : "full-screen", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "extent" : "full-screen", 55 | "idiom" : "iphone", 56 | "subtype" : "736h", 57 | "filename" : "1024iPhonePortraitiOS89_414x736pt@3x.png", 58 | "minimum-system-version" : "8.0", 59 | "orientation" : "portrait", 60 | "scale" : "3x" 61 | }, 62 | { 63 | "extent" : "full-screen", 64 | "idiom" : "iphone", 65 | "subtype" : "667h", 66 | "filename" : "1024iPhonePortraitiOS89_375x667pt@2x.png", 67 | "minimum-system-version" : "8.0", 68 | "orientation" : "portrait", 69 | "scale" : "2x" 70 | }, 71 | { 72 | "orientation" : "portrait", 73 | "idiom" : "iphone", 74 | "filename" : "1024iPhonePortraitiOS789_320x480pt@2x.png", 75 | "extent" : "full-screen", 76 | "minimum-system-version" : "7.0", 77 | "scale" : "2x" 78 | }, 79 | { 80 | "extent" : "full-screen", 81 | "idiom" : "iphone", 82 | "subtype" : "retina4", 83 | "filename" : "1024iPhonePortraitiOS789_320x568pt@2x.png", 84 | "minimum-system-version" : "7.0", 85 | "orientation" : "portrait", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "orientation" : "portrait", 90 | "idiom" : "ipad", 91 | "filename" : "1024iPadPortraitiOS789_768x1024pt.png", 92 | "extent" : "full-screen", 93 | "minimum-system-version" : "7.0", 94 | "scale" : "1x" 95 | }, 96 | { 97 | "orientation" : "portrait", 98 | "idiom" : "ipad", 99 | "filename" : "1024iPadPortraitiOS789_768x1024pt@2x.png", 100 | "extent" : "full-screen", 101 | "minimum-system-version" : "7.0", 102 | "scale" : "2x" 103 | } 104 | ], 105 | "info" : { 106 | "version" : 1, 107 | "author" : "xcode" 108 | } 109 | } -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/FlexibleTitleViewDEMOTests/FlexibleTitleViewDEMOTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // FlexibleTitleViewDEMOTests.m 3 | // FlexibleTitleViewDEMOTests 4 | // 5 | // Created by JZJ on 2016/9/22. 6 | // Copyright © 2016年 JZJ. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FlexibleTitleViewDEMOTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation FlexibleTitleViewDEMOTests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | // Put setup code here. This method is called before the invocation of each test method in the class. 20 | } 21 | 22 | - (void)tearDown { 23 | // Put teardown code here. This method is called after the invocation of each test method in the class. 24 | [super tearDown]; 25 | } 26 | 27 | - (void)testExample { 28 | // This is an example of a functional test case. 29 | // Use XCTAssert and related functions to verify your tests produce the correct results. 30 | } 31 | 32 | - (void)testPerformanceExample { 33 | // This is an example of a performance test case. 34 | [self measureBlock:^{ 35 | // Put the code you want to measure the time of here. 36 | }]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/FlexibleTitleViewDEMOTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/FlexibleTitleViewDEMOUITests/FlexibleTitleViewDEMOUITests.m: -------------------------------------------------------------------------------- 1 | // 2 | // FlexibleTitleViewDEMOUITests.m 3 | // FlexibleTitleViewDEMOUITests 4 | // 5 | // Created by JZJ on 2016/9/22. 6 | // Copyright © 2016年 JZJ. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FlexibleTitleViewDEMOUITests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation FlexibleTitleViewDEMOUITests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | 22 | // In UI tests it is usually best to stop immediately when a failure occurs. 23 | self.continueAfterFailure = NO; 24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 25 | [[[XCUIApplication alloc] init] launch]; 26 | 27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 28 | } 29 | 30 | - (void)tearDown { 31 | // Put teardown code here. This method is called after the invocation of each test method in the class. 32 | [super tearDown]; 33 | } 34 | 35 | - (void)testExample { 36 | // Use recording to get started writing UI tests. 37 | // Use XCTAssert and related functions to verify your tests produce the correct results. 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/FlexibleTitleViewDEMOUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /FlexibleTitleViewDEMO/other/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIRequiredDeviceCapabilities 26 | 27 | armv7 28 | 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | 33 | UISupportedInterfaceOrientations~ipad 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationPortraitUpsideDown 37 | UIInterfaceOrientationLandscapeLeft 38 | UIInterfaceOrientationLandscapeRight 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 sureJiang 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 | -------------------------------------------------------------------------------- /MSFlexibleTitleView.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod spec lint MSFlexibleTitleView.podspec' to ensure this is a 3 | # valid spec and to remove all comments including this before submitting the spec. 4 | # 5 | # To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html 6 | # To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/ 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | 11 | # ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 12 | # 13 | # These will help people to find your library, and whilst it 14 | # can feel like a chore to fill in it's definitely to your advantage. The 15 | # summary should be tweet-length, and the description more in depth. 16 | # 17 | 18 | s.name = "MSFlexibleTitleView" 19 | s.version = "1.0.0" 20 | s.summary = "弹性动画titleView" 21 | 22 | # This description is used to generate tags and improve search results. 23 | # * Think: What does it do? Why did you write it? What is the focus? 24 | # * Try to keep it short, snappy and to the point. 25 | # * Write the description between the DESC delimiters below. 26 | # * Finally, don't worry about the indent, CocoaPods strips it! 27 | s.description = '弹性动画titleView.' 28 | 29 | s.homepage = "https://github.com/JZJJZJ" 30 | # s.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif" 31 | 32 | 33 | # ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 34 | # 35 | # Licensing your code is important. See http://choosealicense.com for more info. 36 | # CocoaPods will detect a license file if there is a named LICENSE* 37 | # Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'. 38 | # 39 | 40 | s.license = "MIT" 41 | # s.license = { :type => "MIT", :file => "FILE_LICENSE" } 42 | 43 | 44 | # ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 45 | # 46 | # Specify the authors of the library, with email addresses. Email addresses 47 | # of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also 48 | # accepts just a name if you'd rather not provide an email address. 49 | # 50 | # Specify a social_media_url where others can refer to, for example a twitter 51 | # profile URL. 52 | # 53 | 54 | s.author = { "“jiang.zijia@immomo.com”" => "“jiang.zijia@immomo.com”" } 55 | # Or just: s.author = "“jiang.zijia@immomo.com”" 56 | # s.authors = { "“jiang.zijia@immomo.com”" => "“jiang.zijia@immomo.com”" } 57 | # s.social_media_url = "http://twitter.com/“jiang.zijia@immomo.com”" 58 | 59 | # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 60 | # 61 | # If this Pod runs only on iOS or OS X, then specify the platform and 62 | # the deployment target. You can optionally include the target after the platform. 63 | # 64 | 65 | s.platform = :ios 66 | s.platform = :ios, "5.0" 67 | 68 | # When using multiple platforms 69 | # s.ios.deployment_target = "7.0" 70 | # s.osx.deployment_target = "10.7" 71 | # s.watchos.deployment_target = "2.0" 72 | # s.tvos.deployment_target = "9.0" 73 | 74 | 75 | # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 76 | # 77 | # Specify the location from where the source should be retrieved. 78 | # Supports git, hg, bzr, svn and HTTP. 79 | # 80 | 81 | s.source = { :git => "https://github.com/JZJJZJ/MSFlexibleTitleView.git", :tag => "#{s.version}" } 82 | 83 | 84 | # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 85 | # 86 | # CocoaPods is smart about how it includes source code. For source files 87 | # giving a folder will include any swift, h, m, mm, c & cpp files. 88 | # For header files it will include any header in the folder. 89 | # Not including the public_header_files will make all headers public. 90 | # 91 | 92 | s.source_files = "MSFlexibleTitleView" 93 | s.exclude_files = "Classes/Exclude" 94 | 95 | # s.public_header_files = "Classes/**/*.h" 96 | 97 | 98 | # ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 99 | # 100 | # A list of resources included with the Pod. These are copied into the 101 | # target bundle with a build phase script. Anything else will be cleaned. 102 | # You can preserve files from being cleaned, please don't preserve 103 | # non-essential files like tests, examples and documentation. 104 | # 105 | 106 | # s.resource = "icon.png" 107 | # s.resources = "Resources/*.png" 108 | 109 | # s.preserve_paths = "FilesToSave", "MoreFilesToSave" 110 | 111 | 112 | # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 113 | # 114 | # Link your library with frameworks, or libraries. Libraries do not include 115 | # the lib prefix of their name. 116 | # 117 | 118 | # s.framework = "SomeFramework" 119 | # s.frameworks = "SomeFramework", "AnotherFramework" 120 | 121 | # s.library = "iconv" 122 | # s.libraries = "iconv", "xml2" 123 | 124 | 125 | # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 126 | # 127 | # If your library depends on compiler flags you can set them in the xcconfig hash 128 | # where they will only apply to your library. If you depend on other Podspecs 129 | # you can include multiple dependencies to ensure it works. 130 | 131 | # s.requires_arc = true 132 | 133 | # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" } 134 | # s.dependency "JSONKit", "~> 1.4" 135 | 136 | end -------------------------------------------------------------------------------- /MSFlexibleTitleView/MSFlexibleTitleView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MSFlexibleTitleView.h 3 | // 4 | // 5 | // Created by JZJ on 16/5/20. 6 | // Copyright © 2016年 JZJ. All rights reserved. 7 | // 8 | 9 | #import 10 | typedef NS_ENUM(NSInteger, MSTitleType){ 11 | MSTitleTypeNone = -1, 12 | MSTitleTypeMoment, 13 | MSTitleTypeUsers, 14 | MSTitleTypeActivity 15 | }; 16 | 17 | @class MSFlexibleTitleView; 18 | typedef void (^MSTitleTapBlock) (MSFlexibleTitleView *titleView, NSInteger index); 19 | typedef void (^HandleHorizontalScrollBlock) (NSInteger index, NSInteger toIndex, CGFloat scale, BOOL end); 20 | 21 | @interface MSFlexibleTitleView : UIView 22 | @property (nonatomic, strong,readonly)NSArray *tapTitles; 23 | @property (nonatomic, copy) HandleHorizontalScrollBlock scrollBlock; 24 | 25 | - (id)initWithTitles:(NSArray*)tapTitles showIndex:(NSInteger)index tapBlock:(MSTitleTapBlock)block; 26 | - (id)initWithTitles:(NSArray*)tapTitles viewWidth:(CGFloat)viewWidth showIndex:(NSInteger)index tapBlock:(MSTitleTapBlock)block; 27 | 28 | //设置红点 29 | -(void)setRedMarkAtIndex:(NSInteger)i; 30 | -(void)cleanRedMark; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /MSFlexibleTitleView/MSFlexibleTitleView.m: -------------------------------------------------------------------------------- 1 | // 2 | // MSFlexibleTitleView.m 3 | // 4 | // 5 | // Created by JZJ on 16/5/20. 6 | // Copyright © 2016年 JZJ. All rights reserved. 7 | // 8 | 9 | #import "MSFlexibleTitleView.h" 10 | 11 | #if !__has_feature(objc_arc) 12 | #error MSFlexibleTitleView must be built with ARC. 13 | #endif 14 | 15 | static NSInteger const kTagForRedMark = 666; 16 | @interface MSFlexibleTitleView () 17 | @property (nonatomic, strong) NSMutableArray *taps; 18 | @property (nonatomic, strong) UIView *bottomLine; 19 | @property (nonatomic, strong) UILabel *currentLabel; 20 | @property (nonatomic, strong) NSArray *tapTitles; 21 | @property (nonatomic, strong) MSTitleTapBlock tapBlock; 22 | 23 | @end 24 | 25 | @implementation MSFlexibleTitleView 26 | 27 | - (id)initWithTitles:(NSArray*)tapTitles showIndex:(NSInteger)index tapBlock:(MSTitleTapBlock)block{ 28 | 29 | return [self initWithTitles:tapTitles viewWidth:175. showIndex:index tapBlock:block]; 30 | } 31 | 32 | - (id)initWithTitles:(NSArray*)tapTitles viewWidth:(CGFloat)viewWidth showIndex:(NSInteger)index tapBlock:(MSTitleTapBlock)block { 33 | self.tapTitles = tapTitles; 34 | CGFloat width = (viewWidth > 0) ? viewWidth : 175.; 35 | CGRect frame = CGRectMake(0, 0, width, 44.); 36 | self = [super initWithFrame:frame]; 37 | if (self) { 38 | 39 | self.tapBlock = block; 40 | [self setBackgroundColor:[UIColor clearColor]]; 41 | if (tapTitles && tapTitles.count) { 42 | CGFloat width = self.frame.size.width/tapTitles.count; 43 | for (int i = 0; i < tapTitles.count; i++) { 44 | UILabel *tapLabel = [[UILabel alloc] initWithFrame:CGRectMake(width*i, 0, width, self.frame.size.height)]; 45 | tapLabel.userInteractionEnabled = YES; 46 | tapLabel.backgroundColor = [UIColor clearColor]; 47 | tapLabel.textAlignment = NSTextAlignmentCenter; 48 | UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap:)]; 49 | [tapLabel addGestureRecognizer:tap]; 50 | tapLabel.tag = i; 51 | if (index==i) { 52 | tapLabel.font = [UIFont boldSystemFontOfSize:15.0]; 53 | [tapLabel setTextColor:[UIColor colorWithRed:52/255.0 green:98/255.0 blue:255/255.0 alpha:1]]; 54 | self.currentLabel = tapLabel; 55 | } else { 56 | tapLabel.font = [UIFont systemFontOfSize:15.0]; 57 | [tapLabel setTextColor:[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1]]; 58 | } 59 | [tapLabel setText:[tapTitles objectAtIndex:i]]; 60 | [self addSubview:tapLabel]; 61 | [self.taps addObject:tapLabel]; 62 | } 63 | } 64 | [self bottomLine].center = CGPointMake(self.currentLabel.center.x, self.bottomLine.center.y); 65 | } 66 | return self; 67 | } 68 | 69 | 70 | -(void)setRedMarkAtIndex:(NSInteger)i { 71 | UILabel *label = [self viewWithTag:i]; 72 | 73 | UIImageView *redMark = [label viewWithTag:kTagForRedMark]; 74 | if (redMark) { 75 | return; 76 | } else { 77 | redMark = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"redDot.png"]]; 78 | redMark.tag = kTagForRedMark; 79 | 80 | CGRect frame = redMark.frame; 81 | frame.origin.x = 50 - frame.size.width; 82 | redMark.frame = frame; 83 | 84 | frame = redMark.frame; 85 | frame.origin.y = 10; 86 | redMark.frame = frame; 87 | [label addSubview:redMark]; 88 | } 89 | } 90 | 91 | -(void)cleanRedMark{ 92 | UIImageView *redMark = [self viewWithTag:kTagForRedMark]; 93 | [redMark removeFromSuperview]; 94 | } 95 | 96 | - (void)didTap:(UITapGestureRecognizer *)recognizer{ 97 | UILabel *tapLabel = (UILabel *)recognizer.view; 98 | 99 | if (tapLabel == self.currentLabel) { 100 | return; 101 | } 102 | if (self.tapBlock) { 103 | self.tapBlock(self, tapLabel.tag); 104 | } 105 | } 106 | 107 | - (HandleHorizontalScrollBlock)scrollBlock { 108 | 109 | if (!_scrollBlock) { 110 | __weak typeof(self)weakSelf = self; 111 | _scrollBlock = ^ (NSInteger index, NSInteger toIndex, CGFloat scale, BOOL end) { 112 | if ((index == toIndex && !end) || toIndex < 0 || toIndex >= weakSelf.taps.count) { 113 | return ; 114 | } 115 | 116 | UILabel *currentLabel = [weakSelf.taps objectAtIndex:index]; 117 | if (end) { 118 | currentLabel = [weakSelf.taps objectAtIndex:toIndex]; 119 | [weakSelf.taps enumerateObjectsUsingBlock:^(UILabel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 120 | if (idx == toIndex) { 121 | weakSelf.currentLabel = obj; 122 | weakSelf.currentLabel.font = [UIFont boldSystemFontOfSize:15.0]; 123 | weakSelf.currentLabel.textColor = [UIColor colorWithRed:52/255.0 green:98/255.0 blue:255/255.0 alpha:1]; 124 | } else { 125 | obj.font = [UIFont systemFontOfSize:15.0]; 126 | obj.textColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1]; 127 | } 128 | }]; 129 | CGRect frame = weakSelf.bottomLine.frame; 130 | frame.size.width = 40.; 131 | weakSelf.bottomLine.frame = frame; 132 | weakSelf.bottomLine.center = CGPointMake(CGRectGetMidX(currentLabel.frame), self.frame.size.height-2./2); 133 | } else { 134 | currentLabel.textColor = [weakSelf normalColorWith:1-scale]; 135 | CGFloat offset = 40.*0.75; 136 | CGPoint point = CGPointZero; 137 | if (toIndex > index) { 138 | point = CGPointMake(CGRectGetMidX(currentLabel.frame)+offset*(1-scale), self.frame.size.height-2./2); 139 | } else { 140 | point = CGPointMake(CGRectGetMidX(currentLabel.frame)-offset*(1-scale), self.frame.size.height-2./2); 141 | } 142 | CGFloat width = 40. + offset * (1-scale); 143 | CGRect frame = weakSelf.bottomLine.frame; 144 | frame.size.width = width; 145 | weakSelf.bottomLine.frame = frame; 146 | 147 | weakSelf.bottomLine.center = point; 148 | } 149 | }; 150 | } 151 | return _scrollBlock; 152 | } 153 | 154 | - (UIColor *)normalColorWith:(CGFloat)scale { 155 | 156 | NSDictionary *nDic = [self getRGBDictionaryByColor:[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1]]; 157 | NSDictionary *sDic = [self getRGBDictionaryByColor:[UIColor colorWithRed:52/255.0 green:98/255.0 blue:255/255.0 alpha:1]]; 158 | CGFloat _r = [[sDic objectForKey:@"R"] floatValue] - [[nDic objectForKey:@"R"] floatValue]; 159 | CGFloat _g = [[sDic objectForKey:@"G"] floatValue] - [[nDic objectForKey:@"G"] floatValue]; 160 | CGFloat _b = [[sDic objectForKey:@"B"] floatValue] - [[nDic objectForKey:@"B"] floatValue]; 161 | return [UIColor colorWithRed:([[sDic objectForKey:@"R"] floatValue]-scale*_r)*255/255.0 162 | green:([[sDic objectForKey:@"G"] floatValue]-scale*_g)*255/255.0 163 | blue:([[sDic objectForKey:@"B"] floatValue]-scale*_b)*255/255.0 164 | alpha:1]; 165 | } 166 | 167 | - (UIColor *)selectedColorWith:(CGFloat)scale { 168 | 169 | NSDictionary *nDic = [self getRGBDictionaryByColor:[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1]]; 170 | NSDictionary *sDic = [self getRGBDictionaryByColor:[UIColor colorWithRed:52/255.0 green:98/255.0 blue:255/255.0 alpha:1]]; 171 | CGFloat _r = [[sDic objectForKey:@"R"] floatValue] - [[nDic objectForKey:@"R"] floatValue]; 172 | CGFloat _g = [[sDic objectForKey:@"G"] floatValue] - [[nDic objectForKey:@"G"] floatValue]; 173 | CGFloat _b = [[sDic objectForKey:@"B"] floatValue] - [[nDic objectForKey:@"B"] floatValue]; 174 | 175 | return [UIColor colorWithRed:([[nDic objectForKey:@"R"] floatValue]+scale*_r)*255 176 | green:([[nDic objectForKey:@"G"] floatValue]+scale*_g)*255 177 | blue:([[nDic objectForKey:@"B"] floatValue]+scale*_b)*255 178 | alpha:1]; 179 | } 180 | 181 | - (NSDictionary *)getRGBDictionaryByColor:(UIColor *)originColor{ 182 | 183 | CGFloat r=0,g=0,b=0,a=0; 184 | if ([self respondsToSelector:@selector(getRed:green:blue:alpha:)]) { 185 | [originColor getRed:&r green:&g blue:&b alpha:&a]; 186 | } 187 | else { 188 | const CGFloat *components = CGColorGetComponents(originColor.CGColor); 189 | r = components[0]; 190 | g = components[1]; 191 | b = components[2]; 192 | a = components[3]; 193 | } 194 | return @{@"R":@(r),@"G":@(g),@"B":@(b),@"A":@(a)}; 195 | } 196 | 197 | 198 | #pragma mark --lazy 199 | 200 | -(NSMutableArray *)taps{ 201 | if(!_taps){ 202 | _taps = [NSMutableArray array]; 203 | } 204 | return _taps; 205 | } 206 | 207 | 208 | - (UIView *)bottomLine { 209 | 210 | if (!_bottomLine) { 211 | _bottomLine = [[UIView alloc] initWithFrame:CGRectMake(0, self.frame.size.height-2., 40., 2.)]; 212 | _bottomLine.backgroundColor = [UIColor colorWithRed:52/255.0 green:98/255.0 blue:255/255.0 alpha:1]; 213 | [self addSubview:_bottomLine]; 214 | } 215 | return _bottomLine; 216 | } 217 | 218 | 219 | @end 220 | 221 | 222 | -------------------------------------------------------------------------------- /MSFlexibleTitleView/redDot@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tempAccountA/MSFlexibleTitleView/d1432546f4da699972d460e39e2fe89fcdc6290c/MSFlexibleTitleView/redDot@2x.png -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | target 'FlexibleTitleViewDEMO' do 5 | # Uncomment the next line if you're using Swift or would like to use dynamic frameworks 6 | # use_frameworks! 7 | 8 | # Pods for FlexibleTitleViewDEMO 9 | pod 'MSFlexibleTitleView' 10 | 11 | target 'FlexibleTitleViewDEMOTests' do 12 | inherit! :search_paths 13 | # Pods for testing 14 | end 15 | 16 | target 'FlexibleTitleViewDEMOUITests' do 17 | inherit! :search_paths 18 | # Pods for testing 19 | 20 | end 21 | 22 | end 23 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - MSFlexibleTitleView (1.0.0) 3 | 4 | DEPENDENCIES: 5 | - MSFlexibleTitleView 6 | 7 | SPEC REPOS: 8 | https://github.com/cocoapods/specs.git: 9 | - MSFlexibleTitleView 10 | 11 | SPEC CHECKSUMS: 12 | MSFlexibleTitleView: 48a972be4a8d9e562133b04b3dfb8b77b53bafa2 13 | 14 | PODFILE CHECKSUM: 84e570653eb8b436525bb1ecde0f058e437edecf 15 | 16 | COCOAPODS: 1.5.3 17 | -------------------------------------------------------------------------------- /Pods/Headers/Private/MSFlexibleTitleView/MSFlexibleTitleView.h: -------------------------------------------------------------------------------- 1 | ../../../MSFlexibleTitleView/MSFlexibleTitleView/MSFlexibleTitleView.h -------------------------------------------------------------------------------- /Pods/Headers/Public/MSFlexibleTitleView/MSFlexibleTitleView.h: -------------------------------------------------------------------------------- 1 | ../../../MSFlexibleTitleView/MSFlexibleTitleView/MSFlexibleTitleView.h -------------------------------------------------------------------------------- /Pods/MSFlexibleTitleView/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 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 | -------------------------------------------------------------------------------- /Pods/MSFlexibleTitleView/MSFlexibleTitleView/MSFlexibleTitleView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MSFlexibleTitleView.h 3 | // 4 | // 5 | // Created by JZJ on 16/5/20. 6 | // Copyright © 2016年 JZJ. All rights reserved. 7 | // 8 | 9 | #import 10 | typedef NS_ENUM(NSInteger, MSTitleType){ 11 | MSTitleTypeNone = -1, 12 | MSTitleTypeMoment, 13 | MSTitleTypeUsers, 14 | MSTitleTypeActivity 15 | }; 16 | 17 | @class MSFlexibleTitleView; 18 | typedef void (^MSTitleTapBlock) (MSFlexibleTitleView *titleView, NSInteger index); 19 | typedef void (^HandleHorizontalScrollBlock) (NSInteger index, NSInteger toIndex, CGFloat scale, BOOL end); 20 | 21 | @interface MSFlexibleTitleView : UIView 22 | @property (nonatomic, strong,readonly)NSArray *tapTitles; 23 | @property (nonatomic, copy) HandleHorizontalScrollBlock scrollBlock; 24 | 25 | - (id)initWithTitles:(NSArray*)tapTitles showIndex:(NSInteger)index tapBlock:(MSTitleTapBlock)block; 26 | - (id)initWithTitles:(NSArray*)tapTitles viewWidth:(CGFloat)viewWidth showIndex:(NSInteger)index tapBlock:(MSTitleTapBlock)block; 27 | 28 | //设置红点 29 | -(void)setRedMarkAtIndex:(NSInteger)i; 30 | -(void)cleanRedMark; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Pods/MSFlexibleTitleView/MSFlexibleTitleView/MSFlexibleTitleView.m: -------------------------------------------------------------------------------- 1 | // 2 | // MSFlexibleTitleView.m 3 | // 4 | // 5 | // Created by JZJ on 16/5/20. 6 | // Copyright © 2016年 JZJ. All rights reserved. 7 | // 8 | 9 | #import "MSFlexibleTitleView.h" 10 | 11 | #if !__has_feature(objc_arc) 12 | #error MSFlexibleTitleView must be built with ARC. 13 | #endif 14 | 15 | static NSInteger const kTagForRedMark = 666; 16 | @interface MSFlexibleTitleView () 17 | @property (nonatomic, strong) NSMutableArray *taps; 18 | @property (nonatomic, strong) UIView *bottomLine; 19 | @property (nonatomic, strong) UILabel *currentLabel; 20 | @property (nonatomic, strong) NSArray *tapTitles; 21 | @property (nonatomic, strong) MSTitleTapBlock tapBlock; 22 | 23 | @end 24 | 25 | @implementation MSFlexibleTitleView 26 | 27 | - (id)initWithTitles:(NSArray*)tapTitles showIndex:(NSInteger)index tapBlock:(MSTitleTapBlock)block{ 28 | 29 | return [self initWithTitles:tapTitles viewWidth:175. showIndex:index tapBlock:block]; 30 | } 31 | 32 | - (id)initWithTitles:(NSArray*)tapTitles viewWidth:(CGFloat)viewWidth showIndex:(NSInteger)index tapBlock:(MSTitleTapBlock)block { 33 | self.tapTitles = tapTitles; 34 | CGFloat width = (viewWidth > 0) ? viewWidth : 175.; 35 | CGRect frame = CGRectMake(0, 0, width, 44.); 36 | self = [super initWithFrame:frame]; 37 | if (self) { 38 | 39 | self.tapBlock = block; 40 | [self setBackgroundColor:[UIColor clearColor]]; 41 | if (tapTitles && tapTitles.count) { 42 | CGFloat width = self.frame.size.width/tapTitles.count; 43 | for (int i = 0; i < tapTitles.count; i++) { 44 | UILabel *tapLabel = [[UILabel alloc] initWithFrame:CGRectMake(width*i, 0, width, self.frame.size.height)]; 45 | tapLabel.userInteractionEnabled = YES; 46 | tapLabel.backgroundColor = [UIColor clearColor]; 47 | tapLabel.textAlignment = NSTextAlignmentCenter; 48 | UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap:)]; 49 | [tapLabel addGestureRecognizer:tap]; 50 | tapLabel.tag = i; 51 | if (index==i) { 52 | tapLabel.font = [UIFont boldSystemFontOfSize:15.0]; 53 | [tapLabel setTextColor:[UIColor colorWithRed:52/255.0 green:98/255.0 blue:255/255.0 alpha:1]]; 54 | self.currentLabel = tapLabel; 55 | } else { 56 | tapLabel.font = [UIFont systemFontOfSize:15.0]; 57 | [tapLabel setTextColor:[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1]]; 58 | } 59 | [tapLabel setText:[tapTitles objectAtIndex:i]]; 60 | [self addSubview:tapLabel]; 61 | [self.taps addObject:tapLabel]; 62 | } 63 | } 64 | [self bottomLine].center = CGPointMake(self.currentLabel.center.x, self.bottomLine.center.y); 65 | } 66 | return self; 67 | } 68 | 69 | 70 | -(void)setRedMarkAtIndex:(NSInteger)i { 71 | UILabel *label = [self viewWithTag:i]; 72 | 73 | UIImageView *redMark = [label viewWithTag:kTagForRedMark]; 74 | if (redMark) { 75 | return; 76 | } else { 77 | redMark = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"redDot.png"]]; 78 | redMark.tag = kTagForRedMark; 79 | 80 | CGRect frame = redMark.frame; 81 | frame.origin.x = 50 - frame.size.width; 82 | redMark.frame = frame; 83 | 84 | frame = redMark.frame; 85 | frame.origin.y = 10; 86 | redMark.frame = frame; 87 | [label addSubview:redMark]; 88 | } 89 | } 90 | 91 | -(void)cleanRedMark{ 92 | UIImageView *redMark = [self viewWithTag:kTagForRedMark]; 93 | [redMark removeFromSuperview]; 94 | } 95 | 96 | - (void)didTap:(UITapGestureRecognizer *)recognizer{ 97 | UILabel *tapLabel = (UILabel *)recognizer.view; 98 | 99 | if (tapLabel == self.currentLabel) { 100 | return; 101 | } 102 | if (self.tapBlock) { 103 | self.tapBlock(self, tapLabel.tag); 104 | } 105 | } 106 | 107 | - (HandleHorizontalScrollBlock)scrollBlock { 108 | 109 | if (!_scrollBlock) { 110 | __weak typeof(self)weakSelf = self; 111 | _scrollBlock = ^ (NSInteger index, NSInteger toIndex, CGFloat scale, BOOL end) { 112 | if ((index == toIndex && !end) || toIndex < 0 || toIndex >= weakSelf.taps.count) { 113 | return ; 114 | } 115 | 116 | UILabel *currentLabel = [weakSelf.taps objectAtIndex:index]; 117 | if (end) { 118 | currentLabel = [weakSelf.taps objectAtIndex:toIndex]; 119 | [weakSelf.taps enumerateObjectsUsingBlock:^(UILabel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 120 | if (idx == toIndex) { 121 | weakSelf.currentLabel = obj; 122 | weakSelf.currentLabel.font = [UIFont boldSystemFontOfSize:15.0]; 123 | weakSelf.currentLabel.textColor = [UIColor colorWithRed:52/255.0 green:98/255.0 blue:255/255.0 alpha:1]; 124 | } else { 125 | obj.font = [UIFont systemFontOfSize:15.0]; 126 | obj.textColor = [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1]; 127 | } 128 | }]; 129 | CGRect frame = weakSelf.bottomLine.frame; 130 | frame.size.width = 40.; 131 | weakSelf.bottomLine.frame = frame; 132 | weakSelf.bottomLine.center = CGPointMake(CGRectGetMidX(currentLabel.frame), self.frame.size.height-2./2); 133 | } else { 134 | currentLabel.textColor = [weakSelf normalColorWith:1-scale]; 135 | CGFloat offset = 40.*0.75; 136 | CGPoint point = CGPointZero; 137 | if (toIndex > index) { 138 | point = CGPointMake(CGRectGetMidX(currentLabel.frame)+offset*(1-scale), self.frame.size.height-2./2); 139 | } else { 140 | point = CGPointMake(CGRectGetMidX(currentLabel.frame)-offset*(1-scale), self.frame.size.height-2./2); 141 | } 142 | CGFloat width = 40. + offset * (1-scale); 143 | CGRect frame = weakSelf.bottomLine.frame; 144 | frame.size.width = width; 145 | weakSelf.bottomLine.frame = frame; 146 | 147 | weakSelf.bottomLine.center = point; 148 | } 149 | }; 150 | } 151 | return _scrollBlock; 152 | } 153 | 154 | - (UIColor *)normalColorWith:(CGFloat)scale { 155 | 156 | NSDictionary *nDic = [self getRGBDictionaryByColor:[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1]]; 157 | NSDictionary *sDic = [self getRGBDictionaryByColor:[UIColor colorWithRed:52/255.0 green:98/255.0 blue:255/255.0 alpha:1]]; 158 | CGFloat _r = [[sDic objectForKey:@"R"] floatValue] - [[nDic objectForKey:@"R"] floatValue]; 159 | CGFloat _g = [[sDic objectForKey:@"G"] floatValue] - [[nDic objectForKey:@"G"] floatValue]; 160 | CGFloat _b = [[sDic objectForKey:@"B"] floatValue] - [[nDic objectForKey:@"B"] floatValue]; 161 | return [UIColor colorWithRed:([[sDic objectForKey:@"R"] floatValue]-scale*_r)*255/255.0 162 | green:([[sDic objectForKey:@"G"] floatValue]-scale*_g)*255/255.0 163 | blue:([[sDic objectForKey:@"B"] floatValue]-scale*_b)*255/255.0 164 | alpha:1]; 165 | } 166 | 167 | - (UIColor *)selectedColorWith:(CGFloat)scale { 168 | 169 | NSDictionary *nDic = [self getRGBDictionaryByColor:[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1]]; 170 | NSDictionary *sDic = [self getRGBDictionaryByColor:[UIColor colorWithRed:52/255.0 green:98/255.0 blue:255/255.0 alpha:1]]; 171 | CGFloat _r = [[sDic objectForKey:@"R"] floatValue] - [[nDic objectForKey:@"R"] floatValue]; 172 | CGFloat _g = [[sDic objectForKey:@"G"] floatValue] - [[nDic objectForKey:@"G"] floatValue]; 173 | CGFloat _b = [[sDic objectForKey:@"B"] floatValue] - [[nDic objectForKey:@"B"] floatValue]; 174 | 175 | return [UIColor colorWithRed:([[nDic objectForKey:@"R"] floatValue]+scale*_r)*255 176 | green:([[nDic objectForKey:@"G"] floatValue]+scale*_g)*255 177 | blue:([[nDic objectForKey:@"B"] floatValue]+scale*_b)*255 178 | alpha:1]; 179 | } 180 | 181 | - (NSDictionary *)getRGBDictionaryByColor:(UIColor *)originColor{ 182 | 183 | CGFloat r=0,g=0,b=0,a=0; 184 | if ([self respondsToSelector:@selector(getRed:green:blue:alpha:)]) { 185 | [originColor getRed:&r green:&g blue:&b alpha:&a]; 186 | } 187 | else { 188 | const CGFloat *components = CGColorGetComponents(originColor.CGColor); 189 | r = components[0]; 190 | g = components[1]; 191 | b = components[2]; 192 | a = components[3]; 193 | } 194 | return @{@"R":@(r),@"G":@(g),@"B":@(b),@"A":@(a)}; 195 | } 196 | 197 | 198 | #pragma mark --lazy 199 | 200 | -(NSMutableArray *)taps{ 201 | if(!_taps){ 202 | _taps = [NSMutableArray array]; 203 | } 204 | return _taps; 205 | } 206 | 207 | 208 | - (UIView *)bottomLine { 209 | 210 | if (!_bottomLine) { 211 | _bottomLine = [[UIView alloc] initWithFrame:CGRectMake(0, self.frame.size.height-2., 40., 2.)]; 212 | _bottomLine.backgroundColor = [UIColor colorWithRed:52/255.0 green:98/255.0 blue:255/255.0 alpha:1]; 213 | [self addSubview:_bottomLine]; 214 | } 215 | return _bottomLine; 216 | } 217 | 218 | 219 | @end 220 | 221 | 222 | -------------------------------------------------------------------------------- /Pods/MSFlexibleTitleView/README.md: -------------------------------------------------------------------------------- 1 | # MSFlexibleTitleView 2 | 3 | ![](FlexibleTitleView0.gif) 4 | ![](FlexibleTitleView1.gif) 5 | 6 | ``` 7 | MSFlexibleTitleView* titleView = [[MSFlexibleTitleView alloc] initWithTitles:@[@"视频" ,@"人", @"动态"] 8 | showIndex:MSTitleTypeMoment 9 | tapBlock:^(MSFlexibleTitleView *titleView,NSInteger index{ 10 | 11 | }]; 12 | 13 | titleView.scrollBlock(NSInteger index, NSInteger toIndex, CGFloat scale, BOOL end);//selecteAnNewItem 14 | ``` 15 | 16 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - MSFlexibleTitleView (1.0.0) 3 | 4 | DEPENDENCIES: 5 | - MSFlexibleTitleView 6 | 7 | SPEC REPOS: 8 | https://github.com/cocoapods/specs.git: 9 | - MSFlexibleTitleView 10 | 11 | SPEC CHECKSUMS: 12 | MSFlexibleTitleView: 48a972be4a8d9e562133b04b3dfb8b77b53bafa2 13 | 14 | PODFILE CHECKSUM: 84e570653eb8b436525bb1ecde0f058e437edecf 15 | 16 | COCOAPODS: 1.5.3 17 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 53BABD875F1B4978022FCA16BB85B8FB /* MSFlexibleTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = F89B58E5496780853B10C53C1F44097F /* MSFlexibleTitleView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 11 | 5B8C1DC70DEF25DDEC1A908685BF7EA5 /* MSFlexibleTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2576041CA6F774187F925C3CD556185B /* MSFlexibleTitleView.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; 12 | 68DAB944CEC5AD29731AF721A3FF4969 /* Pods-FlexibleTitleViewDEMO-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D8BA1547298B3F45E6123FD1BD99F61E /* Pods-FlexibleTitleViewDEMO-dummy.m */; }; 13 | 866A869220DA6D2A4319EB7CE91A10E1 /* Pods-FlexibleTitleViewDEMOUITests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F10A0975BFA46AC866F9222AC66B7BFA /* Pods-FlexibleTitleViewDEMOUITests-dummy.m */; }; 14 | B1E9CF443077B33BE7B1CE7DFE7B7339 /* Pods-FlexibleTitleViewDEMOTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 74FBB04070AB4D18C3F23FCA3DF91BBE /* Pods-FlexibleTitleViewDEMOTests-dummy.m */; }; 15 | F9871D9D589CFD1DE7196EE40B784441 /* MSFlexibleTitleView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EB0DE3FFB8C10B348B65D5BF058DA45 /* MSFlexibleTitleView-dummy.m */; }; 16 | /* End PBXBuildFile section */ 17 | 18 | /* Begin PBXContainerItemProxy section */ 19 | 4A395307501C3649D614FBA345E4EE74 /* PBXContainerItemProxy */ = { 20 | isa = PBXContainerItemProxy; 21 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 22 | proxyType = 1; 23 | remoteGlobalIDString = 2B548872FB69818AD3F78E9DD2B4FA02; 24 | remoteInfo = "Pods-FlexibleTitleViewDEMO"; 25 | }; 26 | E1FEDE9CDA8040539B06080D3E0A7A2E /* PBXContainerItemProxy */ = { 27 | isa = PBXContainerItemProxy; 28 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 29 | proxyType = 1; 30 | remoteGlobalIDString = 2B548872FB69818AD3F78E9DD2B4FA02; 31 | remoteInfo = "Pods-FlexibleTitleViewDEMO"; 32 | }; 33 | F95B7CD48B2C9306CA9FB76366862DCF /* PBXContainerItemProxy */ = { 34 | isa = PBXContainerItemProxy; 35 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 36 | proxyType = 1; 37 | remoteGlobalIDString = CE98E1462777E5A353B80E8C7075AEE9; 38 | remoteInfo = MSFlexibleTitleView; 39 | }; 40 | /* End PBXContainerItemProxy section */ 41 | 42 | /* Begin PBXFileReference section */ 43 | 00FC8ADD13A17B54D051BE83D4E4B2A6 /* Pods-FlexibleTitleViewDEMOUITests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FlexibleTitleViewDEMOUITests-resources.sh"; sourceTree = ""; }; 44 | 1BD65A265DDF82FC5189DB4D1DB32015 /* MSFlexibleTitleView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MSFlexibleTitleView.xcconfig; sourceTree = ""; }; 45 | 1F40CCA6241D73C45AA968216C0D611D /* libPods-FlexibleTitleViewDEMO.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-FlexibleTitleViewDEMO.a"; path = "libPods-FlexibleTitleViewDEMO.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 46 | 2576041CA6F774187F925C3CD556185B /* MSFlexibleTitleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MSFlexibleTitleView.m; path = MSFlexibleTitleView/MSFlexibleTitleView.m; sourceTree = ""; }; 47 | 26D98B1B4419173A3EFF8074030E6982 /* Pods-FlexibleTitleViewDEMOTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FlexibleTitleViewDEMOTests.release.xcconfig"; sourceTree = ""; }; 48 | 38958E08E6726C715EA34E7D5E16A9EA /* Pods-FlexibleTitleViewDEMOUITests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FlexibleTitleViewDEMOUITests-acknowledgements.markdown"; sourceTree = ""; }; 49 | 39749E30818DAC89EDDA9038991FC6AD /* Pods-FlexibleTitleViewDEMO.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FlexibleTitleViewDEMO.release.xcconfig"; sourceTree = ""; }; 50 | 497A244C5E5D5368E48AAC2564B297A1 /* Pods-FlexibleTitleViewDEMO-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FlexibleTitleViewDEMO-resources.sh"; sourceTree = ""; }; 51 | 4D64DB30ED300BE6E985A53694A07A04 /* Pods-FlexibleTitleViewDEMO-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FlexibleTitleViewDEMO-acknowledgements.markdown"; sourceTree = ""; }; 52 | 4D9EC9AE249E6F9CDC4024036361A194 /* libMSFlexibleTitleView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMSFlexibleTitleView.a; path = libMSFlexibleTitleView.a; sourceTree = BUILT_PRODUCTS_DIR; }; 53 | 50D4E4769DD49C732762B5BE17A75705 /* Pods-FlexibleTitleViewDEMO-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FlexibleTitleViewDEMO-acknowledgements.plist"; sourceTree = ""; }; 54 | 59E6EF5EEB6E287A32DBDF432376E213 /* MSFlexibleTitleView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MSFlexibleTitleView-prefix.pch"; sourceTree = ""; }; 55 | 65051D0D2474E36433C25F70B849BA00 /* Pods-FlexibleTitleViewDEMOTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FlexibleTitleViewDEMOTests-frameworks.sh"; sourceTree = ""; }; 56 | 74FBB04070AB4D18C3F23FCA3DF91BBE /* Pods-FlexibleTitleViewDEMOTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FlexibleTitleViewDEMOTests-dummy.m"; sourceTree = ""; }; 57 | 85001FFD85963E66C3631F617F8918D0 /* Pods-FlexibleTitleViewDEMOUITests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FlexibleTitleViewDEMOUITests-frameworks.sh"; sourceTree = ""; }; 58 | 8595BA468EA3B7947D2831F9245880AA /* Pods-FlexibleTitleViewDEMOTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FlexibleTitleViewDEMOTests-resources.sh"; sourceTree = ""; }; 59 | 8EB0DE3FFB8C10B348B65D5BF058DA45 /* MSFlexibleTitleView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MSFlexibleTitleView-dummy.m"; sourceTree = ""; }; 60 | 8F0543A74E2BD743176A07FDDA4887A0 /* Pods-FlexibleTitleViewDEMOUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FlexibleTitleViewDEMOUITests.release.xcconfig"; sourceTree = ""; }; 61 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 62 | 9BB4B36C40300406F3A6ABA8A559E059 /* Pods-FlexibleTitleViewDEMOUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FlexibleTitleViewDEMOUITests.debug.xcconfig"; sourceTree = ""; }; 63 | 9BE037843534731D0CC520F3D80D1AA9 /* libPods-FlexibleTitleViewDEMOUITests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-FlexibleTitleViewDEMOUITests.a"; path = "libPods-FlexibleTitleViewDEMOUITests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 64 | AC2E0ADE66C532761C585B71CDE436F1 /* Pods-FlexibleTitleViewDEMOUITests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FlexibleTitleViewDEMOUITests-acknowledgements.plist"; sourceTree = ""; }; 65 | C153AE763CFDB735ECBB68358F8A1386 /* Pods-FlexibleTitleViewDEMOTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FlexibleTitleViewDEMOTests-acknowledgements.markdown"; sourceTree = ""; }; 66 | C4405C2B40B11A0307C508B06C4074FB /* Pods-FlexibleTitleViewDEMOTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FlexibleTitleViewDEMOTests.debug.xcconfig"; sourceTree = ""; }; 67 | D7DCAC700D4BF1787CB22B6F45A2376B /* Pods-FlexibleTitleViewDEMO.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FlexibleTitleViewDEMO.debug.xcconfig"; sourceTree = ""; }; 68 | D8BA1547298B3F45E6123FD1BD99F61E /* Pods-FlexibleTitleViewDEMO-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FlexibleTitleViewDEMO-dummy.m"; sourceTree = ""; }; 69 | D914E4029995B42C0266ED42D5F9AD2E /* Pods-FlexibleTitleViewDEMO-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FlexibleTitleViewDEMO-frameworks.sh"; sourceTree = ""; }; 70 | D98990A18713930E9665CF1606026B22 /* Pods-FlexibleTitleViewDEMOTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FlexibleTitleViewDEMOTests-acknowledgements.plist"; sourceTree = ""; }; 71 | F09A43BF16BE0819AF1A4A6B23BB6468 /* libPods-FlexibleTitleViewDEMOTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-FlexibleTitleViewDEMOTests.a"; path = "libPods-FlexibleTitleViewDEMOTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 72 | F10A0975BFA46AC866F9222AC66B7BFA /* Pods-FlexibleTitleViewDEMOUITests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FlexibleTitleViewDEMOUITests-dummy.m"; sourceTree = ""; }; 73 | F89B58E5496780853B10C53C1F44097F /* MSFlexibleTitleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MSFlexibleTitleView.h; path = MSFlexibleTitleView/MSFlexibleTitleView.h; sourceTree = ""; }; 74 | /* End PBXFileReference section */ 75 | 76 | /* Begin PBXFrameworksBuildPhase section */ 77 | 009F65E33FEF608E10FBB5E5262375D4 /* Frameworks */ = { 78 | isa = PBXFrameworksBuildPhase; 79 | buildActionMask = 2147483647; 80 | files = ( 81 | ); 82 | runOnlyForDeploymentPostprocessing = 0; 83 | }; 84 | 34752A1DDA551D6776AE0CC658ED7591 /* Frameworks */ = { 85 | isa = PBXFrameworksBuildPhase; 86 | buildActionMask = 2147483647; 87 | files = ( 88 | ); 89 | runOnlyForDeploymentPostprocessing = 0; 90 | }; 91 | 67E060B50893ABB91B4E7B76DCF7D550 /* Frameworks */ = { 92 | isa = PBXFrameworksBuildPhase; 93 | buildActionMask = 2147483647; 94 | files = ( 95 | ); 96 | runOnlyForDeploymentPostprocessing = 0; 97 | }; 98 | B43AF64E44CD8F320450FCC4FD24A5AD /* Frameworks */ = { 99 | isa = PBXFrameworksBuildPhase; 100 | buildActionMask = 2147483647; 101 | files = ( 102 | ); 103 | runOnlyForDeploymentPostprocessing = 0; 104 | }; 105 | /* End PBXFrameworksBuildPhase section */ 106 | 107 | /* Begin PBXGroup section */ 108 | 0DDA444ED2D716380EEE5B7ACA05E2A7 /* MSFlexibleTitleView */ = { 109 | isa = PBXGroup; 110 | children = ( 111 | F89B58E5496780853B10C53C1F44097F /* MSFlexibleTitleView.h */, 112 | 2576041CA6F774187F925C3CD556185B /* MSFlexibleTitleView.m */, 113 | 77F8767F118530A0830325307036947D /* Support Files */, 114 | ); 115 | name = MSFlexibleTitleView; 116 | path = MSFlexibleTitleView; 117 | sourceTree = ""; 118 | }; 119 | 0F8D2E47FE03D3B91B51069F7C273AF4 /* Frameworks */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | ); 123 | name = Frameworks; 124 | sourceTree = ""; 125 | }; 126 | 1B4E26D04BF881DE17FAC7FE08467C22 /* Pods */ = { 127 | isa = PBXGroup; 128 | children = ( 129 | 0DDA444ED2D716380EEE5B7ACA05E2A7 /* MSFlexibleTitleView */, 130 | ); 131 | name = Pods; 132 | sourceTree = ""; 133 | }; 134 | 274DA01E6F3B369D24C1A8B71DB32825 /* Pods-FlexibleTitleViewDEMOUITests */ = { 135 | isa = PBXGroup; 136 | children = ( 137 | 38958E08E6726C715EA34E7D5E16A9EA /* Pods-FlexibleTitleViewDEMOUITests-acknowledgements.markdown */, 138 | AC2E0ADE66C532761C585B71CDE436F1 /* Pods-FlexibleTitleViewDEMOUITests-acknowledgements.plist */, 139 | F10A0975BFA46AC866F9222AC66B7BFA /* Pods-FlexibleTitleViewDEMOUITests-dummy.m */, 140 | 85001FFD85963E66C3631F617F8918D0 /* Pods-FlexibleTitleViewDEMOUITests-frameworks.sh */, 141 | 00FC8ADD13A17B54D051BE83D4E4B2A6 /* Pods-FlexibleTitleViewDEMOUITests-resources.sh */, 142 | 9BB4B36C40300406F3A6ABA8A559E059 /* Pods-FlexibleTitleViewDEMOUITests.debug.xcconfig */, 143 | 8F0543A74E2BD743176A07FDDA4887A0 /* Pods-FlexibleTitleViewDEMOUITests.release.xcconfig */, 144 | ); 145 | name = "Pods-FlexibleTitleViewDEMOUITests"; 146 | path = "Target Support Files/Pods-FlexibleTitleViewDEMOUITests"; 147 | sourceTree = ""; 148 | }; 149 | 5813C4229FF988B7CD88B60BEAF43BC4 /* Products */ = { 150 | isa = PBXGroup; 151 | children = ( 152 | 4D9EC9AE249E6F9CDC4024036361A194 /* libMSFlexibleTitleView.a */, 153 | 1F40CCA6241D73C45AA968216C0D611D /* libPods-FlexibleTitleViewDEMO.a */, 154 | F09A43BF16BE0819AF1A4A6B23BB6468 /* libPods-FlexibleTitleViewDEMOTests.a */, 155 | 9BE037843534731D0CC520F3D80D1AA9 /* libPods-FlexibleTitleViewDEMOUITests.a */, 156 | ); 157 | name = Products; 158 | sourceTree = ""; 159 | }; 160 | 689F296CA3178AA0719AF89741EA39E5 /* Pods-FlexibleTitleViewDEMOTests */ = { 161 | isa = PBXGroup; 162 | children = ( 163 | C153AE763CFDB735ECBB68358F8A1386 /* Pods-FlexibleTitleViewDEMOTests-acknowledgements.markdown */, 164 | D98990A18713930E9665CF1606026B22 /* Pods-FlexibleTitleViewDEMOTests-acknowledgements.plist */, 165 | 74FBB04070AB4D18C3F23FCA3DF91BBE /* Pods-FlexibleTitleViewDEMOTests-dummy.m */, 166 | 65051D0D2474E36433C25F70B849BA00 /* Pods-FlexibleTitleViewDEMOTests-frameworks.sh */, 167 | 8595BA468EA3B7947D2831F9245880AA /* Pods-FlexibleTitleViewDEMOTests-resources.sh */, 168 | C4405C2B40B11A0307C508B06C4074FB /* Pods-FlexibleTitleViewDEMOTests.debug.xcconfig */, 169 | 26D98B1B4419173A3EFF8074030E6982 /* Pods-FlexibleTitleViewDEMOTests.release.xcconfig */, 170 | ); 171 | name = "Pods-FlexibleTitleViewDEMOTests"; 172 | path = "Target Support Files/Pods-FlexibleTitleViewDEMOTests"; 173 | sourceTree = ""; 174 | }; 175 | 77F8767F118530A0830325307036947D /* Support Files */ = { 176 | isa = PBXGroup; 177 | children = ( 178 | 1BD65A265DDF82FC5189DB4D1DB32015 /* MSFlexibleTitleView.xcconfig */, 179 | 8EB0DE3FFB8C10B348B65D5BF058DA45 /* MSFlexibleTitleView-dummy.m */, 180 | 59E6EF5EEB6E287A32DBDF432376E213 /* MSFlexibleTitleView-prefix.pch */, 181 | ); 182 | name = "Support Files"; 183 | path = "../Target Support Files/MSFlexibleTitleView"; 184 | sourceTree = ""; 185 | }; 186 | 7DB346D0F39D3F0E887471402A8071AB = { 187 | isa = PBXGroup; 188 | children = ( 189 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 190 | 0F8D2E47FE03D3B91B51069F7C273AF4 /* Frameworks */, 191 | 1B4E26D04BF881DE17FAC7FE08467C22 /* Pods */, 192 | 5813C4229FF988B7CD88B60BEAF43BC4 /* Products */, 193 | C5F05A3DA3FFBCC1F24A19B420B1C25B /* Targets Support Files */, 194 | ); 195 | sourceTree = ""; 196 | }; 197 | 821CDA1815F4182DE6B90529405C022C /* Pods-FlexibleTitleViewDEMO */ = { 198 | isa = PBXGroup; 199 | children = ( 200 | 4D64DB30ED300BE6E985A53694A07A04 /* Pods-FlexibleTitleViewDEMO-acknowledgements.markdown */, 201 | 50D4E4769DD49C732762B5BE17A75705 /* Pods-FlexibleTitleViewDEMO-acknowledgements.plist */, 202 | D8BA1547298B3F45E6123FD1BD99F61E /* Pods-FlexibleTitleViewDEMO-dummy.m */, 203 | D914E4029995B42C0266ED42D5F9AD2E /* Pods-FlexibleTitleViewDEMO-frameworks.sh */, 204 | 497A244C5E5D5368E48AAC2564B297A1 /* Pods-FlexibleTitleViewDEMO-resources.sh */, 205 | D7DCAC700D4BF1787CB22B6F45A2376B /* Pods-FlexibleTitleViewDEMO.debug.xcconfig */, 206 | 39749E30818DAC89EDDA9038991FC6AD /* Pods-FlexibleTitleViewDEMO.release.xcconfig */, 207 | ); 208 | name = "Pods-FlexibleTitleViewDEMO"; 209 | path = "Target Support Files/Pods-FlexibleTitleViewDEMO"; 210 | sourceTree = ""; 211 | }; 212 | C5F05A3DA3FFBCC1F24A19B420B1C25B /* Targets Support Files */ = { 213 | isa = PBXGroup; 214 | children = ( 215 | 821CDA1815F4182DE6B90529405C022C /* Pods-FlexibleTitleViewDEMO */, 216 | 689F296CA3178AA0719AF89741EA39E5 /* Pods-FlexibleTitleViewDEMOTests */, 217 | 274DA01E6F3B369D24C1A8B71DB32825 /* Pods-FlexibleTitleViewDEMOUITests */, 218 | ); 219 | name = "Targets Support Files"; 220 | sourceTree = ""; 221 | }; 222 | /* End PBXGroup section */ 223 | 224 | /* Begin PBXHeadersBuildPhase section */ 225 | 022712F59D8FA0198C4DB84AEA4C725F /* Headers */ = { 226 | isa = PBXHeadersBuildPhase; 227 | buildActionMask = 2147483647; 228 | files = ( 229 | 53BABD875F1B4978022FCA16BB85B8FB /* MSFlexibleTitleView.h in Headers */, 230 | ); 231 | runOnlyForDeploymentPostprocessing = 0; 232 | }; 233 | 07916E9FEFB0DE382F312ECEC320C62D /* Headers */ = { 234 | isa = PBXHeadersBuildPhase; 235 | buildActionMask = 2147483647; 236 | files = ( 237 | ); 238 | runOnlyForDeploymentPostprocessing = 0; 239 | }; 240 | 2D51A17F36974E92BE3BAA03008CA9AE /* Headers */ = { 241 | isa = PBXHeadersBuildPhase; 242 | buildActionMask = 2147483647; 243 | files = ( 244 | ); 245 | runOnlyForDeploymentPostprocessing = 0; 246 | }; 247 | F3D75575053FF685C51B63331D04D18D /* Headers */ = { 248 | isa = PBXHeadersBuildPhase; 249 | buildActionMask = 2147483647; 250 | files = ( 251 | ); 252 | runOnlyForDeploymentPostprocessing = 0; 253 | }; 254 | /* End PBXHeadersBuildPhase section */ 255 | 256 | /* Begin PBXNativeTarget section */ 257 | 2B548872FB69818AD3F78E9DD2B4FA02 /* Pods-FlexibleTitleViewDEMO */ = { 258 | isa = PBXNativeTarget; 259 | buildConfigurationList = EF6179524B7ECF20A65A933BA7E67D14 /* Build configuration list for PBXNativeTarget "Pods-FlexibleTitleViewDEMO" */; 260 | buildPhases = ( 261 | 07916E9FEFB0DE382F312ECEC320C62D /* Headers */, 262 | 7DC87AEFB5D7E40249C44CC1F4D36F44 /* Sources */, 263 | 009F65E33FEF608E10FBB5E5262375D4 /* Frameworks */, 264 | ); 265 | buildRules = ( 266 | ); 267 | dependencies = ( 268 | 7460A4834154D1A71F407EB6C3CD85FD /* PBXTargetDependency */, 269 | ); 270 | name = "Pods-FlexibleTitleViewDEMO"; 271 | productName = "Pods-FlexibleTitleViewDEMO"; 272 | productReference = 1F40CCA6241D73C45AA968216C0D611D /* libPods-FlexibleTitleViewDEMO.a */; 273 | productType = "com.apple.product-type.library.static"; 274 | }; 275 | B72F69A6507B63F72C8358EC6B135463 /* Pods-FlexibleTitleViewDEMOTests */ = { 276 | isa = PBXNativeTarget; 277 | buildConfigurationList = F59C3BD2AFF2261290A3E5D02170DFCB /* Build configuration list for PBXNativeTarget "Pods-FlexibleTitleViewDEMOTests" */; 278 | buildPhases = ( 279 | 2D51A17F36974E92BE3BAA03008CA9AE /* Headers */, 280 | 76FF4D10165D487925A46DD68975440E /* Sources */, 281 | B43AF64E44CD8F320450FCC4FD24A5AD /* Frameworks */, 282 | ); 283 | buildRules = ( 284 | ); 285 | dependencies = ( 286 | 5DF4D44667A2D343FA014717EBAD55F4 /* PBXTargetDependency */, 287 | ); 288 | name = "Pods-FlexibleTitleViewDEMOTests"; 289 | productName = "Pods-FlexibleTitleViewDEMOTests"; 290 | productReference = F09A43BF16BE0819AF1A4A6B23BB6468 /* libPods-FlexibleTitleViewDEMOTests.a */; 291 | productType = "com.apple.product-type.library.static"; 292 | }; 293 | CE98E1462777E5A353B80E8C7075AEE9 /* MSFlexibleTitleView */ = { 294 | isa = PBXNativeTarget; 295 | buildConfigurationList = D49967A9AC75EA031998D78DC39FF7DD /* Build configuration list for PBXNativeTarget "MSFlexibleTitleView" */; 296 | buildPhases = ( 297 | 022712F59D8FA0198C4DB84AEA4C725F /* Headers */, 298 | D0EB7AE4E15B3A77767B846DCBCC6600 /* Sources */, 299 | 34752A1DDA551D6776AE0CC658ED7591 /* Frameworks */, 300 | ); 301 | buildRules = ( 302 | ); 303 | dependencies = ( 304 | ); 305 | name = MSFlexibleTitleView; 306 | productName = MSFlexibleTitleView; 307 | productReference = 4D9EC9AE249E6F9CDC4024036361A194 /* libMSFlexibleTitleView.a */; 308 | productType = "com.apple.product-type.library.static"; 309 | }; 310 | F11A982356FF26B95CEB4CE3DF668372 /* Pods-FlexibleTitleViewDEMOUITests */ = { 311 | isa = PBXNativeTarget; 312 | buildConfigurationList = 571FEEFAB75CD6EE790AF53C34C01A34 /* Build configuration list for PBXNativeTarget "Pods-FlexibleTitleViewDEMOUITests" */; 313 | buildPhases = ( 314 | F3D75575053FF685C51B63331D04D18D /* Headers */, 315 | 5F1E0AFFACA1F2D4EC1298A052C3A281 /* Sources */, 316 | 67E060B50893ABB91B4E7B76DCF7D550 /* Frameworks */, 317 | ); 318 | buildRules = ( 319 | ); 320 | dependencies = ( 321 | CC0E8603AF409025B87A01359709DB84 /* PBXTargetDependency */, 322 | ); 323 | name = "Pods-FlexibleTitleViewDEMOUITests"; 324 | productName = "Pods-FlexibleTitleViewDEMOUITests"; 325 | productReference = 9BE037843534731D0CC520F3D80D1AA9 /* libPods-FlexibleTitleViewDEMOUITests.a */; 326 | productType = "com.apple.product-type.library.static"; 327 | }; 328 | /* End PBXNativeTarget section */ 329 | 330 | /* Begin PBXProject section */ 331 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 332 | isa = PBXProject; 333 | attributes = { 334 | LastSwiftUpdateCheck = 0930; 335 | LastUpgradeCheck = 0930; 336 | }; 337 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 338 | compatibilityVersion = "Xcode 3.2"; 339 | developmentRegion = English; 340 | hasScannedForEncodings = 0; 341 | knownRegions = ( 342 | en, 343 | ); 344 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 345 | productRefGroup = 5813C4229FF988B7CD88B60BEAF43BC4 /* Products */; 346 | projectDirPath = ""; 347 | projectRoot = ""; 348 | targets = ( 349 | CE98E1462777E5A353B80E8C7075AEE9 /* MSFlexibleTitleView */, 350 | 2B548872FB69818AD3F78E9DD2B4FA02 /* Pods-FlexibleTitleViewDEMO */, 351 | B72F69A6507B63F72C8358EC6B135463 /* Pods-FlexibleTitleViewDEMOTests */, 352 | F11A982356FF26B95CEB4CE3DF668372 /* Pods-FlexibleTitleViewDEMOUITests */, 353 | ); 354 | }; 355 | /* End PBXProject section */ 356 | 357 | /* Begin PBXSourcesBuildPhase section */ 358 | 5F1E0AFFACA1F2D4EC1298A052C3A281 /* Sources */ = { 359 | isa = PBXSourcesBuildPhase; 360 | buildActionMask = 2147483647; 361 | files = ( 362 | 866A869220DA6D2A4319EB7CE91A10E1 /* Pods-FlexibleTitleViewDEMOUITests-dummy.m in Sources */, 363 | ); 364 | runOnlyForDeploymentPostprocessing = 0; 365 | }; 366 | 76FF4D10165D487925A46DD68975440E /* Sources */ = { 367 | isa = PBXSourcesBuildPhase; 368 | buildActionMask = 2147483647; 369 | files = ( 370 | B1E9CF443077B33BE7B1CE7DFE7B7339 /* Pods-FlexibleTitleViewDEMOTests-dummy.m in Sources */, 371 | ); 372 | runOnlyForDeploymentPostprocessing = 0; 373 | }; 374 | 7DC87AEFB5D7E40249C44CC1F4D36F44 /* Sources */ = { 375 | isa = PBXSourcesBuildPhase; 376 | buildActionMask = 2147483647; 377 | files = ( 378 | 68DAB944CEC5AD29731AF721A3FF4969 /* Pods-FlexibleTitleViewDEMO-dummy.m in Sources */, 379 | ); 380 | runOnlyForDeploymentPostprocessing = 0; 381 | }; 382 | D0EB7AE4E15B3A77767B846DCBCC6600 /* Sources */ = { 383 | isa = PBXSourcesBuildPhase; 384 | buildActionMask = 2147483647; 385 | files = ( 386 | F9871D9D589CFD1DE7196EE40B784441 /* MSFlexibleTitleView-dummy.m in Sources */, 387 | 5B8C1DC70DEF25DDEC1A908685BF7EA5 /* MSFlexibleTitleView.m in Sources */, 388 | ); 389 | runOnlyForDeploymentPostprocessing = 0; 390 | }; 391 | /* End PBXSourcesBuildPhase section */ 392 | 393 | /* Begin PBXTargetDependency section */ 394 | 5DF4D44667A2D343FA014717EBAD55F4 /* PBXTargetDependency */ = { 395 | isa = PBXTargetDependency; 396 | name = "Pods-FlexibleTitleViewDEMO"; 397 | target = 2B548872FB69818AD3F78E9DD2B4FA02 /* Pods-FlexibleTitleViewDEMO */; 398 | targetProxy = E1FEDE9CDA8040539B06080D3E0A7A2E /* PBXContainerItemProxy */; 399 | }; 400 | 7460A4834154D1A71F407EB6C3CD85FD /* PBXTargetDependency */ = { 401 | isa = PBXTargetDependency; 402 | name = MSFlexibleTitleView; 403 | target = CE98E1462777E5A353B80E8C7075AEE9 /* MSFlexibleTitleView */; 404 | targetProxy = F95B7CD48B2C9306CA9FB76366862DCF /* PBXContainerItemProxy */; 405 | }; 406 | CC0E8603AF409025B87A01359709DB84 /* PBXTargetDependency */ = { 407 | isa = PBXTargetDependency; 408 | name = "Pods-FlexibleTitleViewDEMO"; 409 | target = 2B548872FB69818AD3F78E9DD2B4FA02 /* Pods-FlexibleTitleViewDEMO */; 410 | targetProxy = 4A395307501C3649D614FBA345E4EE74 /* PBXContainerItemProxy */; 411 | }; 412 | /* End PBXTargetDependency section */ 413 | 414 | /* Begin XCBuildConfiguration section */ 415 | 08775E5F7110BD3E6DFEA1E172E58205 /* Release */ = { 416 | isa = XCBuildConfiguration; 417 | baseConfigurationReference = 8F0543A74E2BD743176A07FDDA4887A0 /* Pods-FlexibleTitleViewDEMOUITests.release.xcconfig */; 418 | buildSettings = { 419 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 420 | CODE_SIGN_IDENTITY = "iPhone Developer"; 421 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 422 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 423 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 424 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 425 | MACH_O_TYPE = staticlib; 426 | OTHER_LDFLAGS = ""; 427 | OTHER_LIBTOOLFLAGS = ""; 428 | PODS_ROOT = "$(SRCROOT)"; 429 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 430 | SDKROOT = iphoneos; 431 | SKIP_INSTALL = YES; 432 | TARGETED_DEVICE_FAMILY = "1,2"; 433 | VALIDATE_PRODUCT = YES; 434 | }; 435 | name = Release; 436 | }; 437 | 0AED517683EE2807FBF2A3531956B112 /* Release */ = { 438 | isa = XCBuildConfiguration; 439 | baseConfigurationReference = 39749E30818DAC89EDDA9038991FC6AD /* Pods-FlexibleTitleViewDEMO.release.xcconfig */; 440 | buildSettings = { 441 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 442 | CODE_SIGN_IDENTITY = "iPhone Developer"; 443 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 444 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 445 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 446 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 447 | MACH_O_TYPE = staticlib; 448 | OTHER_LDFLAGS = ""; 449 | OTHER_LIBTOOLFLAGS = ""; 450 | PODS_ROOT = "$(SRCROOT)"; 451 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 452 | SDKROOT = iphoneos; 453 | SKIP_INSTALL = YES; 454 | TARGETED_DEVICE_FAMILY = "1,2"; 455 | VALIDATE_PRODUCT = YES; 456 | }; 457 | name = Release; 458 | }; 459 | 0D8E209F200780B6845D1CDA37C7CD9D /* Debug */ = { 460 | isa = XCBuildConfiguration; 461 | baseConfigurationReference = 9BB4B36C40300406F3A6ABA8A559E059 /* Pods-FlexibleTitleViewDEMOUITests.debug.xcconfig */; 462 | buildSettings = { 463 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 464 | CODE_SIGN_IDENTITY = "iPhone Developer"; 465 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 466 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 467 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 468 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 469 | MACH_O_TYPE = staticlib; 470 | OTHER_LDFLAGS = ""; 471 | OTHER_LIBTOOLFLAGS = ""; 472 | PODS_ROOT = "$(SRCROOT)"; 473 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 474 | SDKROOT = iphoneos; 475 | SKIP_INSTALL = YES; 476 | TARGETED_DEVICE_FAMILY = "1,2"; 477 | }; 478 | name = Debug; 479 | }; 480 | 270E45448109890ECBE70CEAB7600D8A /* Release */ = { 481 | isa = XCBuildConfiguration; 482 | baseConfigurationReference = 1BD65A265DDF82FC5189DB4D1DB32015 /* MSFlexibleTitleView.xcconfig */; 483 | buildSettings = { 484 | CODE_SIGN_IDENTITY = "iPhone Developer"; 485 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 486 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 487 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 488 | GCC_PREFIX_HEADER = "Target Support Files/MSFlexibleTitleView/MSFlexibleTitleView-prefix.pch"; 489 | IPHONEOS_DEPLOYMENT_TARGET = 5.0; 490 | OTHER_LDFLAGS = ""; 491 | OTHER_LIBTOOLFLAGS = ""; 492 | PRIVATE_HEADERS_FOLDER_PATH = ""; 493 | PRODUCT_MODULE_NAME = MSFlexibleTitleView; 494 | PRODUCT_NAME = MSFlexibleTitleView; 495 | PUBLIC_HEADERS_FOLDER_PATH = ""; 496 | SDKROOT = iphoneos; 497 | SKIP_INSTALL = YES; 498 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 499 | TARGETED_DEVICE_FAMILY = "1,2"; 500 | VALIDATE_PRODUCT = YES; 501 | }; 502 | name = Release; 503 | }; 504 | 35CC7DBA5B0BBF54572D494DB8405528 /* Debug */ = { 505 | isa = XCBuildConfiguration; 506 | baseConfigurationReference = C4405C2B40B11A0307C508B06C4074FB /* Pods-FlexibleTitleViewDEMOTests.debug.xcconfig */; 507 | buildSettings = { 508 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 509 | CODE_SIGN_IDENTITY = "iPhone Developer"; 510 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 511 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 512 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 513 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 514 | MACH_O_TYPE = staticlib; 515 | OTHER_LDFLAGS = ""; 516 | OTHER_LIBTOOLFLAGS = ""; 517 | PODS_ROOT = "$(SRCROOT)"; 518 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 519 | SDKROOT = iphoneos; 520 | SKIP_INSTALL = YES; 521 | TARGETED_DEVICE_FAMILY = "1,2"; 522 | }; 523 | name = Debug; 524 | }; 525 | 5FE875A95A4F6B4D6035FBE38CE6AA5B /* Debug */ = { 526 | isa = XCBuildConfiguration; 527 | baseConfigurationReference = 1BD65A265DDF82FC5189DB4D1DB32015 /* MSFlexibleTitleView.xcconfig */; 528 | buildSettings = { 529 | CODE_SIGN_IDENTITY = "iPhone Developer"; 530 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 531 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 532 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 533 | GCC_PREFIX_HEADER = "Target Support Files/MSFlexibleTitleView/MSFlexibleTitleView-prefix.pch"; 534 | IPHONEOS_DEPLOYMENT_TARGET = 5.0; 535 | OTHER_LDFLAGS = ""; 536 | OTHER_LIBTOOLFLAGS = ""; 537 | PRIVATE_HEADERS_FOLDER_PATH = ""; 538 | PRODUCT_MODULE_NAME = MSFlexibleTitleView; 539 | PRODUCT_NAME = MSFlexibleTitleView; 540 | PUBLIC_HEADERS_FOLDER_PATH = ""; 541 | SDKROOT = iphoneos; 542 | SKIP_INSTALL = YES; 543 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 544 | TARGETED_DEVICE_FAMILY = "1,2"; 545 | }; 546 | name = Debug; 547 | }; 548 | 96434B6C8FF320C976A10DAD7174A4BB /* Release */ = { 549 | isa = XCBuildConfiguration; 550 | buildSettings = { 551 | ALWAYS_SEARCH_USER_PATHS = NO; 552 | CLANG_ANALYZER_NONNULL = YES; 553 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 554 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 555 | CLANG_CXX_LIBRARY = "libc++"; 556 | CLANG_ENABLE_MODULES = YES; 557 | CLANG_ENABLE_OBJC_ARC = YES; 558 | CLANG_ENABLE_OBJC_WEAK = YES; 559 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 560 | CLANG_WARN_BOOL_CONVERSION = YES; 561 | CLANG_WARN_COMMA = YES; 562 | CLANG_WARN_CONSTANT_CONVERSION = YES; 563 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 564 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 565 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 566 | CLANG_WARN_EMPTY_BODY = YES; 567 | CLANG_WARN_ENUM_CONVERSION = YES; 568 | CLANG_WARN_INFINITE_RECURSION = YES; 569 | CLANG_WARN_INT_CONVERSION = YES; 570 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 571 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 572 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 573 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 574 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 575 | CLANG_WARN_STRICT_PROTOTYPES = YES; 576 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 577 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 578 | CLANG_WARN_UNREACHABLE_CODE = YES; 579 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 580 | CODE_SIGNING_ALLOWED = NO; 581 | CODE_SIGNING_REQUIRED = NO; 582 | COPY_PHASE_STRIP = NO; 583 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 584 | ENABLE_NS_ASSERTIONS = NO; 585 | ENABLE_STRICT_OBJC_MSGSEND = YES; 586 | GCC_C_LANGUAGE_STANDARD = gnu11; 587 | GCC_NO_COMMON_BLOCKS = YES; 588 | GCC_PREPROCESSOR_DEFINITIONS = ( 589 | "POD_CONFIGURATION_RELEASE=1", 590 | "$(inherited)", 591 | ); 592 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 593 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 594 | GCC_WARN_UNDECLARED_SELECTOR = YES; 595 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 596 | GCC_WARN_UNUSED_FUNCTION = YES; 597 | GCC_WARN_UNUSED_VARIABLE = YES; 598 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 599 | MTL_ENABLE_DEBUG_INFO = NO; 600 | MTL_FAST_MATH = YES; 601 | PRODUCT_NAME = "$(TARGET_NAME)"; 602 | STRIP_INSTALLED_PRODUCT = NO; 603 | SYMROOT = "${SRCROOT}/../build"; 604 | }; 605 | name = Release; 606 | }; 607 | D11C82AF2204B41B80412B8DC9C1D652 /* Debug */ = { 608 | isa = XCBuildConfiguration; 609 | buildSettings = { 610 | ALWAYS_SEARCH_USER_PATHS = NO; 611 | CLANG_ANALYZER_NONNULL = YES; 612 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 613 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 614 | CLANG_CXX_LIBRARY = "libc++"; 615 | CLANG_ENABLE_MODULES = YES; 616 | CLANG_ENABLE_OBJC_ARC = YES; 617 | CLANG_ENABLE_OBJC_WEAK = YES; 618 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 619 | CLANG_WARN_BOOL_CONVERSION = YES; 620 | CLANG_WARN_COMMA = YES; 621 | CLANG_WARN_CONSTANT_CONVERSION = YES; 622 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 623 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 624 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 625 | CLANG_WARN_EMPTY_BODY = YES; 626 | CLANG_WARN_ENUM_CONVERSION = YES; 627 | CLANG_WARN_INFINITE_RECURSION = YES; 628 | CLANG_WARN_INT_CONVERSION = YES; 629 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 630 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 631 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 632 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 633 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 634 | CLANG_WARN_STRICT_PROTOTYPES = YES; 635 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 636 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 637 | CLANG_WARN_UNREACHABLE_CODE = YES; 638 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 639 | CODE_SIGNING_ALLOWED = NO; 640 | CODE_SIGNING_REQUIRED = NO; 641 | COPY_PHASE_STRIP = NO; 642 | DEBUG_INFORMATION_FORMAT = dwarf; 643 | ENABLE_STRICT_OBJC_MSGSEND = YES; 644 | ENABLE_TESTABILITY = YES; 645 | GCC_C_LANGUAGE_STANDARD = gnu11; 646 | GCC_DYNAMIC_NO_PIC = NO; 647 | GCC_NO_COMMON_BLOCKS = YES; 648 | GCC_OPTIMIZATION_LEVEL = 0; 649 | GCC_PREPROCESSOR_DEFINITIONS = ( 650 | "POD_CONFIGURATION_DEBUG=1", 651 | "DEBUG=1", 652 | "$(inherited)", 653 | ); 654 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 655 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 656 | GCC_WARN_UNDECLARED_SELECTOR = YES; 657 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 658 | GCC_WARN_UNUSED_FUNCTION = YES; 659 | GCC_WARN_UNUSED_VARIABLE = YES; 660 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 661 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 662 | MTL_FAST_MATH = YES; 663 | ONLY_ACTIVE_ARCH = YES; 664 | PRODUCT_NAME = "$(TARGET_NAME)"; 665 | STRIP_INSTALLED_PRODUCT = NO; 666 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 667 | SYMROOT = "${SRCROOT}/../build"; 668 | }; 669 | name = Debug; 670 | }; 671 | E85D78A0EDE8B743AD1986943678B958 /* Release */ = { 672 | isa = XCBuildConfiguration; 673 | baseConfigurationReference = 26D98B1B4419173A3EFF8074030E6982 /* Pods-FlexibleTitleViewDEMOTests.release.xcconfig */; 674 | buildSettings = { 675 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 676 | CODE_SIGN_IDENTITY = "iPhone Developer"; 677 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 678 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 679 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 680 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 681 | MACH_O_TYPE = staticlib; 682 | OTHER_LDFLAGS = ""; 683 | OTHER_LIBTOOLFLAGS = ""; 684 | PODS_ROOT = "$(SRCROOT)"; 685 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 686 | SDKROOT = iphoneos; 687 | SKIP_INSTALL = YES; 688 | TARGETED_DEVICE_FAMILY = "1,2"; 689 | VALIDATE_PRODUCT = YES; 690 | }; 691 | name = Release; 692 | }; 693 | EE309657E8A438704E333F362DDBCDBA /* Debug */ = { 694 | isa = XCBuildConfiguration; 695 | baseConfigurationReference = D7DCAC700D4BF1787CB22B6F45A2376B /* Pods-FlexibleTitleViewDEMO.debug.xcconfig */; 696 | buildSettings = { 697 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 698 | CODE_SIGN_IDENTITY = "iPhone Developer"; 699 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 700 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 701 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 702 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 703 | MACH_O_TYPE = staticlib; 704 | OTHER_LDFLAGS = ""; 705 | OTHER_LIBTOOLFLAGS = ""; 706 | PODS_ROOT = "$(SRCROOT)"; 707 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 708 | SDKROOT = iphoneos; 709 | SKIP_INSTALL = YES; 710 | TARGETED_DEVICE_FAMILY = "1,2"; 711 | }; 712 | name = Debug; 713 | }; 714 | /* End XCBuildConfiguration section */ 715 | 716 | /* Begin XCConfigurationList section */ 717 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 718 | isa = XCConfigurationList; 719 | buildConfigurations = ( 720 | D11C82AF2204B41B80412B8DC9C1D652 /* Debug */, 721 | 96434B6C8FF320C976A10DAD7174A4BB /* Release */, 722 | ); 723 | defaultConfigurationIsVisible = 0; 724 | defaultConfigurationName = Release; 725 | }; 726 | 571FEEFAB75CD6EE790AF53C34C01A34 /* Build configuration list for PBXNativeTarget "Pods-FlexibleTitleViewDEMOUITests" */ = { 727 | isa = XCConfigurationList; 728 | buildConfigurations = ( 729 | 0D8E209F200780B6845D1CDA37C7CD9D /* Debug */, 730 | 08775E5F7110BD3E6DFEA1E172E58205 /* Release */, 731 | ); 732 | defaultConfigurationIsVisible = 0; 733 | defaultConfigurationName = Release; 734 | }; 735 | D49967A9AC75EA031998D78DC39FF7DD /* Build configuration list for PBXNativeTarget "MSFlexibleTitleView" */ = { 736 | isa = XCConfigurationList; 737 | buildConfigurations = ( 738 | 5FE875A95A4F6B4D6035FBE38CE6AA5B /* Debug */, 739 | 270E45448109890ECBE70CEAB7600D8A /* Release */, 740 | ); 741 | defaultConfigurationIsVisible = 0; 742 | defaultConfigurationName = Release; 743 | }; 744 | EF6179524B7ECF20A65A933BA7E67D14 /* Build configuration list for PBXNativeTarget "Pods-FlexibleTitleViewDEMO" */ = { 745 | isa = XCConfigurationList; 746 | buildConfigurations = ( 747 | EE309657E8A438704E333F362DDBCDBA /* Debug */, 748 | 0AED517683EE2807FBF2A3531956B112 /* Release */, 749 | ); 750 | defaultConfigurationIsVisible = 0; 751 | defaultConfigurationName = Release; 752 | }; 753 | F59C3BD2AFF2261290A3E5D02170DFCB /* Build configuration list for PBXNativeTarget "Pods-FlexibleTitleViewDEMOTests" */ = { 754 | isa = XCConfigurationList; 755 | buildConfigurations = ( 756 | 35CC7DBA5B0BBF54572D494DB8405528 /* Debug */, 757 | E85D78A0EDE8B743AD1986943678B958 /* Release */, 758 | ); 759 | defaultConfigurationIsVisible = 0; 760 | defaultConfigurationName = Release; 761 | }; 762 | /* End XCConfigurationList section */ 763 | }; 764 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 765 | } 766 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MSFlexibleTitleView/MSFlexibleTitleView-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MSFlexibleTitleView : NSObject 3 | @end 4 | @implementation PodsDummy_MSFlexibleTitleView 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MSFlexibleTitleView/MSFlexibleTitleView-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MSFlexibleTitleView/MSFlexibleTitleView.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MSFlexibleTitleView 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MSFlexibleTitleView" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MSFlexibleTitleView 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMO/Pods-FlexibleTitleViewDEMO-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## MSFlexibleTitleView 5 | 6 | MIT License 7 | 8 | Copyright (c) 2018 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy 11 | of this software and associated documentation files (the "Software"), to deal 12 | in the Software without restriction, including without limitation the rights 13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | copies of the Software, and to permit persons to whom the Software is 15 | furnished to do so, subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in all 18 | copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26 | SOFTWARE. 27 | 28 | Generated by CocoaPods - https://cocoapods.org 29 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMO/Pods-FlexibleTitleViewDEMO-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | MIT License 18 | 19 | Copyright (c) 2018 20 | 21 | Permission is hereby granted, free of charge, to any person obtaining a copy 22 | of this software and associated documentation files (the "Software"), to deal 23 | in the Software without restriction, including without limitation the rights 24 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 25 | copies of the Software, and to permit persons to whom the Software is 26 | furnished to do so, subject to the following conditions: 27 | 28 | The above copyright notice and this permission notice shall be included in all 29 | copies or substantial portions of the Software. 30 | 31 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 32 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 33 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 34 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 35 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 36 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 37 | SOFTWARE. 38 | 39 | License 40 | MIT 41 | Title 42 | MSFlexibleTitleView 43 | Type 44 | PSGroupSpecifier 45 | 46 | 47 | FooterText 48 | Generated by CocoaPods - https://cocoapods.org 49 | Title 50 | 51 | Type 52 | PSGroupSpecifier 53 | 54 | 55 | StringsTable 56 | Acknowledgements 57 | Title 58 | Acknowledgements 59 | 60 | 61 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMO/Pods-FlexibleTitleViewDEMO-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_FlexibleTitleViewDEMO : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_FlexibleTitleViewDEMO 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMO/Pods-FlexibleTitleViewDEMO-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 7 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # frameworks to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 13 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 14 | 15 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 16 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 17 | 18 | # Used as a return value for each invocation of `strip_invalid_archs` function. 19 | STRIP_BINARY_RETVAL=0 20 | 21 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 22 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 23 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 24 | 25 | # Copies and strips a vendored framework 26 | install_framework() 27 | { 28 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 29 | local source="${BUILT_PRODUCTS_DIR}/$1" 30 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 31 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 32 | elif [ -r "$1" ]; then 33 | local source="$1" 34 | fi 35 | 36 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 37 | 38 | if [ -L "${source}" ]; then 39 | echo "Symlinked..." 40 | source="$(readlink "${source}")" 41 | fi 42 | 43 | # Use filter instead of exclude so missing patterns don't throw errors. 44 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 45 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 46 | 47 | local basename 48 | basename="$(basename -s .framework "$1")" 49 | binary="${destination}/${basename}.framework/${basename}" 50 | if ! [ -r "$binary" ]; then 51 | binary="${destination}/${basename}" 52 | fi 53 | 54 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 55 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 56 | strip_invalid_archs "$binary" 57 | fi 58 | 59 | # Resign the code if required by the build settings to avoid unstable apps 60 | code_sign_if_enabled "${destination}/$(basename "$1")" 61 | 62 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 63 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 64 | local swift_runtime_libs 65 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 66 | for lib in $swift_runtime_libs; do 67 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 68 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 69 | code_sign_if_enabled "${destination}/${lib}" 70 | done 71 | fi 72 | } 73 | 74 | # Copies and strips a vendored dSYM 75 | install_dsym() { 76 | local source="$1" 77 | if [ -r "$source" ]; then 78 | # Copy the dSYM into a the targets temp dir. 79 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" 80 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" 81 | 82 | local basename 83 | basename="$(basename -s .framework.dSYM "$source")" 84 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" 85 | 86 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 87 | if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then 88 | strip_invalid_archs "$binary" 89 | fi 90 | 91 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then 92 | # Move the stripped file into its final destination. 93 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 94 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 95 | else 96 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. 97 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" 98 | fi 99 | fi 100 | } 101 | 102 | # Signs a framework with the provided identity 103 | code_sign_if_enabled() { 104 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 105 | # Use the current code_sign_identitiy 106 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 107 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 108 | 109 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 110 | code_sign_cmd="$code_sign_cmd &" 111 | fi 112 | echo "$code_sign_cmd" 113 | eval "$code_sign_cmd" 114 | fi 115 | } 116 | 117 | # Strip invalid architectures 118 | strip_invalid_archs() { 119 | binary="$1" 120 | # Get architectures for current target binary 121 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 122 | # Intersect them with the architectures we are building for 123 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 124 | # If there are no archs supported by this binary then warn the user 125 | if [[ -z "$intersected_archs" ]]; then 126 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 127 | STRIP_BINARY_RETVAL=0 128 | return 129 | fi 130 | stripped="" 131 | for arch in $binary_archs; do 132 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 133 | # Strip non-valid architectures in-place 134 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 135 | stripped="$stripped $arch" 136 | fi 137 | done 138 | if [[ "$stripped" ]]; then 139 | echo "Stripped $binary of architectures:$stripped" 140 | fi 141 | STRIP_BINARY_RETVAL=1 142 | } 143 | 144 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 145 | wait 146 | fi 147 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMO/Pods-FlexibleTitleViewDEMO-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then 7 | # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # resources to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 13 | 14 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 15 | > "$RESOURCES_TO_COPY" 16 | 17 | XCASSET_FILES=() 18 | 19 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 20 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 21 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 22 | 23 | case "${TARGETED_DEVICE_FAMILY:-}" in 24 | 1,2) 25 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 26 | ;; 27 | 1) 28 | TARGET_DEVICE_ARGS="--target-device iphone" 29 | ;; 30 | 2) 31 | TARGET_DEVICE_ARGS="--target-device ipad" 32 | ;; 33 | 3) 34 | TARGET_DEVICE_ARGS="--target-device tv" 35 | ;; 36 | 4) 37 | TARGET_DEVICE_ARGS="--target-device watch" 38 | ;; 39 | *) 40 | TARGET_DEVICE_ARGS="--target-device mac" 41 | ;; 42 | esac 43 | 44 | install_resource() 45 | { 46 | if [[ "$1" = /* ]] ; then 47 | RESOURCE_PATH="$1" 48 | else 49 | RESOURCE_PATH="${PODS_ROOT}/$1" 50 | fi 51 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 52 | cat << EOM 53 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 54 | EOM 55 | exit 1 56 | fi 57 | case $RESOURCE_PATH in 58 | *.storyboard) 59 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 60 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 61 | ;; 62 | *.xib) 63 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 64 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 65 | ;; 66 | *.framework) 67 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 68 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 69 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 70 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 71 | ;; 72 | *.xcdatamodel) 73 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true 74 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 75 | ;; 76 | *.xcdatamodeld) 77 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true 78 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 79 | ;; 80 | *.xcmappingmodel) 81 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true 82 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 83 | ;; 84 | *.xcassets) 85 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 86 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 87 | ;; 88 | *) 89 | echo "$RESOURCE_PATH" || true 90 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 91 | ;; 92 | esac 93 | } 94 | 95 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 96 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 97 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 98 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 99 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 100 | fi 101 | rm -f "$RESOURCES_TO_COPY" 102 | 103 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] 104 | then 105 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 106 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 107 | while read line; do 108 | if [[ $line != "${PODS_ROOT}*" ]]; then 109 | XCASSET_FILES+=("$line") 110 | fi 111 | done <<<"$OTHER_XCASSETS" 112 | 113 | if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then 114 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 115 | else 116 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" 117 | fi 118 | fi 119 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMO/Pods-FlexibleTitleViewDEMO.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MSFlexibleTitleView" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"MSFlexibleTitleView" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMO/Pods-FlexibleTitleViewDEMO.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MSFlexibleTitleView" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"MSFlexibleTitleView" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOTests/Pods-FlexibleTitleViewDEMOTests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOTests/Pods-FlexibleTitleViewDEMOTests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOTests/Pods-FlexibleTitleViewDEMOTests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_FlexibleTitleViewDEMOTests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_FlexibleTitleViewDEMOTests 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOTests/Pods-FlexibleTitleViewDEMOTests-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 7 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # frameworks to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 13 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 14 | 15 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 16 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 17 | 18 | # Used as a return value for each invocation of `strip_invalid_archs` function. 19 | STRIP_BINARY_RETVAL=0 20 | 21 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 22 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 23 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 24 | 25 | # Copies and strips a vendored framework 26 | install_framework() 27 | { 28 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 29 | local source="${BUILT_PRODUCTS_DIR}/$1" 30 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 31 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 32 | elif [ -r "$1" ]; then 33 | local source="$1" 34 | fi 35 | 36 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 37 | 38 | if [ -L "${source}" ]; then 39 | echo "Symlinked..." 40 | source="$(readlink "${source}")" 41 | fi 42 | 43 | # Use filter instead of exclude so missing patterns don't throw errors. 44 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 45 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 46 | 47 | local basename 48 | basename="$(basename -s .framework "$1")" 49 | binary="${destination}/${basename}.framework/${basename}" 50 | if ! [ -r "$binary" ]; then 51 | binary="${destination}/${basename}" 52 | fi 53 | 54 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 55 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 56 | strip_invalid_archs "$binary" 57 | fi 58 | 59 | # Resign the code if required by the build settings to avoid unstable apps 60 | code_sign_if_enabled "${destination}/$(basename "$1")" 61 | 62 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 63 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 64 | local swift_runtime_libs 65 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 66 | for lib in $swift_runtime_libs; do 67 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 68 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 69 | code_sign_if_enabled "${destination}/${lib}" 70 | done 71 | fi 72 | } 73 | 74 | # Copies and strips a vendored dSYM 75 | install_dsym() { 76 | local source="$1" 77 | if [ -r "$source" ]; then 78 | # Copy the dSYM into a the targets temp dir. 79 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" 80 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" 81 | 82 | local basename 83 | basename="$(basename -s .framework.dSYM "$source")" 84 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" 85 | 86 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 87 | if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then 88 | strip_invalid_archs "$binary" 89 | fi 90 | 91 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then 92 | # Move the stripped file into its final destination. 93 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 94 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 95 | else 96 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. 97 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" 98 | fi 99 | fi 100 | } 101 | 102 | # Signs a framework with the provided identity 103 | code_sign_if_enabled() { 104 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 105 | # Use the current code_sign_identitiy 106 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 107 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 108 | 109 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 110 | code_sign_cmd="$code_sign_cmd &" 111 | fi 112 | echo "$code_sign_cmd" 113 | eval "$code_sign_cmd" 114 | fi 115 | } 116 | 117 | # Strip invalid architectures 118 | strip_invalid_archs() { 119 | binary="$1" 120 | # Get architectures for current target binary 121 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 122 | # Intersect them with the architectures we are building for 123 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 124 | # If there are no archs supported by this binary then warn the user 125 | if [[ -z "$intersected_archs" ]]; then 126 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 127 | STRIP_BINARY_RETVAL=0 128 | return 129 | fi 130 | stripped="" 131 | for arch in $binary_archs; do 132 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 133 | # Strip non-valid architectures in-place 134 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 135 | stripped="$stripped $arch" 136 | fi 137 | done 138 | if [[ "$stripped" ]]; then 139 | echo "Stripped $binary of architectures:$stripped" 140 | fi 141 | STRIP_BINARY_RETVAL=1 142 | } 143 | 144 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 145 | wait 146 | fi 147 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOTests/Pods-FlexibleTitleViewDEMOTests-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then 7 | # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # resources to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 13 | 14 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 15 | > "$RESOURCES_TO_COPY" 16 | 17 | XCASSET_FILES=() 18 | 19 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 20 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 21 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 22 | 23 | case "${TARGETED_DEVICE_FAMILY:-}" in 24 | 1,2) 25 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 26 | ;; 27 | 1) 28 | TARGET_DEVICE_ARGS="--target-device iphone" 29 | ;; 30 | 2) 31 | TARGET_DEVICE_ARGS="--target-device ipad" 32 | ;; 33 | 3) 34 | TARGET_DEVICE_ARGS="--target-device tv" 35 | ;; 36 | 4) 37 | TARGET_DEVICE_ARGS="--target-device watch" 38 | ;; 39 | *) 40 | TARGET_DEVICE_ARGS="--target-device mac" 41 | ;; 42 | esac 43 | 44 | install_resource() 45 | { 46 | if [[ "$1" = /* ]] ; then 47 | RESOURCE_PATH="$1" 48 | else 49 | RESOURCE_PATH="${PODS_ROOT}/$1" 50 | fi 51 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 52 | cat << EOM 53 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 54 | EOM 55 | exit 1 56 | fi 57 | case $RESOURCE_PATH in 58 | *.storyboard) 59 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 60 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 61 | ;; 62 | *.xib) 63 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 64 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 65 | ;; 66 | *.framework) 67 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 68 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 69 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 70 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 71 | ;; 72 | *.xcdatamodel) 73 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true 74 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 75 | ;; 76 | *.xcdatamodeld) 77 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true 78 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 79 | ;; 80 | *.xcmappingmodel) 81 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true 82 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 83 | ;; 84 | *.xcassets) 85 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 86 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 87 | ;; 88 | *) 89 | echo "$RESOURCE_PATH" || true 90 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 91 | ;; 92 | esac 93 | } 94 | 95 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 96 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 97 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 98 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 99 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 100 | fi 101 | rm -f "$RESOURCES_TO_COPY" 102 | 103 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] 104 | then 105 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 106 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 107 | while read line; do 108 | if [[ $line != "${PODS_ROOT}*" ]]; then 109 | XCASSET_FILES+=("$line") 110 | fi 111 | done <<<"$OTHER_XCASSETS" 112 | 113 | if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then 114 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 115 | else 116 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" 117 | fi 118 | fi 119 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOTests/Pods-FlexibleTitleViewDEMOTests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MSFlexibleTitleView" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 5 | OTHER_LDFLAGS = $(inherited) -ObjC 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOTests/Pods-FlexibleTitleViewDEMOTests.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MSFlexibleTitleView" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 5 | OTHER_LDFLAGS = $(inherited) -ObjC 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOUITests/Pods-FlexibleTitleViewDEMOUITests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOUITests/Pods-FlexibleTitleViewDEMOUITests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOUITests/Pods-FlexibleTitleViewDEMOUITests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_FlexibleTitleViewDEMOUITests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_FlexibleTitleViewDEMOUITests 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOUITests/Pods-FlexibleTitleViewDEMOUITests-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 7 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # frameworks to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 13 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 14 | 15 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 16 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 17 | 18 | # Used as a return value for each invocation of `strip_invalid_archs` function. 19 | STRIP_BINARY_RETVAL=0 20 | 21 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 22 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 23 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 24 | 25 | # Copies and strips a vendored framework 26 | install_framework() 27 | { 28 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 29 | local source="${BUILT_PRODUCTS_DIR}/$1" 30 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 31 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 32 | elif [ -r "$1" ]; then 33 | local source="$1" 34 | fi 35 | 36 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 37 | 38 | if [ -L "${source}" ]; then 39 | echo "Symlinked..." 40 | source="$(readlink "${source}")" 41 | fi 42 | 43 | # Use filter instead of exclude so missing patterns don't throw errors. 44 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 45 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 46 | 47 | local basename 48 | basename="$(basename -s .framework "$1")" 49 | binary="${destination}/${basename}.framework/${basename}" 50 | if ! [ -r "$binary" ]; then 51 | binary="${destination}/${basename}" 52 | fi 53 | 54 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 55 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 56 | strip_invalid_archs "$binary" 57 | fi 58 | 59 | # Resign the code if required by the build settings to avoid unstable apps 60 | code_sign_if_enabled "${destination}/$(basename "$1")" 61 | 62 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 63 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 64 | local swift_runtime_libs 65 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 66 | for lib in $swift_runtime_libs; do 67 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 68 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 69 | code_sign_if_enabled "${destination}/${lib}" 70 | done 71 | fi 72 | } 73 | 74 | # Copies and strips a vendored dSYM 75 | install_dsym() { 76 | local source="$1" 77 | if [ -r "$source" ]; then 78 | # Copy the dSYM into a the targets temp dir. 79 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" 80 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" 81 | 82 | local basename 83 | basename="$(basename -s .framework.dSYM "$source")" 84 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" 85 | 86 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 87 | if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then 88 | strip_invalid_archs "$binary" 89 | fi 90 | 91 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then 92 | # Move the stripped file into its final destination. 93 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 94 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 95 | else 96 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. 97 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" 98 | fi 99 | fi 100 | } 101 | 102 | # Signs a framework with the provided identity 103 | code_sign_if_enabled() { 104 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 105 | # Use the current code_sign_identitiy 106 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 107 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 108 | 109 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 110 | code_sign_cmd="$code_sign_cmd &" 111 | fi 112 | echo "$code_sign_cmd" 113 | eval "$code_sign_cmd" 114 | fi 115 | } 116 | 117 | # Strip invalid architectures 118 | strip_invalid_archs() { 119 | binary="$1" 120 | # Get architectures for current target binary 121 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 122 | # Intersect them with the architectures we are building for 123 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 124 | # If there are no archs supported by this binary then warn the user 125 | if [[ -z "$intersected_archs" ]]; then 126 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 127 | STRIP_BINARY_RETVAL=0 128 | return 129 | fi 130 | stripped="" 131 | for arch in $binary_archs; do 132 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 133 | # Strip non-valid architectures in-place 134 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 135 | stripped="$stripped $arch" 136 | fi 137 | done 138 | if [[ "$stripped" ]]; then 139 | echo "Stripped $binary of architectures:$stripped" 140 | fi 141 | STRIP_BINARY_RETVAL=1 142 | } 143 | 144 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 145 | wait 146 | fi 147 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOUITests/Pods-FlexibleTitleViewDEMOUITests-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then 7 | # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # resources to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 13 | 14 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 15 | > "$RESOURCES_TO_COPY" 16 | 17 | XCASSET_FILES=() 18 | 19 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 20 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 21 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 22 | 23 | case "${TARGETED_DEVICE_FAMILY:-}" in 24 | 1,2) 25 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 26 | ;; 27 | 1) 28 | TARGET_DEVICE_ARGS="--target-device iphone" 29 | ;; 30 | 2) 31 | TARGET_DEVICE_ARGS="--target-device ipad" 32 | ;; 33 | 3) 34 | TARGET_DEVICE_ARGS="--target-device tv" 35 | ;; 36 | 4) 37 | TARGET_DEVICE_ARGS="--target-device watch" 38 | ;; 39 | *) 40 | TARGET_DEVICE_ARGS="--target-device mac" 41 | ;; 42 | esac 43 | 44 | install_resource() 45 | { 46 | if [[ "$1" = /* ]] ; then 47 | RESOURCE_PATH="$1" 48 | else 49 | RESOURCE_PATH="${PODS_ROOT}/$1" 50 | fi 51 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 52 | cat << EOM 53 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 54 | EOM 55 | exit 1 56 | fi 57 | case $RESOURCE_PATH in 58 | *.storyboard) 59 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 60 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 61 | ;; 62 | *.xib) 63 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 64 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 65 | ;; 66 | *.framework) 67 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 68 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 69 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 70 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 71 | ;; 72 | *.xcdatamodel) 73 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true 74 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 75 | ;; 76 | *.xcdatamodeld) 77 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true 78 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 79 | ;; 80 | *.xcmappingmodel) 81 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true 82 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 83 | ;; 84 | *.xcassets) 85 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 86 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 87 | ;; 88 | *) 89 | echo "$RESOURCE_PATH" || true 90 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 91 | ;; 92 | esac 93 | } 94 | 95 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 96 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 97 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 98 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 99 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 100 | fi 101 | rm -f "$RESOURCES_TO_COPY" 102 | 103 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] 104 | then 105 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 106 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 107 | while read line; do 108 | if [[ $line != "${PODS_ROOT}*" ]]; then 109 | XCASSET_FILES+=("$line") 110 | fi 111 | done <<<"$OTHER_XCASSETS" 112 | 113 | if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then 114 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 115 | else 116 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" 117 | fi 118 | fi 119 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOUITests/Pods-FlexibleTitleViewDEMOUITests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MSFlexibleTitleView" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 5 | OTHER_LDFLAGS = $(inherited) -ObjC 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-FlexibleTitleViewDEMOUITests/Pods-FlexibleTitleViewDEMOUITests.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MSFlexibleTitleView" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/MSFlexibleTitleView" 5 | OTHER_LDFLAGS = $(inherited) -ObjC 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # MSFlexibleTitleView 3 | 4 | [![platform](http://img.shields.io/cocoapods/p/YYKit.svg?style=flat)](https://www.apple.com/nl/ios/) 5 | [![GitHub license](https://img.shields.io/github/license/mashape/apistatus.svg?style=flat)](https://github.com/JZJJZJ/MSFlexibleTitleView/blob/master/LICENSE) 6 | [![CocoaPods](https://img.shields.io/cocoapods/v/AFNetworking.svg)](https://github.com/JZJJZJ/MSFlexibleTitleView.git) 7 | [![GitHub stars](https://img.shields.io/github/stars/badges/shields.svg?style=social&logo=github&label=Stars)](https://github.com/JZJJZJ/MSFlexibleTitleView.git) 8 | 9 | flexibleAnimationTitleView 10 | 11 | ## Installation 12 | 13 | ### Cocoapods(Recommended) 14 | 15 | 1. Add `pod 'MSFlexibleTitleView'` to your Podfile. 16 | 2. Run `pod install` 17 | 18 | ### Manual 19 | 20 | 1. Add all files under `MSFlexibleTitleView ` to your project 21 | 22 | ## Requirements 23 | 24 | - iOS 5.0 and greater 25 | - ARC/MRC 26 | 27 | 28 | ## How To Use 29 | 30 | ### Objective-C 31 | 32 | ```objc 33 | 34 | #import "MSFlexibleTitleView.h” 35 | ``` 36 | 37 | 38 | ```objc 39 | 40 | MSFlexibleTitleView* titleView = [[MSFlexibleTitleView alloc] initWithTitles:@[@"One" ,@"Two", @"Three"] 41 | showIndex:MSTitleTypeMoment 42 | tapBlock:^(MSFlexibleTitleView *titleView,NSInteger index{ 43 | 44 | }]; 45 | 46 | titleView.scrollBlock(NSInteger index, NSInteger toIndex, CGFloat scale, BOOL end);//selecteAnNewItem 47 | ``` 48 | 49 | ## License 50 | 51 | MSFlexibleTitleView is available under the MIT license. See the LICENSE file for more info. 52 | --------------------------------------------------------------------------------