├── .gitignore ├── .travis.yml ├── Example ├── Podfile ├── Podfile.lock ├── Pods │ ├── Local Podspecs │ │ ├── YYRefresh.podspec.json │ │ └── YYRefreshView.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ └── project.pbxproj │ └── Target Support Files │ │ ├── Pods-YYRefresh_Example │ │ ├── Pods-YYRefresh_Example-Info.plist │ │ ├── Pods-YYRefresh_Example-acknowledgements.markdown │ │ ├── Pods-YYRefresh_Example-acknowledgements.plist │ │ ├── Pods-YYRefresh_Example-dummy.m │ │ ├── Pods-YYRefresh_Example-frameworks.sh │ │ ├── Pods-YYRefresh_Example-umbrella.h │ │ ├── Pods-YYRefresh_Example.debug.xcconfig │ │ ├── Pods-YYRefresh_Example.modulemap │ │ └── Pods-YYRefresh_Example.release.xcconfig │ │ ├── Pods-YYRefresh_Tests │ │ ├── Pods-YYRefresh_Tests-Info.plist │ │ ├── Pods-YYRefresh_Tests-acknowledgements.markdown │ │ ├── Pods-YYRefresh_Tests-acknowledgements.plist │ │ ├── Pods-YYRefresh_Tests-dummy.m │ │ ├── Pods-YYRefresh_Tests-umbrella.h │ │ ├── Pods-YYRefresh_Tests.debug.xcconfig │ │ ├── Pods-YYRefresh_Tests.modulemap │ │ └── Pods-YYRefresh_Tests.release.xcconfig │ │ └── YYRefreshView │ │ ├── ResourceBundle-YYRefresh-YYRefreshView-Info.plist │ │ ├── YYRefreshView-Info.plist │ │ ├── YYRefreshView-dummy.m │ │ ├── YYRefreshView-prefix.pch │ │ ├── YYRefreshView-umbrella.h │ │ ├── YYRefreshView.debug.xcconfig │ │ ├── YYRefreshView.modulemap │ │ └── YYRefreshView.release.xcconfig ├── Tests │ ├── Info.plist │ └── Tests.swift ├── YYRefresh.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── YYRefresh-Example.xcscheme ├── YYRefresh.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── YYRefresh │ ├── AppDelegate.swift │ ├── Base.lproj │ ├── LaunchScreen.xib │ └── Main.storyboard │ ├── Images.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json │ ├── Info.plist │ └── ViewController.swift ├── LICENSE ├── README.md ├── YYRefresh ├── Assets │ ├── .gitkeep │ └── Assets.xcassets │ │ ├── Contents.json │ │ ├── yy_arrow_down.imageset │ │ ├── Contents.json │ │ ├── yy_arrow_down@2x.png │ │ └── yy_arrow_down@3x.png │ │ └── yy_arrow_up.imageset │ │ ├── Contents.json │ │ ├── yy_arrow_up@2x.png │ │ └── yy_arrow_up@3x.png └── Classes │ ├── .gitkeep │ ├── YYRefresh+DefaultView.swift │ ├── YYRefresh+Foundation.swift │ ├── YYRefresh+UIScrollView.swift │ └── YYRefresh.swift ├── YYRefreshView.podspec └── _Pods.xcodeproj /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 26 | # Carthage/Checkouts 27 | 28 | Carthage/Build 29 | 30 | # We recommend against adding the Pods directory to your .gitignore. However 31 | # you should judge for yourself, the pros and cons are mentioned at: 32 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 33 | # 34 | # Note: if you ignore the Pods directory, make sure to uncomment 35 | # `pod install` in .travis.yml 36 | # 37 | # Pods/ 38 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * https://www.objc.io/issues/6-build-tools/travis-ci/ 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | osx_image: xcode7.3 6 | language: objective-c 7 | # cache: cocoapods 8 | # podfile: Example/Podfile 9 | # before_install: 10 | # - gem install cocoapods # Since Travis is not always on latest version 11 | # - pod install --project-directory=Example 12 | script: 13 | - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/YYRefresh.xcworkspace -scheme YYRefresh-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty 14 | - pod lib lint 15 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target 'YYRefresh_Example' do 4 | pod 'YYRefreshView', :path => '../' 5 | 6 | target 'YYRefresh_Tests' do 7 | inherit! :search_paths 8 | 9 | 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - YYRefreshView (1.0.0) 3 | 4 | DEPENDENCIES: 5 | - YYRefreshView (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | YYRefreshView: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | YYRefreshView: fb727ae6dc7bb17264380808ccd288fcfdd7ec1f 13 | 14 | PODFILE CHECKSUM: 475f5fc3beaaa372d6452a1d4d8ebd438a88e254 15 | 16 | COCOAPODS: 1.9.1 17 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/YYRefresh.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "YYRefreshView", 3 | "version": "1.0.0", 4 | "summary": "Four directions refresh", 5 | "description": "Refresh control support four directions", 6 | "homepage": "https://github.com/cgcym1234/YYRefresh", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "cgcym1234": "cgcym1234@163.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/cgcym1234/YYRefresh.git", 16 | "tag": "1.0.0" 17 | }, 18 | "platforms": { 19 | "ios": "8.0" 20 | }, 21 | "swift_versions": "5.0", 22 | "source_files": "YYRefresh/Classes/**/*", 23 | "resource_bundles": { 24 | "YYRefresh": [ 25 | "YYRefresh/Assets/*.xcassets" 26 | ] 27 | }, 28 | "swift_version": "5.0" 29 | } 30 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/YYRefreshView.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "YYRefreshView", 3 | "version": "1.0.0", 4 | "summary": "Four directions refresh", 5 | "description": "Refresh control support four directions", 6 | "homepage": "https://github.com/cgcym1234/YYRefresh", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "cgcym1234": "cgcym1234@163.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/cgcym1234/YYRefresh.git", 16 | "tag": "1.0.0" 17 | }, 18 | "platforms": { 19 | "ios": "8.0" 20 | }, 21 | "swift_versions": "5.0", 22 | "source_files": "YYRefresh/Classes/**/*", 23 | "resource_bundles": { 24 | "YYRefresh": [ 25 | "YYRefresh/Assets/*.xcassets" 26 | ] 27 | }, 28 | "swift_version": "5.0" 29 | } 30 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - YYRefreshView (1.0.0) 3 | 4 | DEPENDENCIES: 5 | - YYRefreshView (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | YYRefreshView: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | YYRefreshView: fb727ae6dc7bb17264380808ccd288fcfdd7ec1f 13 | 14 | PODFILE CHECKSUM: 475f5fc3beaaa372d6452a1d4d8ebd438a88e254 15 | 16 | COCOAPODS: 1.9.1 17 | -------------------------------------------------------------------------------- /Example/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 | 213E2B80AA0FE898057A81EDAABFB8F0 /* YYRefresh+UIScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E370FD7BCC7E20BE818B68016758706F /* YYRefresh+UIScrollView.swift */; }; 11 | 4D30B3BEFE41F688DA74F52E6AED3431 /* Pods-YYRefresh_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E9EFEE7B3FAD8A02F7C843C8C8BE2E6 /* Pods-YYRefresh_Example-dummy.m */; }; 12 | 4D3BAAFA554D922E48243CE17BC8AE0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; 13 | 8152C626AE519C2AE61615FDAEA13885 /* YYRefreshView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C10B2FF897240B7CE61AAC906247EEF /* YYRefreshView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | AC97C07263CED1D6DBA5485A422CE170 /* YYRefreshView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 96D3B2F0CDB0F2848DD3EBF55125235A /* YYRefreshView-dummy.m */; }; 15 | AE9DC4CF897C079D55C91EF779F3FBE6 /* Pods-YYRefresh_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1E54D57E24C97A9727CC04284C78C9 /* Pods-YYRefresh_Tests-dummy.m */; }; 16 | D360031F6EE3E3F8EABF3A0C510DC7FC /* YYRefresh+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4FD61797D350CB821C12443433CDD2E /* YYRefresh+Foundation.swift */; }; 17 | E1AF4281FA3D45E9B2A7BD6393602105 /* YYRefresh+DefaultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A31078E7AE4F7C48D2162C99D563306 /* YYRefresh+DefaultView.swift */; }; 18 | E56523A27D334DF63E61DE08DBEC8E31 /* Pods-YYRefresh_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA909E1D66CA06856DD36DBEC591F0F /* Pods-YYRefresh_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 19 | E6E791DD343827E1914CB7B0E4574C6C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; 20 | E6E938748D1F5A3D13C0FD7BC18A54C5 /* YYRefresh.swift in Sources */ = {isa = PBXBuildFile; fileRef = 708A7DCE1C56BC87042BDF9512ACD4B8 /* YYRefresh.swift */; }; 21 | EE0D674B783935B0BE9418721EEC1DA8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; 22 | F0B425E30A1FD9655A4607EF05A2788D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 43DCEC329BDACA4F0E525D3EC4045DBF /* Assets.xcassets */; }; 23 | FA8D201D563C2D5C6A56C0CA30EC78F6 /* Pods-YYRefresh_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C60E982C82E66A1365D16A60B10907A2 /* Pods-YYRefresh_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 24 | FF5959CDF018BC3F8CAD24CE133958F9 /* YYRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = AA81A927DED769C1DCC26E4F3C90ADED /* YYRefresh.bundle */; }; 25 | /* End PBXBuildFile section */ 26 | 27 | /* Begin PBXContainerItemProxy section */ 28 | 00E58D641C9EF99454B1C9DB4E572A47 /* PBXContainerItemProxy */ = { 29 | isa = PBXContainerItemProxy; 30 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 31 | proxyType = 1; 32 | remoteGlobalIDString = E7D9704EBEEE4E6C8C5E66EB62F7F40B; 33 | remoteInfo = "YYRefreshView-YYRefresh"; 34 | }; 35 | B409B7E424D62815D7BA43498641BB01 /* PBXContainerItemProxy */ = { 36 | isa = PBXContainerItemProxy; 37 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 38 | proxyType = 1; 39 | remoteGlobalIDString = 2B6A5F5B3A15DA42F33CD144C747D267; 40 | remoteInfo = YYRefreshView; 41 | }; 42 | B9278299B49A8B823E473AE61ED536B5 /* PBXContainerItemProxy */ = { 43 | isa = PBXContainerItemProxy; 44 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 45 | proxyType = 1; 46 | remoteGlobalIDString = 6F008BA2DF430052085800C1E93A079B; 47 | remoteInfo = "Pods-YYRefresh_Example"; 48 | }; 49 | /* End PBXContainerItemProxy section */ 50 | 51 | /* Begin PBXFileReference section */ 52 | 0BF4C290AFF1ADAD660F6381F7A5B504 /* YYRefreshView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "YYRefreshView-Info.plist"; sourceTree = ""; }; 53 | 111989B9FF1280CC77012AAAE6A5FCB4 /* Pods-YYRefresh_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-YYRefresh_Tests.release.xcconfig"; sourceTree = ""; }; 54 | 17D94EC85DB99869E5DE3270BDFEF8EF /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 55 | 1A31078E7AE4F7C48D2162C99D563306 /* YYRefresh+DefaultView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "YYRefresh+DefaultView.swift"; path = "YYRefresh/Classes/YYRefresh+DefaultView.swift"; sourceTree = ""; }; 56 | 1C10B2FF897240B7CE61AAC906247EEF /* YYRefreshView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YYRefreshView-umbrella.h"; sourceTree = ""; }; 57 | 1CCF642EB91E2E4443F603857055A1FC /* YYRefreshView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = YYRefreshView.modulemap; sourceTree = ""; }; 58 | 22979FC95E2823604744FAC2F2486601 /* Pods-YYRefresh_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-YYRefresh_Example-Info.plist"; sourceTree = ""; }; 59 | 238D9CF0AA65374A3037232ACEDB9C64 /* Pods-YYRefresh_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-YYRefresh_Tests.debug.xcconfig"; sourceTree = ""; }; 60 | 25AD3F63811CABE087692D35696EFF31 /* Pods-YYRefresh_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-YYRefresh_Example.release.xcconfig"; sourceTree = ""; }; 61 | 26C9C8FE6B427630AC67E14BFC436829 /* YYRefreshView.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = YYRefreshView.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 62 | 2DE3FB69D6135B2B78BBCAB8D5232393 /* Pods-YYRefresh_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-YYRefresh_Tests-Info.plist"; sourceTree = ""; }; 63 | 2F343CFCC71915D90D4DD6178D6D7F63 /* Pods-YYRefresh_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-YYRefresh_Example.debug.xcconfig"; sourceTree = ""; }; 64 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 65 | 40949F6FCB24D00724A4B24CE04888EC /* ResourceBundle-YYRefresh-YYRefreshView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-YYRefresh-YYRefreshView-Info.plist"; sourceTree = ""; }; 66 | 43DCEC329BDACA4F0E525D3EC4045DBF /* Assets.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = YYRefresh/Assets/Assets.xcassets; sourceTree = ""; }; 67 | 4E9EFEE7B3FAD8A02F7C843C8C8BE2E6 /* Pods-YYRefresh_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-YYRefresh_Example-dummy.m"; sourceTree = ""; }; 68 | 5209BD0996135F64D1ABD6C72CCB0FE8 /* Pods-YYRefresh_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-YYRefresh_Example.modulemap"; sourceTree = ""; }; 69 | 57ADD5B934E448B48DD11F038FA1B884 /* Pods-YYRefresh_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-YYRefresh_Tests-acknowledgements.plist"; sourceTree = ""; }; 70 | 61A128DCA97859A18165ADD519D1538B /* Pods-YYRefresh_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-YYRefresh_Example-frameworks.sh"; sourceTree = ""; }; 71 | 6E734CFEE54266DDCC0C504ACF5ECA05 /* YYRefreshView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YYRefreshView.debug.xcconfig; sourceTree = ""; }; 72 | 708A7DCE1C56BC87042BDF9512ACD4B8 /* YYRefresh.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = YYRefresh.swift; path = YYRefresh/Classes/YYRefresh.swift; sourceTree = ""; }; 73 | 78F42A0ADF79420B8FB1E8118D50AB96 /* Pods_YYRefresh_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_YYRefresh_Tests.framework; path = "Pods-YYRefresh_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 74 | 79EA64F615314C733B0E97C47141EC0C /* Pods_YYRefresh_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_YYRefresh_Example.framework; path = "Pods-YYRefresh_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 75 | 889826803875754962BD0E41C31D0F58 /* YYRefreshView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YYRefreshView.release.xcconfig; sourceTree = ""; }; 76 | 8B1E54D57E24C97A9727CC04284C78C9 /* Pods-YYRefresh_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-YYRefresh_Tests-dummy.m"; sourceTree = ""; }; 77 | 8CEC07E31ABC4662F9BDDD452CEFFC69 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 78 | 8FA909E1D66CA06856DD36DBEC591F0F /* Pods-YYRefresh_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-YYRefresh_Example-umbrella.h"; sourceTree = ""; }; 79 | 96D3B2F0CDB0F2848DD3EBF55125235A /* YYRefreshView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "YYRefreshView-dummy.m"; sourceTree = ""; }; 80 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 81 | AA81A927DED769C1DCC26E4F3C90ADED /* YYRefresh.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = YYRefresh.bundle; path = "YYRefreshView-YYRefresh.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; 82 | AE0A2097A807B8E618B3FE457F279414 /* YYRefreshView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = YYRefreshView.framework; path = YYRefreshView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 83 | B8518E1940341A8B8B0B1B3B540AAF03 /* Pods-YYRefresh_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-YYRefresh_Tests.modulemap"; sourceTree = ""; }; 84 | C3EE5FAA0823BDB039B2CFFAB0B94776 /* Pods-YYRefresh_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-YYRefresh_Example-acknowledgements.markdown"; sourceTree = ""; }; 85 | C60E982C82E66A1365D16A60B10907A2 /* Pods-YYRefresh_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-YYRefresh_Tests-umbrella.h"; sourceTree = ""; }; 86 | E370FD7BCC7E20BE818B68016758706F /* YYRefresh+UIScrollView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "YYRefresh+UIScrollView.swift"; path = "YYRefresh/Classes/YYRefresh+UIScrollView.swift"; sourceTree = ""; }; 87 | E97996305B252A994A649D9AE448A82D /* YYRefreshView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YYRefreshView-prefix.pch"; sourceTree = ""; }; 88 | EDCAD194623D756E5CD1054F6EC906F4 /* Pods-YYRefresh_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-YYRefresh_Tests-acknowledgements.markdown"; sourceTree = ""; }; 89 | EEEFE65C6D7463354F7CBBF75872DB6F /* Pods-YYRefresh_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-YYRefresh_Example-acknowledgements.plist"; sourceTree = ""; }; 90 | F4FD61797D350CB821C12443433CDD2E /* YYRefresh+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "YYRefresh+Foundation.swift"; path = "YYRefresh/Classes/YYRefresh+Foundation.swift"; sourceTree = ""; }; 91 | /* End PBXFileReference section */ 92 | 93 | /* Begin PBXFrameworksBuildPhase section */ 94 | 41E77E3EC61D17F49E925742574BF14D /* Frameworks */ = { 95 | isa = PBXFrameworksBuildPhase; 96 | buildActionMask = 2147483647; 97 | files = ( 98 | E6E791DD343827E1914CB7B0E4574C6C /* Foundation.framework in Frameworks */, 99 | ); 100 | runOnlyForDeploymentPostprocessing = 0; 101 | }; 102 | 4407984DBE8C295B252827561EB0AE2B /* Frameworks */ = { 103 | isa = PBXFrameworksBuildPhase; 104 | buildActionMask = 2147483647; 105 | files = ( 106 | ); 107 | runOnlyForDeploymentPostprocessing = 0; 108 | }; 109 | 7D058D01B15641F16A7EC8BAE4CDF20F /* Frameworks */ = { 110 | isa = PBXFrameworksBuildPhase; 111 | buildActionMask = 2147483647; 112 | files = ( 113 | 4D3BAAFA554D922E48243CE17BC8AE0F /* Foundation.framework in Frameworks */, 114 | ); 115 | runOnlyForDeploymentPostprocessing = 0; 116 | }; 117 | D130DC604595FCE6B0BEA973761BA9F9 /* Frameworks */ = { 118 | isa = PBXFrameworksBuildPhase; 119 | buildActionMask = 2147483647; 120 | files = ( 121 | EE0D674B783935B0BE9418721EEC1DA8 /* Foundation.framework in Frameworks */, 122 | ); 123 | runOnlyForDeploymentPostprocessing = 0; 124 | }; 125 | /* End PBXFrameworksBuildPhase section */ 126 | 127 | /* Begin PBXGroup section */ 128 | 152340F25583EA59A6C8927FD5205BA1 /* Targets Support Files */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | E728F0038B92CC0307E677A92E5792B8 /* Pods-YYRefresh_Example */, 132 | 166AABAD1F68F2A062ABBCD5EC26329C /* Pods-YYRefresh_Tests */, 133 | ); 134 | name = "Targets Support Files"; 135 | sourceTree = ""; 136 | }; 137 | 166AABAD1F68F2A062ABBCD5EC26329C /* Pods-YYRefresh_Tests */ = { 138 | isa = PBXGroup; 139 | children = ( 140 | B8518E1940341A8B8B0B1B3B540AAF03 /* Pods-YYRefresh_Tests.modulemap */, 141 | EDCAD194623D756E5CD1054F6EC906F4 /* Pods-YYRefresh_Tests-acknowledgements.markdown */, 142 | 57ADD5B934E448B48DD11F038FA1B884 /* Pods-YYRefresh_Tests-acknowledgements.plist */, 143 | 8B1E54D57E24C97A9727CC04284C78C9 /* Pods-YYRefresh_Tests-dummy.m */, 144 | 2DE3FB69D6135B2B78BBCAB8D5232393 /* Pods-YYRefresh_Tests-Info.plist */, 145 | C60E982C82E66A1365D16A60B10907A2 /* Pods-YYRefresh_Tests-umbrella.h */, 146 | 238D9CF0AA65374A3037232ACEDB9C64 /* Pods-YYRefresh_Tests.debug.xcconfig */, 147 | 111989B9FF1280CC77012AAAE6A5FCB4 /* Pods-YYRefresh_Tests.release.xcconfig */, 148 | ); 149 | name = "Pods-YYRefresh_Tests"; 150 | path = "Target Support Files/Pods-YYRefresh_Tests"; 151 | sourceTree = ""; 152 | }; 153 | 2B906ED2A30B8DC012D94AC14081691C /* Development Pods */ = { 154 | isa = PBXGroup; 155 | children = ( 156 | C4F9870A7D5E8E316324AD897DA0C7D2 /* YYRefreshView */, 157 | ); 158 | name = "Development Pods"; 159 | sourceTree = ""; 160 | }; 161 | 7E7B1CB132F604DE4D41F9BC80264AC5 /* Support Files */ = { 162 | isa = PBXGroup; 163 | children = ( 164 | 40949F6FCB24D00724A4B24CE04888EC /* ResourceBundle-YYRefresh-YYRefreshView-Info.plist */, 165 | 1CCF642EB91E2E4443F603857055A1FC /* YYRefreshView.modulemap */, 166 | 96D3B2F0CDB0F2848DD3EBF55125235A /* YYRefreshView-dummy.m */, 167 | 0BF4C290AFF1ADAD660F6381F7A5B504 /* YYRefreshView-Info.plist */, 168 | E97996305B252A994A649D9AE448A82D /* YYRefreshView-prefix.pch */, 169 | 1C10B2FF897240B7CE61AAC906247EEF /* YYRefreshView-umbrella.h */, 170 | 6E734CFEE54266DDCC0C504ACF5ECA05 /* YYRefreshView.debug.xcconfig */, 171 | 889826803875754962BD0E41C31D0F58 /* YYRefreshView.release.xcconfig */, 172 | ); 173 | name = "Support Files"; 174 | path = "Example/Pods/Target Support Files/YYRefreshView"; 175 | sourceTree = ""; 176 | }; 177 | A14866028DFFE72D3AEC7EDF4F1C300E /* Resources */ = { 178 | isa = PBXGroup; 179 | children = ( 180 | 43DCEC329BDACA4F0E525D3EC4045DBF /* Assets.xcassets */, 181 | ); 182 | name = Resources; 183 | sourceTree = ""; 184 | }; 185 | BB0F96291599C3DD937B12094F42B60A /* Pod */ = { 186 | isa = PBXGroup; 187 | children = ( 188 | 8CEC07E31ABC4662F9BDDD452CEFFC69 /* LICENSE */, 189 | 17D94EC85DB99869E5DE3270BDFEF8EF /* README.md */, 190 | 26C9C8FE6B427630AC67E14BFC436829 /* YYRefreshView.podspec */, 191 | ); 192 | name = Pod; 193 | sourceTree = ""; 194 | }; 195 | C0834CEBB1379A84116EF29F93051C60 /* iOS */ = { 196 | isa = PBXGroup; 197 | children = ( 198 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */, 199 | ); 200 | name = iOS; 201 | sourceTree = ""; 202 | }; 203 | C44255A21F59586D0BBA90F8D62360E0 /* Products */ = { 204 | isa = PBXGroup; 205 | children = ( 206 | 79EA64F615314C733B0E97C47141EC0C /* Pods_YYRefresh_Example.framework */, 207 | 78F42A0ADF79420B8FB1E8118D50AB96 /* Pods_YYRefresh_Tests.framework */, 208 | AA81A927DED769C1DCC26E4F3C90ADED /* YYRefresh.bundle */, 209 | AE0A2097A807B8E618B3FE457F279414 /* YYRefreshView.framework */, 210 | ); 211 | name = Products; 212 | sourceTree = ""; 213 | }; 214 | C4F9870A7D5E8E316324AD897DA0C7D2 /* YYRefreshView */ = { 215 | isa = PBXGroup; 216 | children = ( 217 | 708A7DCE1C56BC87042BDF9512ACD4B8 /* YYRefresh.swift */, 218 | 1A31078E7AE4F7C48D2162C99D563306 /* YYRefresh+DefaultView.swift */, 219 | F4FD61797D350CB821C12443433CDD2E /* YYRefresh+Foundation.swift */, 220 | E370FD7BCC7E20BE818B68016758706F /* YYRefresh+UIScrollView.swift */, 221 | BB0F96291599C3DD937B12094F42B60A /* Pod */, 222 | A14866028DFFE72D3AEC7EDF4F1C300E /* Resources */, 223 | 7E7B1CB132F604DE4D41F9BC80264AC5 /* Support Files */, 224 | ); 225 | name = YYRefreshView; 226 | path = ../..; 227 | sourceTree = ""; 228 | }; 229 | CF1408CF629C7361332E53B88F7BD30C = { 230 | isa = PBXGroup; 231 | children = ( 232 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 233 | 2B906ED2A30B8DC012D94AC14081691C /* Development Pods */, 234 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, 235 | C44255A21F59586D0BBA90F8D62360E0 /* Products */, 236 | 152340F25583EA59A6C8927FD5205BA1 /* Targets Support Files */, 237 | ); 238 | sourceTree = ""; 239 | }; 240 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { 241 | isa = PBXGroup; 242 | children = ( 243 | C0834CEBB1379A84116EF29F93051C60 /* iOS */, 244 | ); 245 | name = Frameworks; 246 | sourceTree = ""; 247 | }; 248 | E728F0038B92CC0307E677A92E5792B8 /* Pods-YYRefresh_Example */ = { 249 | isa = PBXGroup; 250 | children = ( 251 | 5209BD0996135F64D1ABD6C72CCB0FE8 /* Pods-YYRefresh_Example.modulemap */, 252 | C3EE5FAA0823BDB039B2CFFAB0B94776 /* Pods-YYRefresh_Example-acknowledgements.markdown */, 253 | EEEFE65C6D7463354F7CBBF75872DB6F /* Pods-YYRefresh_Example-acknowledgements.plist */, 254 | 4E9EFEE7B3FAD8A02F7C843C8C8BE2E6 /* Pods-YYRefresh_Example-dummy.m */, 255 | 61A128DCA97859A18165ADD519D1538B /* Pods-YYRefresh_Example-frameworks.sh */, 256 | 22979FC95E2823604744FAC2F2486601 /* Pods-YYRefresh_Example-Info.plist */, 257 | 8FA909E1D66CA06856DD36DBEC591F0F /* Pods-YYRefresh_Example-umbrella.h */, 258 | 2F343CFCC71915D90D4DD6178D6D7F63 /* Pods-YYRefresh_Example.debug.xcconfig */, 259 | 25AD3F63811CABE087692D35696EFF31 /* Pods-YYRefresh_Example.release.xcconfig */, 260 | ); 261 | name = "Pods-YYRefresh_Example"; 262 | path = "Target Support Files/Pods-YYRefresh_Example"; 263 | sourceTree = ""; 264 | }; 265 | /* End PBXGroup section */ 266 | 267 | /* Begin PBXHeadersBuildPhase section */ 268 | 4F460565DB8F2225960D2107855F1C9F /* Headers */ = { 269 | isa = PBXHeadersBuildPhase; 270 | buildActionMask = 2147483647; 271 | files = ( 272 | FA8D201D563C2D5C6A56C0CA30EC78F6 /* Pods-YYRefresh_Tests-umbrella.h in Headers */, 273 | ); 274 | runOnlyForDeploymentPostprocessing = 0; 275 | }; 276 | 5E25304F082B10B0FF01059DB3D5B021 /* Headers */ = { 277 | isa = PBXHeadersBuildPhase; 278 | buildActionMask = 2147483647; 279 | files = ( 280 | E56523A27D334DF63E61DE08DBEC8E31 /* Pods-YYRefresh_Example-umbrella.h in Headers */, 281 | ); 282 | runOnlyForDeploymentPostprocessing = 0; 283 | }; 284 | 5ED23BDED9B11FDCA00028085B6DE187 /* Headers */ = { 285 | isa = PBXHeadersBuildPhase; 286 | buildActionMask = 2147483647; 287 | files = ( 288 | 8152C626AE519C2AE61615FDAEA13885 /* YYRefreshView-umbrella.h in Headers */, 289 | ); 290 | runOnlyForDeploymentPostprocessing = 0; 291 | }; 292 | /* End PBXHeadersBuildPhase section */ 293 | 294 | /* Begin PBXNativeTarget section */ 295 | 2B6A5F5B3A15DA42F33CD144C747D267 /* YYRefreshView */ = { 296 | isa = PBXNativeTarget; 297 | buildConfigurationList = D96EB3EE6910D32CCCFA440FB34186F3 /* Build configuration list for PBXNativeTarget "YYRefreshView" */; 298 | buildPhases = ( 299 | 5ED23BDED9B11FDCA00028085B6DE187 /* Headers */, 300 | EE8611D25ADA5337B2D1F8685E2E1B65 /* Sources */, 301 | 41E77E3EC61D17F49E925742574BF14D /* Frameworks */, 302 | A1962B1F46543F88ACEA85271FC2699C /* Resources */, 303 | ); 304 | buildRules = ( 305 | ); 306 | dependencies = ( 307 | B2EF0FF93155BB0EB7CDBEA73A38FFF0 /* PBXTargetDependency */, 308 | ); 309 | name = YYRefreshView; 310 | productName = YYRefreshView; 311 | productReference = AE0A2097A807B8E618B3FE457F279414 /* YYRefreshView.framework */; 312 | productType = "com.apple.product-type.framework"; 313 | }; 314 | 6F008BA2DF430052085800C1E93A079B /* Pods-YYRefresh_Example */ = { 315 | isa = PBXNativeTarget; 316 | buildConfigurationList = C163D07DBC4B6E7A342FB05DD5A5F6D1 /* Build configuration list for PBXNativeTarget "Pods-YYRefresh_Example" */; 317 | buildPhases = ( 318 | 5E25304F082B10B0FF01059DB3D5B021 /* Headers */, 319 | 64DE4EDD1EE7201CFBAC15FB1B6093C0 /* Sources */, 320 | 7D058D01B15641F16A7EC8BAE4CDF20F /* Frameworks */, 321 | 63AA948A4EDEACCD69549C2807C13BDD /* Resources */, 322 | ); 323 | buildRules = ( 324 | ); 325 | dependencies = ( 326 | 2E6FA228B1D5C7E97059A9DCC6D58C92 /* PBXTargetDependency */, 327 | ); 328 | name = "Pods-YYRefresh_Example"; 329 | productName = "Pods-YYRefresh_Example"; 330 | productReference = 79EA64F615314C733B0E97C47141EC0C /* Pods_YYRefresh_Example.framework */; 331 | productType = "com.apple.product-type.framework"; 332 | }; 333 | BC6975746AC6B1E268BD3D36FAE10958 /* Pods-YYRefresh_Tests */ = { 334 | isa = PBXNativeTarget; 335 | buildConfigurationList = A4C106B006DCDB61601E7ED1892E0F44 /* Build configuration list for PBXNativeTarget "Pods-YYRefresh_Tests" */; 336 | buildPhases = ( 337 | 4F460565DB8F2225960D2107855F1C9F /* Headers */, 338 | 640D968BE1B58999F622059871CA08ED /* Sources */, 339 | D130DC604595FCE6B0BEA973761BA9F9 /* Frameworks */, 340 | FDE269631274363B0B2EA6A77E8C7C8E /* Resources */, 341 | ); 342 | buildRules = ( 343 | ); 344 | dependencies = ( 345 | 857B7099F973169F69CD2AC00F9B5AB3 /* PBXTargetDependency */, 346 | ); 347 | name = "Pods-YYRefresh_Tests"; 348 | productName = "Pods-YYRefresh_Tests"; 349 | productReference = 78F42A0ADF79420B8FB1E8118D50AB96 /* Pods_YYRefresh_Tests.framework */; 350 | productType = "com.apple.product-type.framework"; 351 | }; 352 | E7D9704EBEEE4E6C8C5E66EB62F7F40B /* YYRefreshView-YYRefresh */ = { 353 | isa = PBXNativeTarget; 354 | buildConfigurationList = BD6E14D85E31B803E2A32C2F2B5B5FB5 /* Build configuration list for PBXNativeTarget "YYRefreshView-YYRefresh" */; 355 | buildPhases = ( 356 | 3270C1FCC33EDCD850DCFE7526E17038 /* Sources */, 357 | 4407984DBE8C295B252827561EB0AE2B /* Frameworks */, 358 | 9D9FFF75460E62D49B579F5FCDDEBD25 /* Resources */, 359 | ); 360 | buildRules = ( 361 | ); 362 | dependencies = ( 363 | ); 364 | name = "YYRefreshView-YYRefresh"; 365 | productName = "YYRefreshView-YYRefresh"; 366 | productReference = AA81A927DED769C1DCC26E4F3C90ADED /* YYRefresh.bundle */; 367 | productType = "com.apple.product-type.bundle"; 368 | }; 369 | /* End PBXNativeTarget section */ 370 | 371 | /* Begin PBXProject section */ 372 | BFDFE7DC352907FC980B868725387E98 /* Project object */ = { 373 | isa = PBXProject; 374 | attributes = { 375 | LastSwiftUpdateCheck = 1100; 376 | LastUpgradeCheck = 1100; 377 | }; 378 | buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; 379 | compatibilityVersion = "Xcode 3.2"; 380 | developmentRegion = en; 381 | hasScannedForEncodings = 0; 382 | knownRegions = ( 383 | en, 384 | Base, 385 | ); 386 | mainGroup = CF1408CF629C7361332E53B88F7BD30C; 387 | productRefGroup = C44255A21F59586D0BBA90F8D62360E0 /* Products */; 388 | projectDirPath = ""; 389 | projectRoot = ""; 390 | targets = ( 391 | 6F008BA2DF430052085800C1E93A079B /* Pods-YYRefresh_Example */, 392 | BC6975746AC6B1E268BD3D36FAE10958 /* Pods-YYRefresh_Tests */, 393 | 2B6A5F5B3A15DA42F33CD144C747D267 /* YYRefreshView */, 394 | E7D9704EBEEE4E6C8C5E66EB62F7F40B /* YYRefreshView-YYRefresh */, 395 | ); 396 | }; 397 | /* End PBXProject section */ 398 | 399 | /* Begin PBXResourcesBuildPhase section */ 400 | 63AA948A4EDEACCD69549C2807C13BDD /* Resources */ = { 401 | isa = PBXResourcesBuildPhase; 402 | buildActionMask = 2147483647; 403 | files = ( 404 | ); 405 | runOnlyForDeploymentPostprocessing = 0; 406 | }; 407 | 9D9FFF75460E62D49B579F5FCDDEBD25 /* Resources */ = { 408 | isa = PBXResourcesBuildPhase; 409 | buildActionMask = 2147483647; 410 | files = ( 411 | F0B425E30A1FD9655A4607EF05A2788D /* Assets.xcassets in Resources */, 412 | ); 413 | runOnlyForDeploymentPostprocessing = 0; 414 | }; 415 | A1962B1F46543F88ACEA85271FC2699C /* Resources */ = { 416 | isa = PBXResourcesBuildPhase; 417 | buildActionMask = 2147483647; 418 | files = ( 419 | FF5959CDF018BC3F8CAD24CE133958F9 /* YYRefresh.bundle in Resources */, 420 | ); 421 | runOnlyForDeploymentPostprocessing = 0; 422 | }; 423 | FDE269631274363B0B2EA6A77E8C7C8E /* Resources */ = { 424 | isa = PBXResourcesBuildPhase; 425 | buildActionMask = 2147483647; 426 | files = ( 427 | ); 428 | runOnlyForDeploymentPostprocessing = 0; 429 | }; 430 | /* End PBXResourcesBuildPhase section */ 431 | 432 | /* Begin PBXSourcesBuildPhase section */ 433 | 3270C1FCC33EDCD850DCFE7526E17038 /* Sources */ = { 434 | isa = PBXSourcesBuildPhase; 435 | buildActionMask = 2147483647; 436 | files = ( 437 | ); 438 | runOnlyForDeploymentPostprocessing = 0; 439 | }; 440 | 640D968BE1B58999F622059871CA08ED /* Sources */ = { 441 | isa = PBXSourcesBuildPhase; 442 | buildActionMask = 2147483647; 443 | files = ( 444 | AE9DC4CF897C079D55C91EF779F3FBE6 /* Pods-YYRefresh_Tests-dummy.m in Sources */, 445 | ); 446 | runOnlyForDeploymentPostprocessing = 0; 447 | }; 448 | 64DE4EDD1EE7201CFBAC15FB1B6093C0 /* Sources */ = { 449 | isa = PBXSourcesBuildPhase; 450 | buildActionMask = 2147483647; 451 | files = ( 452 | 4D30B3BEFE41F688DA74F52E6AED3431 /* Pods-YYRefresh_Example-dummy.m in Sources */, 453 | ); 454 | runOnlyForDeploymentPostprocessing = 0; 455 | }; 456 | EE8611D25ADA5337B2D1F8685E2E1B65 /* Sources */ = { 457 | isa = PBXSourcesBuildPhase; 458 | buildActionMask = 2147483647; 459 | files = ( 460 | E1AF4281FA3D45E9B2A7BD6393602105 /* YYRefresh+DefaultView.swift in Sources */, 461 | D360031F6EE3E3F8EABF3A0C510DC7FC /* YYRefresh+Foundation.swift in Sources */, 462 | 213E2B80AA0FE898057A81EDAABFB8F0 /* YYRefresh+UIScrollView.swift in Sources */, 463 | E6E938748D1F5A3D13C0FD7BC18A54C5 /* YYRefresh.swift in Sources */, 464 | AC97C07263CED1D6DBA5485A422CE170 /* YYRefreshView-dummy.m in Sources */, 465 | ); 466 | runOnlyForDeploymentPostprocessing = 0; 467 | }; 468 | /* End PBXSourcesBuildPhase section */ 469 | 470 | /* Begin PBXTargetDependency section */ 471 | 2E6FA228B1D5C7E97059A9DCC6D58C92 /* PBXTargetDependency */ = { 472 | isa = PBXTargetDependency; 473 | name = YYRefreshView; 474 | target = 2B6A5F5B3A15DA42F33CD144C747D267 /* YYRefreshView */; 475 | targetProxy = B409B7E424D62815D7BA43498641BB01 /* PBXContainerItemProxy */; 476 | }; 477 | 857B7099F973169F69CD2AC00F9B5AB3 /* PBXTargetDependency */ = { 478 | isa = PBXTargetDependency; 479 | name = "Pods-YYRefresh_Example"; 480 | target = 6F008BA2DF430052085800C1E93A079B /* Pods-YYRefresh_Example */; 481 | targetProxy = B9278299B49A8B823E473AE61ED536B5 /* PBXContainerItemProxy */; 482 | }; 483 | B2EF0FF93155BB0EB7CDBEA73A38FFF0 /* PBXTargetDependency */ = { 484 | isa = PBXTargetDependency; 485 | name = "YYRefreshView-YYRefresh"; 486 | target = E7D9704EBEEE4E6C8C5E66EB62F7F40B /* YYRefreshView-YYRefresh */; 487 | targetProxy = 00E58D641C9EF99454B1C9DB4E572A47 /* PBXContainerItemProxy */; 488 | }; 489 | /* End PBXTargetDependency section */ 490 | 491 | /* Begin XCBuildConfiguration section */ 492 | 21A217061815E7EE09D3048FDB9D87F1 /* Debug */ = { 493 | isa = XCBuildConfiguration; 494 | baseConfigurationReference = 238D9CF0AA65374A3037232ACEDB9C64 /* Pods-YYRefresh_Tests.debug.xcconfig */; 495 | buildSettings = { 496 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 497 | CODE_SIGN_IDENTITY = ""; 498 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 499 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 500 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 501 | CURRENT_PROJECT_VERSION = 1; 502 | DEFINES_MODULE = YES; 503 | DYLIB_COMPATIBILITY_VERSION = 1; 504 | DYLIB_CURRENT_VERSION = 1; 505 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 506 | INFOPLIST_FILE = "Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests-Info.plist"; 507 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 508 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 509 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 510 | MACH_O_TYPE = staticlib; 511 | MODULEMAP_FILE = "Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests.modulemap"; 512 | OTHER_LDFLAGS = ""; 513 | OTHER_LIBTOOLFLAGS = ""; 514 | PODS_ROOT = "$(SRCROOT)"; 515 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 516 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 517 | SDKROOT = iphoneos; 518 | SKIP_INSTALL = YES; 519 | TARGETED_DEVICE_FAMILY = "1,2"; 520 | VERSIONING_SYSTEM = "apple-generic"; 521 | VERSION_INFO_PREFIX = ""; 522 | }; 523 | name = Debug; 524 | }; 525 | 2912E261F45AF034C591DFA3A79C4B2F /* Release */ = { 526 | isa = XCBuildConfiguration; 527 | baseConfigurationReference = 25AD3F63811CABE087692D35696EFF31 /* Pods-YYRefresh_Example.release.xcconfig */; 528 | buildSettings = { 529 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 530 | CODE_SIGN_IDENTITY = ""; 531 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 532 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 533 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 534 | CURRENT_PROJECT_VERSION = 1; 535 | DEFINES_MODULE = YES; 536 | DYLIB_COMPATIBILITY_VERSION = 1; 537 | DYLIB_CURRENT_VERSION = 1; 538 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 539 | INFOPLIST_FILE = "Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example-Info.plist"; 540 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 541 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 542 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 543 | MACH_O_TYPE = staticlib; 544 | MODULEMAP_FILE = "Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example.modulemap"; 545 | OTHER_LDFLAGS = ""; 546 | OTHER_LIBTOOLFLAGS = ""; 547 | PODS_ROOT = "$(SRCROOT)"; 548 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 549 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 550 | SDKROOT = iphoneos; 551 | SKIP_INSTALL = YES; 552 | TARGETED_DEVICE_FAMILY = "1,2"; 553 | VALIDATE_PRODUCT = YES; 554 | VERSIONING_SYSTEM = "apple-generic"; 555 | VERSION_INFO_PREFIX = ""; 556 | }; 557 | name = Release; 558 | }; 559 | 4C32BD6CA9FD1580A7AA86356A74A903 /* Release */ = { 560 | isa = XCBuildConfiguration; 561 | baseConfigurationReference = 111989B9FF1280CC77012AAAE6A5FCB4 /* Pods-YYRefresh_Tests.release.xcconfig */; 562 | buildSettings = { 563 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 564 | CODE_SIGN_IDENTITY = ""; 565 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 566 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 567 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 568 | CURRENT_PROJECT_VERSION = 1; 569 | DEFINES_MODULE = YES; 570 | DYLIB_COMPATIBILITY_VERSION = 1; 571 | DYLIB_CURRENT_VERSION = 1; 572 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 573 | INFOPLIST_FILE = "Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests-Info.plist"; 574 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 575 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 576 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 577 | MACH_O_TYPE = staticlib; 578 | MODULEMAP_FILE = "Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests.modulemap"; 579 | OTHER_LDFLAGS = ""; 580 | OTHER_LIBTOOLFLAGS = ""; 581 | PODS_ROOT = "$(SRCROOT)"; 582 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 583 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 584 | SDKROOT = iphoneos; 585 | SKIP_INSTALL = YES; 586 | TARGETED_DEVICE_FAMILY = "1,2"; 587 | VALIDATE_PRODUCT = YES; 588 | VERSIONING_SYSTEM = "apple-generic"; 589 | VERSION_INFO_PREFIX = ""; 590 | }; 591 | name = Release; 592 | }; 593 | 4C639966D46FC8AFDDBDEBBADB0D1ADE /* Debug */ = { 594 | isa = XCBuildConfiguration; 595 | baseConfigurationReference = 6E734CFEE54266DDCC0C504ACF5ECA05 /* YYRefreshView.debug.xcconfig */; 596 | buildSettings = { 597 | CODE_SIGN_IDENTITY = "iPhone Developer"; 598 | CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/YYRefreshView"; 599 | IBSC_MODULE = YYRefreshView; 600 | INFOPLIST_FILE = "Target Support Files/YYRefreshView/ResourceBundle-YYRefresh-YYRefreshView-Info.plist"; 601 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 602 | PRODUCT_NAME = YYRefresh; 603 | SDKROOT = iphoneos; 604 | SKIP_INSTALL = YES; 605 | TARGETED_DEVICE_FAMILY = "1,2"; 606 | WRAPPER_EXTENSION = bundle; 607 | }; 608 | name = Debug; 609 | }; 610 | 68914DDFD572C7DE3349C22FD1F7CE07 /* Release */ = { 611 | isa = XCBuildConfiguration; 612 | baseConfigurationReference = 889826803875754962BD0E41C31D0F58 /* YYRefreshView.release.xcconfig */; 613 | buildSettings = { 614 | CODE_SIGN_IDENTITY = ""; 615 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 616 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 617 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 618 | CURRENT_PROJECT_VERSION = 1; 619 | DEFINES_MODULE = YES; 620 | DYLIB_COMPATIBILITY_VERSION = 1; 621 | DYLIB_CURRENT_VERSION = 1; 622 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 623 | GCC_PREFIX_HEADER = "Target Support Files/YYRefreshView/YYRefreshView-prefix.pch"; 624 | INFOPLIST_FILE = "Target Support Files/YYRefreshView/YYRefreshView-Info.plist"; 625 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 626 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 627 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 628 | MODULEMAP_FILE = "Target Support Files/YYRefreshView/YYRefreshView.modulemap"; 629 | PRODUCT_MODULE_NAME = YYRefreshView; 630 | PRODUCT_NAME = YYRefreshView; 631 | SDKROOT = iphoneos; 632 | SKIP_INSTALL = YES; 633 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 634 | SWIFT_VERSION = 5.0; 635 | TARGETED_DEVICE_FAMILY = "1,2"; 636 | VALIDATE_PRODUCT = YES; 637 | VERSIONING_SYSTEM = "apple-generic"; 638 | VERSION_INFO_PREFIX = ""; 639 | }; 640 | name = Release; 641 | }; 642 | 8429330505C3A6160533F4F57DFD3EB4 /* Release */ = { 643 | isa = XCBuildConfiguration; 644 | baseConfigurationReference = 889826803875754962BD0E41C31D0F58 /* YYRefreshView.release.xcconfig */; 645 | buildSettings = { 646 | CODE_SIGN_IDENTITY = "iPhone Developer"; 647 | CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/YYRefreshView"; 648 | IBSC_MODULE = YYRefreshView; 649 | INFOPLIST_FILE = "Target Support Files/YYRefreshView/ResourceBundle-YYRefresh-YYRefreshView-Info.plist"; 650 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 651 | PRODUCT_NAME = YYRefresh; 652 | SDKROOT = iphoneos; 653 | SKIP_INSTALL = YES; 654 | TARGETED_DEVICE_FAMILY = "1,2"; 655 | WRAPPER_EXTENSION = bundle; 656 | }; 657 | name = Release; 658 | }; 659 | 8F17DC3A99F99FBAD606CE6963886315 /* Release */ = { 660 | isa = XCBuildConfiguration; 661 | buildSettings = { 662 | ALWAYS_SEARCH_USER_PATHS = NO; 663 | CLANG_ANALYZER_NONNULL = YES; 664 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 665 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 666 | CLANG_CXX_LIBRARY = "libc++"; 667 | CLANG_ENABLE_MODULES = YES; 668 | CLANG_ENABLE_OBJC_ARC = YES; 669 | CLANG_ENABLE_OBJC_WEAK = YES; 670 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 671 | CLANG_WARN_BOOL_CONVERSION = YES; 672 | CLANG_WARN_COMMA = YES; 673 | CLANG_WARN_CONSTANT_CONVERSION = YES; 674 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 675 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 676 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 677 | CLANG_WARN_EMPTY_BODY = YES; 678 | CLANG_WARN_ENUM_CONVERSION = YES; 679 | CLANG_WARN_INFINITE_RECURSION = YES; 680 | CLANG_WARN_INT_CONVERSION = YES; 681 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 682 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 683 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 684 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 685 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 686 | CLANG_WARN_STRICT_PROTOTYPES = YES; 687 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 688 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 689 | CLANG_WARN_UNREACHABLE_CODE = YES; 690 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 691 | COPY_PHASE_STRIP = NO; 692 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 693 | ENABLE_NS_ASSERTIONS = NO; 694 | ENABLE_STRICT_OBJC_MSGSEND = YES; 695 | GCC_C_LANGUAGE_STANDARD = gnu11; 696 | GCC_NO_COMMON_BLOCKS = YES; 697 | GCC_PREPROCESSOR_DEFINITIONS = ( 698 | "POD_CONFIGURATION_RELEASE=1", 699 | "$(inherited)", 700 | ); 701 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 702 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 703 | GCC_WARN_UNDECLARED_SELECTOR = YES; 704 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 705 | GCC_WARN_UNUSED_FUNCTION = YES; 706 | GCC_WARN_UNUSED_VARIABLE = YES; 707 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 708 | MTL_ENABLE_DEBUG_INFO = NO; 709 | MTL_FAST_MATH = YES; 710 | PRODUCT_NAME = "$(TARGET_NAME)"; 711 | STRIP_INSTALLED_PRODUCT = NO; 712 | SWIFT_COMPILATION_MODE = wholemodule; 713 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 714 | SWIFT_VERSION = 5.0; 715 | SYMROOT = "${SRCROOT}/../build"; 716 | }; 717 | name = Release; 718 | }; 719 | 916E0404255105F480DC4950B7625F7A /* Debug */ = { 720 | isa = XCBuildConfiguration; 721 | buildSettings = { 722 | ALWAYS_SEARCH_USER_PATHS = NO; 723 | CLANG_ANALYZER_NONNULL = YES; 724 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 725 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 726 | CLANG_CXX_LIBRARY = "libc++"; 727 | CLANG_ENABLE_MODULES = YES; 728 | CLANG_ENABLE_OBJC_ARC = YES; 729 | CLANG_ENABLE_OBJC_WEAK = YES; 730 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 731 | CLANG_WARN_BOOL_CONVERSION = YES; 732 | CLANG_WARN_COMMA = YES; 733 | CLANG_WARN_CONSTANT_CONVERSION = YES; 734 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 735 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 736 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 737 | CLANG_WARN_EMPTY_BODY = YES; 738 | CLANG_WARN_ENUM_CONVERSION = YES; 739 | CLANG_WARN_INFINITE_RECURSION = YES; 740 | CLANG_WARN_INT_CONVERSION = YES; 741 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 742 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 743 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 744 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 745 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 746 | CLANG_WARN_STRICT_PROTOTYPES = YES; 747 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 748 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 749 | CLANG_WARN_UNREACHABLE_CODE = YES; 750 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 751 | COPY_PHASE_STRIP = NO; 752 | DEBUG_INFORMATION_FORMAT = dwarf; 753 | ENABLE_STRICT_OBJC_MSGSEND = YES; 754 | ENABLE_TESTABILITY = YES; 755 | GCC_C_LANGUAGE_STANDARD = gnu11; 756 | GCC_DYNAMIC_NO_PIC = NO; 757 | GCC_NO_COMMON_BLOCKS = YES; 758 | GCC_OPTIMIZATION_LEVEL = 0; 759 | GCC_PREPROCESSOR_DEFINITIONS = ( 760 | "POD_CONFIGURATION_DEBUG=1", 761 | "DEBUG=1", 762 | "$(inherited)", 763 | ); 764 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 765 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 766 | GCC_WARN_UNDECLARED_SELECTOR = YES; 767 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 768 | GCC_WARN_UNUSED_FUNCTION = YES; 769 | GCC_WARN_UNUSED_VARIABLE = YES; 770 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 771 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 772 | MTL_FAST_MATH = YES; 773 | ONLY_ACTIVE_ARCH = YES; 774 | PRODUCT_NAME = "$(TARGET_NAME)"; 775 | STRIP_INSTALLED_PRODUCT = NO; 776 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 777 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 778 | SWIFT_VERSION = 5.0; 779 | SYMROOT = "${SRCROOT}/../build"; 780 | }; 781 | name = Debug; 782 | }; 783 | A634AEFF094F6B2451114178E9651005 /* Debug */ = { 784 | isa = XCBuildConfiguration; 785 | baseConfigurationReference = 6E734CFEE54266DDCC0C504ACF5ECA05 /* YYRefreshView.debug.xcconfig */; 786 | buildSettings = { 787 | CODE_SIGN_IDENTITY = ""; 788 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 789 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 790 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 791 | CURRENT_PROJECT_VERSION = 1; 792 | DEFINES_MODULE = YES; 793 | DYLIB_COMPATIBILITY_VERSION = 1; 794 | DYLIB_CURRENT_VERSION = 1; 795 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 796 | GCC_PREFIX_HEADER = "Target Support Files/YYRefreshView/YYRefreshView-prefix.pch"; 797 | INFOPLIST_FILE = "Target Support Files/YYRefreshView/YYRefreshView-Info.plist"; 798 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 799 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 800 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 801 | MODULEMAP_FILE = "Target Support Files/YYRefreshView/YYRefreshView.modulemap"; 802 | PRODUCT_MODULE_NAME = YYRefreshView; 803 | PRODUCT_NAME = YYRefreshView; 804 | SDKROOT = iphoneos; 805 | SKIP_INSTALL = YES; 806 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 807 | SWIFT_VERSION = 5.0; 808 | TARGETED_DEVICE_FAMILY = "1,2"; 809 | VERSIONING_SYSTEM = "apple-generic"; 810 | VERSION_INFO_PREFIX = ""; 811 | }; 812 | name = Debug; 813 | }; 814 | AA5CA9FC5D17B3642EAECDC03725CDA7 /* Debug */ = { 815 | isa = XCBuildConfiguration; 816 | baseConfigurationReference = 2F343CFCC71915D90D4DD6178D6D7F63 /* Pods-YYRefresh_Example.debug.xcconfig */; 817 | buildSettings = { 818 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 819 | CODE_SIGN_IDENTITY = ""; 820 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 821 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 822 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 823 | CURRENT_PROJECT_VERSION = 1; 824 | DEFINES_MODULE = YES; 825 | DYLIB_COMPATIBILITY_VERSION = 1; 826 | DYLIB_CURRENT_VERSION = 1; 827 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 828 | INFOPLIST_FILE = "Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example-Info.plist"; 829 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 830 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 831 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 832 | MACH_O_TYPE = staticlib; 833 | MODULEMAP_FILE = "Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example.modulemap"; 834 | OTHER_LDFLAGS = ""; 835 | OTHER_LIBTOOLFLAGS = ""; 836 | PODS_ROOT = "$(SRCROOT)"; 837 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 838 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 839 | SDKROOT = iphoneos; 840 | SKIP_INSTALL = YES; 841 | TARGETED_DEVICE_FAMILY = "1,2"; 842 | VERSIONING_SYSTEM = "apple-generic"; 843 | VERSION_INFO_PREFIX = ""; 844 | }; 845 | name = Debug; 846 | }; 847 | /* End XCBuildConfiguration section */ 848 | 849 | /* Begin XCConfigurationList section */ 850 | 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { 851 | isa = XCConfigurationList; 852 | buildConfigurations = ( 853 | 916E0404255105F480DC4950B7625F7A /* Debug */, 854 | 8F17DC3A99F99FBAD606CE6963886315 /* Release */, 855 | ); 856 | defaultConfigurationIsVisible = 0; 857 | defaultConfigurationName = Release; 858 | }; 859 | A4C106B006DCDB61601E7ED1892E0F44 /* Build configuration list for PBXNativeTarget "Pods-YYRefresh_Tests" */ = { 860 | isa = XCConfigurationList; 861 | buildConfigurations = ( 862 | 21A217061815E7EE09D3048FDB9D87F1 /* Debug */, 863 | 4C32BD6CA9FD1580A7AA86356A74A903 /* Release */, 864 | ); 865 | defaultConfigurationIsVisible = 0; 866 | defaultConfigurationName = Release; 867 | }; 868 | BD6E14D85E31B803E2A32C2F2B5B5FB5 /* Build configuration list for PBXNativeTarget "YYRefreshView-YYRefresh" */ = { 869 | isa = XCConfigurationList; 870 | buildConfigurations = ( 871 | 4C639966D46FC8AFDDBDEBBADB0D1ADE /* Debug */, 872 | 8429330505C3A6160533F4F57DFD3EB4 /* Release */, 873 | ); 874 | defaultConfigurationIsVisible = 0; 875 | defaultConfigurationName = Release; 876 | }; 877 | C163D07DBC4B6E7A342FB05DD5A5F6D1 /* Build configuration list for PBXNativeTarget "Pods-YYRefresh_Example" */ = { 878 | isa = XCConfigurationList; 879 | buildConfigurations = ( 880 | AA5CA9FC5D17B3642EAECDC03725CDA7 /* Debug */, 881 | 2912E261F45AF034C591DFA3A79C4B2F /* Release */, 882 | ); 883 | defaultConfigurationIsVisible = 0; 884 | defaultConfigurationName = Release; 885 | }; 886 | D96EB3EE6910D32CCCFA440FB34186F3 /* Build configuration list for PBXNativeTarget "YYRefreshView" */ = { 887 | isa = XCConfigurationList; 888 | buildConfigurations = ( 889 | A634AEFF094F6B2451114178E9651005 /* Debug */, 890 | 68914DDFD572C7DE3349C22FD1F7CE07 /* Release */, 891 | ); 892 | defaultConfigurationIsVisible = 0; 893 | defaultConfigurationName = Release; 894 | }; 895 | /* End XCConfigurationList section */ 896 | }; 897 | rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; 898 | } 899 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example-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 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## YYRefreshView 5 | 6 | Copyright (c) 2020 cgcym1234 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example-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 | Copyright (c) 2020 cgcym1234 <cgcym1234@163.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | YYRefreshView 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_YYRefresh_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_YYRefresh_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | function on_error { 7 | echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" 8 | } 9 | trap 'on_error $LINENO' ERR 10 | 11 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 12 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 13 | # frameworks to, so exit 0 (signalling the script phase was successful). 14 | exit 0 15 | fi 16 | 17 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 18 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 19 | 20 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 21 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 22 | 23 | # Used as a return value for each invocation of `strip_invalid_archs` function. 24 | STRIP_BINARY_RETVAL=0 25 | 26 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 27 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 28 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 29 | 30 | # Copies and strips a vendored framework 31 | install_framework() 32 | { 33 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 34 | local source="${BUILT_PRODUCTS_DIR}/$1" 35 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 36 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 37 | elif [ -r "$1" ]; then 38 | local source="$1" 39 | fi 40 | 41 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 42 | 43 | if [ -L "${source}" ]; then 44 | echo "Symlinked..." 45 | source="$(readlink "${source}")" 46 | fi 47 | 48 | # Use filter instead of exclude so missing patterns don't throw errors. 49 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 50 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 51 | 52 | local basename 53 | basename="$(basename -s .framework "$1")" 54 | binary="${destination}/${basename}.framework/${basename}" 55 | 56 | if ! [ -r "$binary" ]; then 57 | binary="${destination}/${basename}" 58 | elif [ -L "${binary}" ]; then 59 | echo "Destination binary is symlinked..." 60 | dirname="$(dirname "${binary}")" 61 | binary="${dirname}/$(readlink "${binary}")" 62 | fi 63 | 64 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 65 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 66 | strip_invalid_archs "$binary" 67 | fi 68 | 69 | # Resign the code if required by the build settings to avoid unstable apps 70 | code_sign_if_enabled "${destination}/$(basename "$1")" 71 | 72 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 73 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 74 | local swift_runtime_libs 75 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) 76 | for lib in $swift_runtime_libs; do 77 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 78 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 79 | code_sign_if_enabled "${destination}/${lib}" 80 | done 81 | fi 82 | } 83 | 84 | # Copies and strips a vendored dSYM 85 | install_dsym() { 86 | local source="$1" 87 | warn_missing_arch=${2:-true} 88 | if [ -r "$source" ]; then 89 | # Copy the dSYM into the targets temp dir. 90 | 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}\"" 91 | 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}" 92 | 93 | local basename 94 | basename="$(basename -s .dSYM "$source")" 95 | binary_name="$(ls "$source/Contents/Resources/DWARF")" 96 | binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" 97 | 98 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 99 | if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then 100 | strip_invalid_archs "$binary" "$warn_missing_arch" 101 | fi 102 | 103 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then 104 | # Move the stripped file into its final destination. 105 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 106 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 107 | else 108 | # 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. 109 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" 110 | fi 111 | fi 112 | } 113 | 114 | # Copies the bcsymbolmap files of a vendored framework 115 | install_bcsymbolmap() { 116 | local bcsymbolmap_path="$1" 117 | local destination="${BUILT_PRODUCTS_DIR}" 118 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" 119 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" 120 | } 121 | 122 | # Signs a framework with the provided identity 123 | code_sign_if_enabled() { 124 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 125 | # Use the current code_sign_identity 126 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 127 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 128 | 129 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 130 | code_sign_cmd="$code_sign_cmd &" 131 | fi 132 | echo "$code_sign_cmd" 133 | eval "$code_sign_cmd" 134 | fi 135 | } 136 | 137 | # Strip invalid architectures 138 | strip_invalid_archs() { 139 | binary="$1" 140 | warn_missing_arch=${2:-true} 141 | # Get architectures for current target binary 142 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 143 | # Intersect them with the architectures we are building for 144 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 145 | # If there are no archs supported by this binary then warn the user 146 | if [[ -z "$intersected_archs" ]]; then 147 | if [[ "$warn_missing_arch" == "true" ]]; then 148 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 149 | fi 150 | STRIP_BINARY_RETVAL=0 151 | return 152 | fi 153 | stripped="" 154 | for arch in $binary_archs; do 155 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 156 | # Strip non-valid architectures in-place 157 | lipo -remove "$arch" -output "$binary" "$binary" 158 | stripped="$stripped $arch" 159 | fi 160 | done 161 | if [[ "$stripped" ]]; then 162 | echo "Stripped $binary of architectures:$stripped" 163 | fi 164 | STRIP_BINARY_RETVAL=1 165 | } 166 | 167 | install_artifact() { 168 | artifact="$1" 169 | base="$(basename "$artifact")" 170 | case $base in 171 | *.framework) 172 | install_framework "$artifact" 173 | ;; 174 | *.dSYM) 175 | # Suppress arch warnings since XCFrameworks will include many dSYM files 176 | install_dsym "$artifact" "false" 177 | ;; 178 | *.bcsymbolmap) 179 | install_bcsymbolmap "$artifact" 180 | ;; 181 | *) 182 | echo "error: Unrecognized artifact "$artifact"" 183 | ;; 184 | esac 185 | } 186 | 187 | copy_artifacts() { 188 | file_list="$1" 189 | while read artifact; do 190 | install_artifact "$artifact" 191 | done <$file_list 192 | } 193 | 194 | ARTIFACT_LIST_FILE="${BUILT_PRODUCTS_DIR}/cocoapods-artifacts-${CONFIGURATION}.txt" 195 | if [ -r "${ARTIFACT_LIST_FILE}" ]; then 196 | copy_artifacts "${ARTIFACT_LIST_FILE}" 197 | fi 198 | 199 | if [[ "$CONFIGURATION" == "Debug" ]]; then 200 | install_framework "${BUILT_PRODUCTS_DIR}/YYRefreshView/YYRefreshView.framework" 201 | fi 202 | if [[ "$CONFIGURATION" == "Release" ]]; then 203 | install_framework "${BUILT_PRODUCTS_DIR}/YYRefreshView/YYRefreshView.framework" 204 | fi 205 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 206 | wait 207 | fi 208 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example-umbrella.h: -------------------------------------------------------------------------------- 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 | 14 | FOUNDATION_EXPORT double Pods_YYRefresh_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_YYRefresh_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYRefreshView" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYRefreshView/YYRefreshView.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "YYRefreshView" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_YYRefresh_Example { 2 | umbrella header "Pods-YYRefresh_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYRefreshView" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYRefreshView/YYRefreshView.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "YYRefreshView" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests-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 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_YYRefresh_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_YYRefresh_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests-umbrella.h: -------------------------------------------------------------------------------- 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 | 14 | FOUNDATION_EXPORT double Pods_YYRefresh_TestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_YYRefresh_TestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYRefreshView" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYRefreshView/YYRefreshView.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "YYRefreshView" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_YYRefresh_Tests { 2 | umbrella header "Pods-YYRefresh_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYRefreshView" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/YYRefreshView/YYRefreshView.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "YYRefreshView" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/YYRefreshView/ResourceBundle-YYRefresh-YYRefreshView-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleIdentifier 8 | ${PRODUCT_BUNDLE_IDENTIFIER} 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/YYRefreshView/YYRefreshView-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 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/YYRefreshView/YYRefreshView-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_YYRefreshView : NSObject 3 | @end 4 | @implementation PodsDummy_YYRefreshView 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/YYRefreshView/YYRefreshView-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 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/YYRefreshView/YYRefreshView-umbrella.h: -------------------------------------------------------------------------------- 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 | 14 | FOUNDATION_EXPORT double YYRefreshViewVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char YYRefreshViewVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/YYRefreshView/YYRefreshView.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYRefreshView 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 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}/../.. 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/YYRefreshView/YYRefreshView.modulemap: -------------------------------------------------------------------------------- 1 | framework module YYRefreshView { 2 | umbrella header "YYRefreshView-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/YYRefreshView/YYRefreshView.release.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YYRefreshView 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 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}/../.. 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 11 | -------------------------------------------------------------------------------- /Example/Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Tests/Tests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | import YYRefreshView 3 | 4 | class Tests: XCTestCase { 5 | 6 | override func setUp() { 7 | super.setUp() 8 | // Put setup code here. This method is called before the invocation of each test method in the class. 9 | } 10 | 11 | override func tearDown() { 12 | // Put teardown code here. This method is called after the invocation of each test method in the class. 13 | super.tearDown() 14 | } 15 | 16 | func testExample() { 17 | // This is an example of a functional test case. 18 | XCTAssert(true, "Pass") 19 | } 20 | 21 | func testPerformanceExample() { 22 | // This is an example of a performance test case. 23 | self.measure() { 24 | // Put the code you want to measure the time of here. 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Example/YYRefresh.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; 11 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; }; 12 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; }; 13 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; 14 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; 15 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; }; 16 | 72BD455EB7F4B042AB97288A /* Pods_YYRefresh_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90CD30DF29BCFE3BE8D3EACF /* Pods_YYRefresh_Tests.framework */; }; 17 | 8F1CF847311AA75449B62B16 /* Pods_YYRefresh_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E358527AD009C71D46952264 /* Pods_YYRefresh_Example.framework */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXContainerItemProxy section */ 21 | 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = { 22 | isa = PBXContainerItemProxy; 23 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */; 24 | proxyType = 1; 25 | remoteGlobalIDString = 607FACCF1AFB9204008FA782; 26 | remoteInfo = YYRefresh; 27 | }; 28 | /* End PBXContainerItemProxy section */ 29 | 30 | /* Begin PBXFileReference section */ 31 | 07768BCD915FD386B09ED74C /* Pods-YYRefresh_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YYRefresh_Tests.release.xcconfig"; path = "Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests.release.xcconfig"; sourceTree = ""; }; 32 | 19EED02D2434D52E0DBA24E9 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 33 | 52FA98A8EB0555FACEF1E479 /* Pods-YYRefresh_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YYRefresh_Example.release.xcconfig"; path = "Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example.release.xcconfig"; sourceTree = ""; }; 34 | 607FACD01AFB9204008FA782 /* YYRefresh_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = YYRefresh_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 35 | 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 36 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 37 | 607FACD71AFB9204008FA782 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 38 | 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 39 | 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 40 | 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 41 | 607FACE51AFB9204008FA782 /* YYRefresh_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = YYRefresh_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 42 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 43 | 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; 44 | 7F78D82AC600133581E60F41 /* YYRefreshView.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = YYRefreshView.podspec; path = ../YYRefreshView.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 45 | 90CD30DF29BCFE3BE8D3EACF /* Pods_YYRefresh_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_YYRefresh_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 46 | 99C573DE878302DC0D69FCEF /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 47 | BF444BE1AFBD5BB919E84212 /* Pods-YYRefresh_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YYRefresh_Tests.debug.xcconfig"; path = "Target Support Files/Pods-YYRefresh_Tests/Pods-YYRefresh_Tests.debug.xcconfig"; sourceTree = ""; }; 48 | E358527AD009C71D46952264 /* Pods_YYRefresh_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_YYRefresh_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 49 | E93895A7DB96E8D1FABD2712 /* Pods-YYRefresh_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YYRefresh_Example.debug.xcconfig"; path = "Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example.debug.xcconfig"; sourceTree = ""; }; 50 | /* End PBXFileReference section */ 51 | 52 | /* Begin PBXFrameworksBuildPhase section */ 53 | 607FACCD1AFB9204008FA782 /* Frameworks */ = { 54 | isa = PBXFrameworksBuildPhase; 55 | buildActionMask = 2147483647; 56 | files = ( 57 | 8F1CF847311AA75449B62B16 /* Pods_YYRefresh_Example.framework in Frameworks */, 58 | ); 59 | runOnlyForDeploymentPostprocessing = 0; 60 | }; 61 | 607FACE21AFB9204008FA782 /* Frameworks */ = { 62 | isa = PBXFrameworksBuildPhase; 63 | buildActionMask = 2147483647; 64 | files = ( 65 | 72BD455EB7F4B042AB97288A /* Pods_YYRefresh_Tests.framework in Frameworks */, 66 | ); 67 | runOnlyForDeploymentPostprocessing = 0; 68 | }; 69 | /* End PBXFrameworksBuildPhase section */ 70 | 71 | /* Begin PBXGroup section */ 72 | 53C7461D4E2516BE9DF0272D /* Frameworks */ = { 73 | isa = PBXGroup; 74 | children = ( 75 | E358527AD009C71D46952264 /* Pods_YYRefresh_Example.framework */, 76 | 90CD30DF29BCFE3BE8D3EACF /* Pods_YYRefresh_Tests.framework */, 77 | ); 78 | name = Frameworks; 79 | sourceTree = ""; 80 | }; 81 | 5413757EE269DCEB557ADCAC /* Pods */ = { 82 | isa = PBXGroup; 83 | children = ( 84 | E93895A7DB96E8D1FABD2712 /* Pods-YYRefresh_Example.debug.xcconfig */, 85 | 52FA98A8EB0555FACEF1E479 /* Pods-YYRefresh_Example.release.xcconfig */, 86 | BF444BE1AFBD5BB919E84212 /* Pods-YYRefresh_Tests.debug.xcconfig */, 87 | 07768BCD915FD386B09ED74C /* Pods-YYRefresh_Tests.release.xcconfig */, 88 | ); 89 | path = Pods; 90 | sourceTree = ""; 91 | }; 92 | 607FACC71AFB9204008FA782 = { 93 | isa = PBXGroup; 94 | children = ( 95 | 607FACF51AFB993E008FA782 /* Podspec Metadata */, 96 | 607FACD21AFB9204008FA782 /* Example for YYRefresh */, 97 | 607FACE81AFB9204008FA782 /* Tests */, 98 | 607FACD11AFB9204008FA782 /* Products */, 99 | 5413757EE269DCEB557ADCAC /* Pods */, 100 | 53C7461D4E2516BE9DF0272D /* Frameworks */, 101 | ); 102 | sourceTree = ""; 103 | }; 104 | 607FACD11AFB9204008FA782 /* Products */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | 607FACD01AFB9204008FA782 /* YYRefresh_Example.app */, 108 | 607FACE51AFB9204008FA782 /* YYRefresh_Tests.xctest */, 109 | ); 110 | name = Products; 111 | sourceTree = ""; 112 | }; 113 | 607FACD21AFB9204008FA782 /* Example for YYRefresh */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */, 117 | 607FACD71AFB9204008FA782 /* ViewController.swift */, 118 | 607FACD91AFB9204008FA782 /* Main.storyboard */, 119 | 607FACDC1AFB9204008FA782 /* Images.xcassets */, 120 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, 121 | 607FACD31AFB9204008FA782 /* Supporting Files */, 122 | ); 123 | name = "Example for YYRefresh"; 124 | path = YYRefresh; 125 | sourceTree = ""; 126 | }; 127 | 607FACD31AFB9204008FA782 /* Supporting Files */ = { 128 | isa = PBXGroup; 129 | children = ( 130 | 607FACD41AFB9204008FA782 /* Info.plist */, 131 | ); 132 | name = "Supporting Files"; 133 | sourceTree = ""; 134 | }; 135 | 607FACE81AFB9204008FA782 /* Tests */ = { 136 | isa = PBXGroup; 137 | children = ( 138 | 607FACEB1AFB9204008FA782 /* Tests.swift */, 139 | 607FACE91AFB9204008FA782 /* Supporting Files */, 140 | ); 141 | path = Tests; 142 | sourceTree = ""; 143 | }; 144 | 607FACE91AFB9204008FA782 /* Supporting Files */ = { 145 | isa = PBXGroup; 146 | children = ( 147 | 607FACEA1AFB9204008FA782 /* Info.plist */, 148 | ); 149 | name = "Supporting Files"; 150 | sourceTree = ""; 151 | }; 152 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { 153 | isa = PBXGroup; 154 | children = ( 155 | 7F78D82AC600133581E60F41 /* YYRefreshView.podspec */, 156 | 99C573DE878302DC0D69FCEF /* README.md */, 157 | 19EED02D2434D52E0DBA24E9 /* LICENSE */, 158 | ); 159 | name = "Podspec Metadata"; 160 | sourceTree = ""; 161 | }; 162 | /* End PBXGroup section */ 163 | 164 | /* Begin PBXNativeTarget section */ 165 | 607FACCF1AFB9204008FA782 /* YYRefresh_Example */ = { 166 | isa = PBXNativeTarget; 167 | buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "YYRefresh_Example" */; 168 | buildPhases = ( 169 | 19B017BE688AB3D0870F4BDA /* [CP] Check Pods Manifest.lock */, 170 | 607FACCC1AFB9204008FA782 /* Sources */, 171 | 607FACCD1AFB9204008FA782 /* Frameworks */, 172 | 607FACCE1AFB9204008FA782 /* Resources */, 173 | A3546B98977F6586594C0BD7 /* [CP] Embed Pods Frameworks */, 174 | ); 175 | buildRules = ( 176 | ); 177 | dependencies = ( 178 | ); 179 | name = YYRefresh_Example; 180 | productName = YYRefresh; 181 | productReference = 607FACD01AFB9204008FA782 /* YYRefresh_Example.app */; 182 | productType = "com.apple.product-type.application"; 183 | }; 184 | 607FACE41AFB9204008FA782 /* YYRefresh_Tests */ = { 185 | isa = PBXNativeTarget; 186 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "YYRefresh_Tests" */; 187 | buildPhases = ( 188 | C3131F93F150B37BCE216EB5 /* [CP] Check Pods Manifest.lock */, 189 | 607FACE11AFB9204008FA782 /* Sources */, 190 | 607FACE21AFB9204008FA782 /* Frameworks */, 191 | 607FACE31AFB9204008FA782 /* Resources */, 192 | ); 193 | buildRules = ( 194 | ); 195 | dependencies = ( 196 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */, 197 | ); 198 | name = YYRefresh_Tests; 199 | productName = Tests; 200 | productReference = 607FACE51AFB9204008FA782 /* YYRefresh_Tests.xctest */; 201 | productType = "com.apple.product-type.bundle.unit-test"; 202 | }; 203 | /* End PBXNativeTarget section */ 204 | 205 | /* Begin PBXProject section */ 206 | 607FACC81AFB9204008FA782 /* Project object */ = { 207 | isa = PBXProject; 208 | attributes = { 209 | LastSwiftUpdateCheck = 0830; 210 | LastUpgradeCheck = 1200; 211 | ORGANIZATIONNAME = CocoaPods; 212 | TargetAttributes = { 213 | 607FACCF1AFB9204008FA782 = { 214 | CreatedOnToolsVersion = 6.3.1; 215 | LastSwiftMigration = 0900; 216 | }; 217 | 607FACE41AFB9204008FA782 = { 218 | CreatedOnToolsVersion = 6.3.1; 219 | LastSwiftMigration = 0900; 220 | TestTargetID = 607FACCF1AFB9204008FA782; 221 | }; 222 | }; 223 | }; 224 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "YYRefresh" */; 225 | compatibilityVersion = "Xcode 3.2"; 226 | developmentRegion = en; 227 | hasScannedForEncodings = 0; 228 | knownRegions = ( 229 | en, 230 | Base, 231 | ); 232 | mainGroup = 607FACC71AFB9204008FA782; 233 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */; 234 | projectDirPath = ""; 235 | projectRoot = ""; 236 | targets = ( 237 | 607FACCF1AFB9204008FA782 /* YYRefresh_Example */, 238 | 607FACE41AFB9204008FA782 /* YYRefresh_Tests */, 239 | ); 240 | }; 241 | /* End PBXProject section */ 242 | 243 | /* Begin PBXResourcesBuildPhase section */ 244 | 607FACCE1AFB9204008FA782 /* Resources */ = { 245 | isa = PBXResourcesBuildPhase; 246 | buildActionMask = 2147483647; 247 | files = ( 248 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */, 249 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, 250 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, 251 | ); 252 | runOnlyForDeploymentPostprocessing = 0; 253 | }; 254 | 607FACE31AFB9204008FA782 /* Resources */ = { 255 | isa = PBXResourcesBuildPhase; 256 | buildActionMask = 2147483647; 257 | files = ( 258 | ); 259 | runOnlyForDeploymentPostprocessing = 0; 260 | }; 261 | /* End PBXResourcesBuildPhase section */ 262 | 263 | /* Begin PBXShellScriptBuildPhase section */ 264 | 19B017BE688AB3D0870F4BDA /* [CP] Check Pods Manifest.lock */ = { 265 | isa = PBXShellScriptBuildPhase; 266 | buildActionMask = 2147483647; 267 | files = ( 268 | ); 269 | inputFileListPaths = ( 270 | ); 271 | inputPaths = ( 272 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 273 | "${PODS_ROOT}/Manifest.lock", 274 | ); 275 | name = "[CP] Check Pods Manifest.lock"; 276 | outputFileListPaths = ( 277 | ); 278 | outputPaths = ( 279 | "$(DERIVED_FILE_DIR)/Pods-YYRefresh_Example-checkManifestLockResult.txt", 280 | ); 281 | runOnlyForDeploymentPostprocessing = 0; 282 | shellPath = /bin/sh; 283 | 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"; 284 | showEnvVarsInLog = 0; 285 | }; 286 | A3546B98977F6586594C0BD7 /* [CP] Embed Pods Frameworks */ = { 287 | isa = PBXShellScriptBuildPhase; 288 | buildActionMask = 2147483647; 289 | files = ( 290 | ); 291 | inputPaths = ( 292 | "${PODS_ROOT}/Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example-frameworks.sh", 293 | "${BUILT_PRODUCTS_DIR}/YYRefreshView/YYRefreshView.framework", 294 | ); 295 | name = "[CP] Embed Pods Frameworks"; 296 | outputPaths = ( 297 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYRefreshView.framework", 298 | ); 299 | runOnlyForDeploymentPostprocessing = 0; 300 | shellPath = /bin/sh; 301 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-YYRefresh_Example/Pods-YYRefresh_Example-frameworks.sh\"\n"; 302 | showEnvVarsInLog = 0; 303 | }; 304 | C3131F93F150B37BCE216EB5 /* [CP] Check Pods Manifest.lock */ = { 305 | isa = PBXShellScriptBuildPhase; 306 | buildActionMask = 2147483647; 307 | files = ( 308 | ); 309 | inputFileListPaths = ( 310 | ); 311 | inputPaths = ( 312 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 313 | "${PODS_ROOT}/Manifest.lock", 314 | ); 315 | name = "[CP] Check Pods Manifest.lock"; 316 | outputFileListPaths = ( 317 | ); 318 | outputPaths = ( 319 | "$(DERIVED_FILE_DIR)/Pods-YYRefresh_Tests-checkManifestLockResult.txt", 320 | ); 321 | runOnlyForDeploymentPostprocessing = 0; 322 | shellPath = /bin/sh; 323 | 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"; 324 | showEnvVarsInLog = 0; 325 | }; 326 | /* End PBXShellScriptBuildPhase section */ 327 | 328 | /* Begin PBXSourcesBuildPhase section */ 329 | 607FACCC1AFB9204008FA782 /* Sources */ = { 330 | isa = PBXSourcesBuildPhase; 331 | buildActionMask = 2147483647; 332 | files = ( 333 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */, 334 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, 335 | ); 336 | runOnlyForDeploymentPostprocessing = 0; 337 | }; 338 | 607FACE11AFB9204008FA782 /* Sources */ = { 339 | isa = PBXSourcesBuildPhase; 340 | buildActionMask = 2147483647; 341 | files = ( 342 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */, 343 | ); 344 | runOnlyForDeploymentPostprocessing = 0; 345 | }; 346 | /* End PBXSourcesBuildPhase section */ 347 | 348 | /* Begin PBXTargetDependency section */ 349 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = { 350 | isa = PBXTargetDependency; 351 | target = 607FACCF1AFB9204008FA782 /* YYRefresh_Example */; 352 | targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */; 353 | }; 354 | /* End PBXTargetDependency section */ 355 | 356 | /* Begin PBXVariantGroup section */ 357 | 607FACD91AFB9204008FA782 /* Main.storyboard */ = { 358 | isa = PBXVariantGroup; 359 | children = ( 360 | 607FACDA1AFB9204008FA782 /* Base */, 361 | ); 362 | name = Main.storyboard; 363 | sourceTree = ""; 364 | }; 365 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { 366 | isa = PBXVariantGroup; 367 | children = ( 368 | 607FACDF1AFB9204008FA782 /* Base */, 369 | ); 370 | name = LaunchScreen.xib; 371 | sourceTree = ""; 372 | }; 373 | /* End PBXVariantGroup section */ 374 | 375 | /* Begin XCBuildConfiguration section */ 376 | 607FACED1AFB9204008FA782 /* Debug */ = { 377 | isa = XCBuildConfiguration; 378 | buildSettings = { 379 | ALWAYS_SEARCH_USER_PATHS = NO; 380 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 381 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 382 | CLANG_CXX_LIBRARY = "libc++"; 383 | CLANG_ENABLE_MODULES = YES; 384 | CLANG_ENABLE_OBJC_ARC = YES; 385 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 386 | CLANG_WARN_BOOL_CONVERSION = YES; 387 | CLANG_WARN_COMMA = YES; 388 | CLANG_WARN_CONSTANT_CONVERSION = YES; 389 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 390 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 391 | CLANG_WARN_EMPTY_BODY = YES; 392 | CLANG_WARN_ENUM_CONVERSION = YES; 393 | CLANG_WARN_INFINITE_RECURSION = YES; 394 | CLANG_WARN_INT_CONVERSION = YES; 395 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 396 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 397 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 398 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 399 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 400 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 401 | CLANG_WARN_STRICT_PROTOTYPES = YES; 402 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 403 | CLANG_WARN_UNREACHABLE_CODE = YES; 404 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 405 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 406 | COPY_PHASE_STRIP = NO; 407 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 408 | ENABLE_STRICT_OBJC_MSGSEND = YES; 409 | ENABLE_TESTABILITY = YES; 410 | GCC_C_LANGUAGE_STANDARD = gnu99; 411 | GCC_DYNAMIC_NO_PIC = NO; 412 | GCC_NO_COMMON_BLOCKS = YES; 413 | GCC_OPTIMIZATION_LEVEL = 0; 414 | GCC_PREPROCESSOR_DEFINITIONS = ( 415 | "DEBUG=1", 416 | "$(inherited)", 417 | ); 418 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 419 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 420 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 421 | GCC_WARN_UNDECLARED_SELECTOR = YES; 422 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 423 | GCC_WARN_UNUSED_FUNCTION = YES; 424 | GCC_WARN_UNUSED_VARIABLE = YES; 425 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 426 | MTL_ENABLE_DEBUG_INFO = YES; 427 | ONLY_ACTIVE_ARCH = YES; 428 | SDKROOT = iphoneos; 429 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 430 | SWIFT_VERSION = 5.0; 431 | }; 432 | name = Debug; 433 | }; 434 | 607FACEE1AFB9204008FA782 /* Release */ = { 435 | isa = XCBuildConfiguration; 436 | buildSettings = { 437 | ALWAYS_SEARCH_USER_PATHS = NO; 438 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 439 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 440 | CLANG_CXX_LIBRARY = "libc++"; 441 | CLANG_ENABLE_MODULES = YES; 442 | CLANG_ENABLE_OBJC_ARC = YES; 443 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 444 | CLANG_WARN_BOOL_CONVERSION = YES; 445 | CLANG_WARN_COMMA = YES; 446 | CLANG_WARN_CONSTANT_CONVERSION = YES; 447 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 448 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 449 | CLANG_WARN_EMPTY_BODY = YES; 450 | CLANG_WARN_ENUM_CONVERSION = YES; 451 | CLANG_WARN_INFINITE_RECURSION = YES; 452 | CLANG_WARN_INT_CONVERSION = YES; 453 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 454 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 455 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 456 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 457 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 458 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 459 | CLANG_WARN_STRICT_PROTOTYPES = YES; 460 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 461 | CLANG_WARN_UNREACHABLE_CODE = YES; 462 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 463 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 464 | COPY_PHASE_STRIP = NO; 465 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 466 | ENABLE_NS_ASSERTIONS = NO; 467 | ENABLE_STRICT_OBJC_MSGSEND = YES; 468 | GCC_C_LANGUAGE_STANDARD = gnu99; 469 | GCC_NO_COMMON_BLOCKS = YES; 470 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 471 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 472 | GCC_WARN_UNDECLARED_SELECTOR = YES; 473 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 474 | GCC_WARN_UNUSED_FUNCTION = YES; 475 | GCC_WARN_UNUSED_VARIABLE = YES; 476 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 477 | MTL_ENABLE_DEBUG_INFO = NO; 478 | SDKROOT = iphoneos; 479 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 480 | SWIFT_VERSION = 5.0; 481 | VALIDATE_PRODUCT = YES; 482 | }; 483 | name = Release; 484 | }; 485 | 607FACF01AFB9204008FA782 /* Debug */ = { 486 | isa = XCBuildConfiguration; 487 | baseConfigurationReference = E93895A7DB96E8D1FABD2712 /* Pods-YYRefresh_Example.debug.xcconfig */; 488 | buildSettings = { 489 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 490 | INFOPLIST_FILE = YYRefresh/Info.plist; 491 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 492 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 493 | MODULE_NAME = ExampleApp; 494 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; 495 | PRODUCT_NAME = "$(TARGET_NAME)"; 496 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 497 | SWIFT_VERSION = 5.0; 498 | }; 499 | name = Debug; 500 | }; 501 | 607FACF11AFB9204008FA782 /* Release */ = { 502 | isa = XCBuildConfiguration; 503 | baseConfigurationReference = 52FA98A8EB0555FACEF1E479 /* Pods-YYRefresh_Example.release.xcconfig */; 504 | buildSettings = { 505 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 506 | INFOPLIST_FILE = YYRefresh/Info.plist; 507 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 508 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 509 | MODULE_NAME = ExampleApp; 510 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; 511 | PRODUCT_NAME = "$(TARGET_NAME)"; 512 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 513 | SWIFT_VERSION = 5.0; 514 | }; 515 | name = Release; 516 | }; 517 | 607FACF31AFB9204008FA782 /* Debug */ = { 518 | isa = XCBuildConfiguration; 519 | baseConfigurationReference = BF444BE1AFBD5BB919E84212 /* Pods-YYRefresh_Tests.debug.xcconfig */; 520 | buildSettings = { 521 | FRAMEWORK_SEARCH_PATHS = ( 522 | "$(PLATFORM_DIR)/Developer/Library/Frameworks", 523 | "$(inherited)", 524 | ); 525 | GCC_PREPROCESSOR_DEFINITIONS = ( 526 | "DEBUG=1", 527 | "$(inherited)", 528 | ); 529 | INFOPLIST_FILE = Tests/Info.plist; 530 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 531 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 532 | PRODUCT_NAME = "$(TARGET_NAME)"; 533 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 534 | SWIFT_VERSION = 5.0; 535 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/YYRefresh_Example.app/YYRefresh_Example"; 536 | }; 537 | name = Debug; 538 | }; 539 | 607FACF41AFB9204008FA782 /* Release */ = { 540 | isa = XCBuildConfiguration; 541 | baseConfigurationReference = 07768BCD915FD386B09ED74C /* Pods-YYRefresh_Tests.release.xcconfig */; 542 | buildSettings = { 543 | FRAMEWORK_SEARCH_PATHS = ( 544 | "$(PLATFORM_DIR)/Developer/Library/Frameworks", 545 | "$(inherited)", 546 | ); 547 | INFOPLIST_FILE = Tests/Info.plist; 548 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 549 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 550 | PRODUCT_NAME = "$(TARGET_NAME)"; 551 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 552 | SWIFT_VERSION = 5.0; 553 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/YYRefresh_Example.app/YYRefresh_Example"; 554 | }; 555 | name = Release; 556 | }; 557 | /* End XCBuildConfiguration section */ 558 | 559 | /* Begin XCConfigurationList section */ 560 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "YYRefresh" */ = { 561 | isa = XCConfigurationList; 562 | buildConfigurations = ( 563 | 607FACED1AFB9204008FA782 /* Debug */, 564 | 607FACEE1AFB9204008FA782 /* Release */, 565 | ); 566 | defaultConfigurationIsVisible = 0; 567 | defaultConfigurationName = Release; 568 | }; 569 | 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "YYRefresh_Example" */ = { 570 | isa = XCConfigurationList; 571 | buildConfigurations = ( 572 | 607FACF01AFB9204008FA782 /* Debug */, 573 | 607FACF11AFB9204008FA782 /* Release */, 574 | ); 575 | defaultConfigurationIsVisible = 0; 576 | defaultConfigurationName = Release; 577 | }; 578 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "YYRefresh_Tests" */ = { 579 | isa = XCConfigurationList; 580 | buildConfigurations = ( 581 | 607FACF31AFB9204008FA782 /* Debug */, 582 | 607FACF41AFB9204008FA782 /* Release */, 583 | ); 584 | defaultConfigurationIsVisible = 0; 585 | defaultConfigurationName = Release; 586 | }; 587 | /* End XCConfigurationList section */ 588 | }; 589 | rootObject = 607FACC81AFB9204008FA782 /* Project object */; 590 | } 591 | -------------------------------------------------------------------------------- /Example/YYRefresh.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/YYRefresh.xcodeproj/xcshareddata/xcschemes/YYRefresh-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 51 | 52 | 53 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 76 | 78 | 84 | 85 | 86 | 87 | 93 | 95 | 101 | 102 | 103 | 104 | 106 | 107 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /Example/YYRefresh.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/YYRefresh.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/YYRefresh/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // YYRefresh 4 | // 5 | // Created by cgcym1234 on 10/03/2020. 6 | // Copyright (c) 2020 cgcym1234. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(_ application: UIApplication) { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(_ application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(_ application: UIApplication) { 33 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(_ application: UIApplication) { 37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 38 | } 39 | 40 | func applicationWillTerminate(_ application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /Example/YYRefresh/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 25 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Example/YYRefresh/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Example/YYRefresh/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ios-marketing", 45 | "size" : "1024x1024", 46 | "scale" : "1x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Example/YYRefresh/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 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationPortraitUpsideDown 38 | UIInterfaceOrientationLandscapeRight 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Example/YYRefresh/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // YYRefresh 4 | // 5 | // Created by cgcym1234 on 10/03/2020. 6 | // Copyright (c) 2020 cgcym1234. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import YYRefreshView 11 | 12 | class ViewController: UIViewController { 13 | var scrollView: UIScrollView! 14 | 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | addScrollView() 18 | edgesForExtendedLayout = [] 19 | if #available(iOS 11.0, *) { 20 | scrollView.contentInsetAdjustmentBehavior = .never 21 | } else { 22 | automaticallyAdjustsScrollViewInsets = false 23 | } 24 | addRefresh() 25 | scrollView.yy_topRefresh?.beginRefresh() 26 | } 27 | 28 | override func viewDidLayoutSubviews() { 29 | super.viewDidLayoutSubviews() 30 | scrollView.frame = view.bounds 31 | scrollView.contentSize = view.bounds.size 32 | } 33 | 34 | override func viewDidAppear(_ animated: Bool) { 35 | super.viewDidAppear(animated) 36 | scrollView.yy_topRefresh?.beginRefresh() 37 | } 38 | 39 | func addScrollView() { 40 | let scrollView = UIScrollView(frame: view.bounds) 41 | scrollView.backgroundColor = UIColor.lightGray 42 | scrollView.alwaysBounceVertical = true 43 | scrollView.alwaysBounceHorizontal = true 44 | scrollView.bounces = true 45 | scrollView.contentSize = view.bounds.size 46 | view.addSubview(scrollView) 47 | self.scrollView = scrollView 48 | 49 | let label = UILabel() 50 | label.text = "上下左右拖动" 51 | label.sizeToFit() 52 | label.textColor = .orange 53 | label.center = scrollView.center 54 | scrollView.addSubview(label) 55 | } 56 | 57 | func addRefresh() { 58 | var config = YYRefresh.Config.default 59 | /// 不同状态显示文案,默认是top位置的 60 | config.textIdle = "下拉可以刷新" 61 | config.textReady = "松开立即刷新" 62 | config.textRefreshing = "正在刷新..." 63 | config.textNoMore = "没有更多数据了..." 64 | 65 | /// 刷新控件高度,自定义view的时候可以按需设置 66 | config.viewHeight = 50 67 | 68 | /// 触发刷新需要滚动的阈值 69 | config.readyOffset = 50 70 | 71 | /// right和bottom位置是否需要当contentSize不足一屏的时候自动隐藏 72 | config.visableCheckAutomatic = false 73 | 74 | /// 触发刷新阈值后,是否悬停等待 75 | config.parkVisible = true 76 | 77 | /// 悬停状态出现或消失的动画时间 78 | config.animateDurationParking = 0.25 79 | 80 | /// 不同状态切换时的动画时间 81 | config.animateDurationStateSwitching = 0.4 82 | 83 | scrollView.addYYRefresh(position: .top, 84 | config: config, 85 | refreshView: nil) { refresh in 86 | DispatchQueue.main.asyncAfter(deadline: .now() + 2) { 87 | refresh.endRefresh() 88 | } 89 | } 90 | 91 | scrollView.addYYRefresh(position: .bottom, config: config) { refresh in 92 | DispatchQueue.main.asyncAfter(deadline: .now() + 2) { 93 | refresh.endRefresh() 94 | } 95 | } 96 | 97 | scrollView.addYYRefresh(position: .right, config: config) { refresh in 98 | DispatchQueue.main.asyncAfter(deadline: .now() + 2) { 99 | refresh.endRefresh() 100 | } 101 | } 102 | 103 | scrollView.addYYRefresh(position: .left, config: config) { refresh in 104 | DispatchQueue.main.asyncAfter(deadline: .now() + 2) { 105 | refresh.endRefresh() 106 | } 107 | } 108 | } 109 | } 110 | 111 | class TopRefreshDemoView: UIView {} 112 | 113 | extension TopRefreshDemoView: YYRefreshView { 114 | var view: UIView { self } 115 | 116 | func show(_ state: YYRefresh.State, config: YYRefresh.Config, animated: Bool) { 117 | 118 | } 119 | } 120 | 121 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 cgcym1234 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 很久以前接到过一个需求,类似淘宝详情页,当商品左滑到尽头后需要做一些特定展示。 2 | 3 | 和下拉刷新基本一样,不过是左拉刷新。。 4 | 5 | 正好有时间,所以就想干脆写个上下左右拉刷新也挺好的,于是就参考MJRefresh,撸了个OC版的。 6 | 7 | 随着Swift的越来越好,后面也顺势完成了Swift版本,经过多次迭代,感觉趋于完善,并且Swifty😀 8 | 9 | - 支持上下左右四个方向,旋转 10 | 11 | - 可以配置触发刷新阈值,是否悬停等各种参数 12 | - 协议化的自定义view 13 | 14 | ## 要求 15 | 16 | - iOS 8.0+ 17 | - Swift 5.0+ 18 | 19 | ## 安装 20 | 21 | ``` 22 | pod 'YYRefreshView' 23 | ``` 24 | 25 | ## 使用 26 | 27 | ### 最简单的使用 28 | 29 | 使用默认配置,默认的刷新view: 30 | 31 | ``` 32 | scrollView.addYYRefresh(position: .top) { refresh in 33 | xxx 34 | } 35 | ``` 36 | 37 | ### 自定义配置 38 | 39 | 默认配置如下: 40 | 41 | ``` 42 | var config = YYRefresh.Config.default 43 | /// 不同状态显示文案,默认是top位置的 44 | config.textIdle = "下拉可以刷新" 45 | config.textReady = "松开立即刷新" 46 | config.textRefreshing = "正在刷新..." 47 | config.textNoMore = "没有更多数据了..." 48 | 49 | /// 刷新控件高度,自定义view的时候可以按需设置 50 | config.viewHeight = 50 51 | 52 | /// 触发刷新需要滚动的阈值 53 | config.readyOffset = 50 54 | 55 | /// right和bottom位置是否需要当contentSize不足一屏的时候自动隐藏 56 | config.visableCheckAutomatic = false 57 | 58 | /// 触发刷新阈值后,是否悬停等待 59 | config.parkVisible = true 60 | 61 | /// 悬停状态出现或消失的动画时间 62 | config.animateDurationParking = 0.25 63 | 64 | /// 不同状态切换时的动画时间 65 | config.animateDurationStateSwitching = 0.4 66 | 67 | /// 使用config 68 | scrollView.addYYRefresh(position: .top, config: config) { refresh in 69 | xxx 70 | } 71 | ``` 72 | 73 | ### 自定义显示的view 74 | 75 | 如果要使用自定义的view,只需要使用实现YYRefreshView协议的控件即可: 76 | 77 | ``` 78 | /// 自定义RefreshView必须实现的协议 79 | public protocol YYRefreshView: class { 80 | /// 真正的view 81 | var view: UIView { get } 82 | /// 不同状态时的显示 83 | func show(_ state: YYRefresh.State, config: YYRefresh.Config, animated: Bool) 84 | } 85 | ``` 86 | 87 | 定义一个自己的view: 88 | 89 | ``` 90 | class TopRefreshDemoView: UIView {} 91 | 92 | extension TopRefreshDemoView: YYRefreshView { 93 | var view: UIView { self } 94 | func show(_ state: YYRefresh.State, config: YYRefresh.Config, animated: Bool) { 95 | 96 | } 97 | } 98 | ``` 99 | 100 | 使用: 101 | 102 | ``` 103 | scrollView.addYYRefresh(position: .top, 104 | config: config, 105 | refreshView: TopRefreshDemoView()) { refresh in 106 | xxx 107 | } 108 | ``` 109 | 110 | ## 一些实现说明 111 | 112 | 上下方向的刷新控件很常见,主要参考了MJRefresh, 113 | 114 | 这里简单说下左右方向的实现方式: 115 | 116 | - 在左右方向加刷新控件时,采用的方式是,将refreshView顺时针旋转90度 117 | - 所以需要调整view的anchorPoint到{0, 0},调整同时要保持frame不变,用到了下面的扩展 118 | 119 | ``` 120 | private extension UIView { 121 | /// 设置view的anchorPoint,同时保证view的frame不改变 122 | func _setAnchorPointFixedFrame(_ anchorPoint: CGPoint) { 123 | let oldOrigin = frame.origin 124 | layer.anchorPoint = anchorPoint 125 | let newOrign = frame.origin 126 | let transition = CGPoint(x: newOrign.x - oldOrigin.x, y: newOrign.y - oldOrigin.y) 127 | center = CGPoint(x: center.x - transition.x, y: center.y - transition.y) 128 | } 129 | } 130 | ``` 131 | 132 | 133 | ## License 134 | 135 | YYRefresh is available under the MIT license. See the LICENSE file for more info. 136 | -------------------------------------------------------------------------------- /YYRefresh/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgcym1234/YYRefresh/153e07c49ef0fbeb350c840bf3b23e0ebc3627d8/YYRefresh/Assets/.gitkeep -------------------------------------------------------------------------------- /YYRefresh/Assets/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /YYRefresh/Assets/Assets.xcassets/yy_arrow_down.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "yy_arrow_down@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "yy_arrow_down@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /YYRefresh/Assets/Assets.xcassets/yy_arrow_down.imageset/yy_arrow_down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgcym1234/YYRefresh/153e07c49ef0fbeb350c840bf3b23e0ebc3627d8/YYRefresh/Assets/Assets.xcassets/yy_arrow_down.imageset/yy_arrow_down@2x.png -------------------------------------------------------------------------------- /YYRefresh/Assets/Assets.xcassets/yy_arrow_down.imageset/yy_arrow_down@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgcym1234/YYRefresh/153e07c49ef0fbeb350c840bf3b23e0ebc3627d8/YYRefresh/Assets/Assets.xcassets/yy_arrow_down.imageset/yy_arrow_down@3x.png -------------------------------------------------------------------------------- /YYRefresh/Assets/Assets.xcassets/yy_arrow_up.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "yy_arrow_up@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "yy_arrow_up@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /YYRefresh/Assets/Assets.xcassets/yy_arrow_up.imageset/yy_arrow_up@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgcym1234/YYRefresh/153e07c49ef0fbeb350c840bf3b23e0ebc3627d8/YYRefresh/Assets/Assets.xcassets/yy_arrow_up.imageset/yy_arrow_up@2x.png -------------------------------------------------------------------------------- /YYRefresh/Assets/Assets.xcassets/yy_arrow_up.imageset/yy_arrow_up@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgcym1234/YYRefresh/153e07c49ef0fbeb350c840bf3b23e0ebc3627d8/YYRefresh/Assets/Assets.xcassets/yy_arrow_up.imageset/yy_arrow_up@3x.png -------------------------------------------------------------------------------- /YYRefresh/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cgcym1234/YYRefresh/153e07c49ef0fbeb350c840bf3b23e0ebc3627d8/YYRefresh/Classes/.gitkeep -------------------------------------------------------------------------------- /YYRefresh/Classes/YYRefresh+DefaultView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // YYRefreshView.swift 3 | // Swift3Sum 4 | // 5 | // Created by sihuan on 2016/8/28. 6 | // Copyright © 2016年 huan. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension YYRefresh { 12 | public final class DefaultView: UIView { 13 | // MARK: - Const 14 | 15 | let imageViewMargin: CGFloat = 5 16 | let imageViewWidth = 16 17 | let imageDown = "yy_arrow_down" 18 | let imageUp = "yy_arrow_up" 19 | 20 | // MARK: - Property 21 | 22 | let position: YYRefresh.Position 23 | 24 | lazy var imageView: UIImageView = { 25 | var imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: self.imageViewWidth, height: self.imageViewWidth)) 26 | imageView.contentMode = .scaleAspectFit 27 | return imageView 28 | }() 29 | 30 | lazy var textLabel: UILabel = { 31 | var label = UILabel(frame: CGRect.zero) 32 | label.font = UIFont.boldSystemFont(ofSize: 14) 33 | label.textColor = UIColor(white: 0.4, alpha: 1.0) 34 | label.textAlignment = .center 35 | label.backgroundColor = UIColor.clear 36 | return label 37 | }() 38 | 39 | lazy var refreshingView: UIActivityIndicatorView = { 40 | var style = UIActivityIndicatorView.Style.gray 41 | if #available(iOS 13.0, *) { 42 | style = UIActivityIndicatorView.Style.medium 43 | } 44 | var refreshingView = UIActivityIndicatorView(style: style) 45 | refreshingView.hidesWhenStopped = true 46 | return refreshingView 47 | }() 48 | 49 | // MARK: - Initialization 50 | 51 | init(position: YYRefresh.Position) { 52 | self.position = position 53 | super.init(frame: CGRect.zero) 54 | setupUI() 55 | } 56 | 57 | public required init?(coder _: NSCoder) { 58 | fatalError("init(coder:) has not been implemented") 59 | } 60 | 61 | public override func layoutSubviews() { 62 | super.layoutSubviews() 63 | guard let superview = superview else { return } 64 | frame = CGRect(x: frame.origin.x, y: frame.origin.y, width: superview.bounds.width, height: frame.height) 65 | updateLocation() 66 | } 67 | 68 | private func setupUI() { 69 | addSubview(textLabel) 70 | addSubview(imageView) 71 | addSubview(refreshingView) 72 | 73 | var imageName = "" 74 | switch position { 75 | case .left, .bottom: 76 | imageName = imageUp 77 | default: 78 | imageName = imageDown 79 | } 80 | 81 | imageView.image = YYRefresh.imageFromBundle(named: imageName) 82 | } 83 | } 84 | } 85 | 86 | extension YYRefresh.DefaultView: YYRefreshView { 87 | /// 88 | public func show(_ state: YYRefresh.State, config: YYRefresh.Config, animated: Bool) { 89 | var action: (() -> Void)? 90 | let text: String 91 | switch state { 92 | case .idle: 93 | action = { 94 | self.imageView.transform = CGAffineTransform.identity 95 | } 96 | refreshingView.stopAnimating() 97 | imageView.isHidden = false 98 | text = config.textIdle 99 | case .ready: 100 | action = { 101 | self.imageView.transform = CGAffineTransform(rotationAngle: YYRefresh.degreesToRadians(180)) 102 | } 103 | text = config.textReady 104 | case .refreshing: 105 | action = { 106 | self.imageView.transform = CGAffineTransform.identity 107 | } 108 | refreshingView.startAnimating() 109 | imageView.isHidden = true 110 | text = config.textRefreshing 111 | case .noMore: 112 | imageView.isHidden = true 113 | text = config.textNoMore 114 | } 115 | 116 | setText(text) 117 | if let action = action { 118 | if animated { 119 | UIView.animate(withDuration: config.animateDurationStateSwitching, animations: action) 120 | } else { 121 | action() 122 | } 123 | } 124 | } 125 | } 126 | 127 | // MARK: - Private 128 | 129 | private extension YYRefresh.DefaultView { 130 | func updateLocation() { 131 | var center = CGPoint(x: bounds.midX, y: bounds.midY) 132 | textLabel.sizeToFit() 133 | textLabel.center = center 134 | 135 | if !textLabel.isHidden { 136 | center.x -= textLabel.bounds.midX + imageView.bounds.midX + imageViewMargin 137 | } 138 | 139 | imageView.center = center 140 | refreshingView.center = center 141 | } 142 | 143 | func setText(_ text: String?) { 144 | textLabel.text = text 145 | textLabel.isHidden = (text?.isEmpty) ?? true 146 | if textLabel.isHidden { 147 | imageView.isHidden = true 148 | } 149 | updateLocation() 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /YYRefresh/Classes/YYRefresh+Foundation.swift: -------------------------------------------------------------------------------- 1 | // 2 | // YYRefreshFoundation.swift 3 | // Swift3Sum 4 | // 5 | // Created by sihuan on 2016/8/28. 6 | // Copyright © 2016年 huan. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | // MARK: - Protocol 12 | 13 | /// 自定义RefreshView必须实现的协议 14 | public protocol YYRefreshView: class { 15 | var view: UIView { get } 16 | /// 不同状态时的显示 17 | func show(_ state: YYRefresh.State, config: YYRefresh.Config, animated: Bool) 18 | } 19 | 20 | /// 为协议扩展一个默认的实现来实现类似Objc里面的可选协议 21 | public extension YYRefreshView { 22 | func show(_: YYRefresh.State, config _: YYRefresh.Config, animated _: Bool) {} 23 | } 24 | 25 | public extension YYRefreshView where Self: UIView { 26 | var view: UIView { self } 27 | } 28 | 29 | // MARK: - Type 30 | 31 | public extension YYRefresh { 32 | /** 刷新控件的位置 */ 33 | enum Position { 34 | case top, left, bottom, right 35 | } 36 | 37 | /** 刷新控件的状态 */ 38 | enum State { 39 | case idle /** 普通闲置状态 */ 40 | case ready /** 松开就可以进行刷新的状态 */ 41 | case refreshing /** 正在刷新中的状态 */ 42 | case noMore /** 所有数据加载完毕,没有更多的数据了 */ 43 | } 44 | 45 | /** 刷新控件的配置 */ 46 | struct Config { 47 | public var textIdle = "" 48 | public var textReady = "" 49 | public var textRefreshing = "" 50 | public var textNoMore = "" 51 | 52 | public var viewHeight: CGFloat = 50.0 53 | public var readyOffset: CGFloat = 50.0 54 | public var visableCheckAutomatic = false 55 | public var parkVisible = true 56 | public var animateDurationParking = 0.25 57 | public var animateDurationStateSwitching = 0.4 58 | 59 | public init() {} 60 | 61 | public static let `default`: Config = { 62 | var config = Config() 63 | config.textIdle = "下拉可以刷新" 64 | config.textReady = "松开立即刷新" 65 | config.textRefreshing = "正在刷新..." 66 | config.textNoMore = "没有更多数据了..." 67 | return config 68 | }() 69 | } 70 | } 71 | 72 | // MARK: - Function 73 | 74 | extension YYRefresh { 75 | static func radiansToDegress(_ radians: Double) -> CGFloat { 76 | CGFloat((radians / .pi) * 180.0) 77 | } 78 | 79 | static func degreesToRadians(_ degrees: Double) -> CGFloat { 80 | CGFloat((degrees * .pi) / 180.0) 81 | } 82 | 83 | static func imageFromBundle(named: String) -> UIImage? { 84 | if let path = Bundle(for: self).resourcePath?.appending("/YYRefresh.bundle/") { 85 | return UIImage(named: named, in: Bundle(path: path), compatibleWith: nil) 86 | } 87 | 88 | return UIImage(named: named) 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /YYRefresh/Classes/YYRefresh+UIScrollView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // YYRefresh+UIScrollView.swift 3 | // SwiftProject 4 | // 5 | // Created by yangyuan on 2018/9/25. 6 | // Copyright © 2018 huan. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | public extension UIScrollView { 12 | @discardableResult 13 | func addYYRefresh(position: YYRefresh.Position, 14 | config: YYRefresh.Config? = nil, 15 | refreshView: YYRefreshView? = nil, 16 | action: ((YYRefresh) -> Void)?) -> YYRefresh { 17 | let refresh = YYRefresh(position: position, 18 | config: config, 19 | refreshView: refreshView, 20 | action: action) 21 | switch position { 22 | case .top: 23 | yy_topRefresh = refresh 24 | case .left: 25 | yy_leftRefresh = refresh 26 | case .bottom: 27 | yy_bottomRefresh = refresh 28 | case .right: 29 | yy_rightRefresh = refresh 30 | } 31 | addSubview(refresh) 32 | return refresh 33 | } 34 | 35 | var yy_topRefresh: YYRefresh? { 36 | get { 37 | objc_getAssociatedObject(self, &Keys.topRefreash) as? YYRefresh 38 | } 39 | set { 40 | objc_setAssociatedObject(self, &Keys.topRefreash, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 41 | } 42 | } 43 | 44 | var yy_leftRefresh: YYRefresh? { 45 | get { 46 | objc_getAssociatedObject(self, &Keys.leftRefreash) as? YYRefresh 47 | } 48 | set { 49 | objc_setAssociatedObject(self, &Keys.leftRefreash, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 50 | } 51 | } 52 | 53 | var yy_bottomRefresh: YYRefresh? { 54 | get { 55 | objc_getAssociatedObject(self, &Keys.bottomRefreash) as? YYRefresh 56 | } 57 | set { 58 | objc_setAssociatedObject(self, &Keys.bottomRefreash, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 59 | } 60 | } 61 | 62 | var yy_rightRefresh: YYRefresh? { 63 | get { 64 | objc_getAssociatedObject(self, &Keys.rightRefreash) as? YYRefresh 65 | } 66 | set { 67 | objc_setAssociatedObject(self, &Keys.rightRefreash, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 68 | } 69 | } 70 | 71 | private struct Keys { 72 | static var topRefreash: UInt8 = 0 73 | static var leftRefreash: UInt8 = 0 74 | static var bottomRefreash: UInt8 = 0 75 | static var rightRefreash: UInt8 = 0 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /YYRefresh/Classes/YYRefresh.swift: -------------------------------------------------------------------------------- 1 | // 2 | // YYRefresh.swift 3 | // Swift3Sum 4 | // 5 | // Created by sihuan on 2016/8/28. 6 | // Copyright © 2016年 huan. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | public final class YYRefresh: UIView { 12 | // MARK: - Const 13 | 14 | let keyPathContentOffset = "contentOffset" 15 | let keyPathContentInset = "contentInset" 16 | let keyPathContentSize = "contentSize" 17 | 18 | // MARK: - Public Property 19 | 20 | public let position: YYRefresh.Position 21 | public var config: YYRefresh.Config { 22 | didSet { 23 | refreshView.show(state, config: config, animated: false) 24 | } 25 | } 26 | 27 | public private(set) var state: YYRefresh.State = .idle { 28 | willSet { 29 | refreshView.show(newValue, config: config, animated: true) 30 | } 31 | } 32 | 33 | // MARK: - Private Property 34 | 35 | private var scrollViewOriginalInset = UIEdgeInsets.zero 36 | private weak var scrollView: UIScrollView! { 37 | didSet { 38 | scrollViewOriginalInset = scrollView.contentInset 39 | 40 | switch position { 41 | case .top, .bottom: 42 | scrollView.alwaysBounceVertical = true 43 | case .left, .right: 44 | scrollView.alwaysBounceHorizontal = true 45 | } 46 | } 47 | } 48 | 49 | private let refreshView: YYRefreshView! 50 | private var refreshingCallback: ((YYRefresh) -> Void)? 51 | private var observers: [AnyObject] = [] 52 | 53 | // MARK: - Initialization 54 | 55 | public init(position: YYRefresh.Position, 56 | config: YYRefresh.Config? = nil, 57 | refreshView: YYRefreshView? = nil, 58 | action: ((YYRefresh) -> Void)?) { 59 | self.position = position 60 | self.config = config ?? YYRefresh.Config() 61 | refreshingCallback = action 62 | self.refreshView = refreshView ?? YYRefresh.DefaultView(position: position) 63 | super.init(frame: CGRect.zero) 64 | setupContext() 65 | } 66 | 67 | public required init?(coder _: NSCoder) { 68 | fatalError("init(coder:) has not been implemented") 69 | } 70 | 71 | deinit { 72 | removeObservers() 73 | } 74 | 75 | private func setupContext() { 76 | addSubview(refreshView.view) 77 | backgroundColor = .clear 78 | state = .idle 79 | 80 | observers.append( 81 | NotificationCenter.default.addObserver( 82 | forName: UIDevice.orientationDidChangeNotification, 83 | object: nil, 84 | queue: .main 85 | ) { [weak self] _ in 86 | self?.setNeedsLayout() 87 | } 88 | ) 89 | } 90 | } 91 | 92 | // MARK: - Public Method 93 | 94 | public extension YYRefresh { 95 | func setToIdleState() { 96 | state = .idle 97 | } 98 | 99 | func setToNoMoreState() { 100 | state = .noMore 101 | } 102 | 103 | func beginRefresh(notify: Bool = true) { 104 | if state == .refreshing { 105 | return 106 | } 107 | state = .refreshing 108 | 109 | /// 显示悬停刷新状态 110 | if config.parkVisible { 111 | DispatchQueue.main.async { 112 | UIView.animate(withDuration: self.config.animateDurationParking, animations: { 113 | self.parkVisible(true) 114 | }, completion: { _ in 115 | if notify { 116 | self.refreshingCallback?(self) 117 | } 118 | }) 119 | } 120 | } else { 121 | if notify { 122 | refreshingCallback?(self) 123 | } 124 | } 125 | } 126 | 127 | func endRefresh() { 128 | if state != .refreshing { 129 | return 130 | } 131 | state = .idle 132 | if config.parkVisible { 133 | DispatchQueue.main.async { 134 | UIView.animate(withDuration: self.config.animateDurationParking, animations: { 135 | self.parkVisible(false) 136 | }) { _ in 137 | self.visableCheckAutomatic() 138 | } 139 | } 140 | } 141 | } 142 | 143 | func visableCheck() { 144 | if position == .bottom { 145 | isHidden = scrollView.contentSize.height < scrollView.bounds.height 146 | } else if position == .right { 147 | isHidden = scrollView.contentSize.width < scrollView.bounds.width 148 | } 149 | } 150 | 151 | func noMoreStateCheck() { 152 | if position == .bottom { 153 | state = scrollView.contentSize.height < scrollView.bounds.height ? .noMore : .idle 154 | } else if position == .right { 155 | state = scrollView.contentSize.width < scrollView.bounds.width ? .noMore : .idle 156 | } 157 | } 158 | } 159 | 160 | // MARK: - Override 161 | 162 | extension YYRefresh { 163 | public override func willMove(toSuperview newSuperview: UIView?) { 164 | super.willMove(toSuperview: newSuperview) 165 | removeObservers() 166 | guard let newSuperview = newSuperview as? UIScrollView else { 167 | return 168 | } 169 | 170 | scrollView = newSuperview 171 | addObservers() 172 | } 173 | 174 | public override func layoutSubviews() { 175 | super.layoutSubviews() 176 | guard let superview = superview, 177 | superview.bounds.width != bounds.width else { return } 178 | layoutViews() 179 | } 180 | } 181 | 182 | // MARK: - KVO 183 | 184 | extension YYRefresh { 185 | private func addObservers() { 186 | let options: NSKeyValueObservingOptions = [.old, .new] 187 | scrollView.addObserver(self, forKeyPath: keyPathContentOffset, options: options, context: nil) 188 | scrollView.addObserver(self, forKeyPath: keyPathContentSize, options: options, context: nil) 189 | } 190 | 191 | private func removeObservers() { 192 | superview?.removeObserver(self, forKeyPath: keyPathContentOffset) 193 | superview?.removeObserver(self, forKeyPath: keyPathContentSize) 194 | } 195 | 196 | public override func observeValue(forKeyPath keyPath: String?, of _: Any?, change: [NSKeyValueChangeKey: Any]?, context _: UnsafeMutableRawPointer?) { 197 | guard let keyPath = keyPath else { 198 | return 199 | } 200 | 201 | // 这个就算看不见也需要处理 202 | if keyPath == keyPathContentSize { 203 | updatePosition(change: change!) 204 | return 205 | } 206 | 207 | // 看不见 208 | if isHidden { return } 209 | if keyPath == keyPathContentOffset { 210 | scrollViewDidScroll(scrollView) 211 | } 212 | } 213 | 214 | private func updatePosition(change: [NSKeyValueChangeKey: Any]) { 215 | guard let oldContentSize = change[.oldKey] as? CGSize, 216 | var newContentSize = change[.newKey] as? CGSize else { 217 | return 218 | } 219 | var center = self.center 220 | 221 | if position == .bottom { 222 | newContentSize.height = scrollView.contentSize.height 223 | center.y += newContentSize.height - oldContentSize.height 224 | } else if position == .right { 225 | /// 这里做了点限制,防止refreshView 因为newContentSize太小,而显示到可见区域 226 | newContentSize.width = max(scrollView.contentSize.width, scrollView.bounds.width) 227 | center.y += newContentSize.width - oldContentSize.width 228 | } 229 | self.center = center 230 | visableCheckAutomatic() 231 | } 232 | 233 | private func scrollViewDidScroll(_ scrollView: UIScrollView) { 234 | // 正在刷新的refreshing状态 235 | if state == .refreshing || state == .noMore { 236 | return 237 | } 238 | 239 | if scrollView.isDragging { 240 | if state == .idle, isScrolledOverReadyOffset { 241 | state = .ready // 转为即将刷新状态 242 | } else if state == .ready, !isScrolledOverReadyOffset { 243 | state = .idle // 转为普通状态 244 | } 245 | } else { 246 | // 即将刷新 && 手松开 247 | if state == .ready { 248 | beginRefresh() // 开始刷新 249 | } 250 | } 251 | } 252 | 253 | private var isScrolledOverReadyOffset: Bool { 254 | let readyOffset = config.readyOffset 255 | var overReadyOffset = false 256 | switch position { 257 | case .top: 258 | overReadyOffset = scrollView.contentOffset.y <= -readyOffset 259 | case .left: 260 | overReadyOffset = scrollView.contentOffset.x <= -readyOffset 261 | case .bottom: 262 | if scrollView.contentSize.height > scrollView.frame.height { 263 | overReadyOffset = scrollView.contentOffset.y >= scrollView.contentSize.height - scrollView.frame.height + readyOffset 264 | } else { 265 | overReadyOffset = scrollView.contentOffset.y >= readyOffset 266 | } 267 | 268 | case .right: 269 | overReadyOffset = scrollView.contentOffset.x >= scrollView.contentSize.width - scrollView.frame.width + readyOffset 270 | } 271 | return overReadyOffset 272 | } 273 | } 274 | 275 | // MARK: - Private 276 | 277 | private extension YYRefresh { 278 | func visableCheckAutomatic() { 279 | guard config.visableCheckAutomatic else { 280 | return 281 | } 282 | 283 | visableCheck() 284 | } 285 | 286 | func layoutViews() { 287 | var x = CGFloat(0) 288 | var y = CGFloat(0) 289 | let viewWidth = scrollView.bounds.width 290 | let viewHeight = config.viewHeight 291 | switch position { 292 | case .top: 293 | y -= viewHeight 294 | case .bottom: 295 | y = scrollView.contentSize.height 296 | case .left: 297 | /// 在左右方向加刷新控件时,采用的方式是,将refreshView顺时针旋转90度, 298 | /// 旋转选择的是左上角那个点,所以这里x的要额外加refreshView的高度 299 | x = -viewHeight + viewHeight 300 | y = (scrollView.bounds.height - viewWidth) / 2 301 | case .right: 302 | x = max(scrollView.contentSize.width, scrollView.bounds.width) + viewHeight 303 | y = (scrollView.bounds.height - viewWidth) / 2 304 | } 305 | transform = .identity 306 | _setAnchorPointFixedFrame(.init(x: 0.5, y: 0.5)) 307 | frame = CGRect(x: x, y: y, width: viewWidth, height: viewHeight) 308 | refreshView.view.frame = bounds 309 | 310 | if position == .left || position == .right { 311 | _setAnchorPointFixedFrame(.zero) 312 | transform = CGAffineTransform.identity.rotated(by: YYRefresh.degreesToRadians(90)) 313 | } 314 | visableCheckAutomatic() 315 | } 316 | 317 | /// 增加或减少滚动区域 318 | func parkVisible(_ visible: Bool) { 319 | guard let scrollView = scrollView else { return } 320 | // 同时只能显示一个 parking 状态 321 | var contentInset = scrollViewOriginalInset 322 | var contentOffset = scrollView.contentOffset 323 | // 增加滚动区域 324 | let offset = visible ? config.viewHeight : 0 325 | switch position { 326 | case .top: 327 | contentInset.top += offset 328 | contentOffset.y = visible ? -config.readyOffset : 0 329 | case .left: 330 | contentInset.left += offset 331 | contentOffset.x = visible ? -config.readyOffset : 0 332 | case .bottom: 333 | contentInset.bottom += offset 334 | // contentOffset.y += offset 335 | case .right: 336 | contentInset.right += offset 337 | // contentOffset.x += offset 338 | } 339 | // 设置滚动位置 340 | scrollView.contentOffset = contentOffset 341 | 342 | // 增加滚动区域 343 | scrollView.contentInset = contentInset 344 | } 345 | } 346 | 347 | /// 348 | private extension UIView { 349 | /// 设置view的anchorPoint,同时保证view的frame不改变 350 | func _setAnchorPointFixedFrame(_ anchorPoint: CGPoint) { 351 | let oldOrigin = frame.origin 352 | layer.anchorPoint = anchorPoint 353 | let newOrign = frame.origin 354 | let transition = CGPoint(x: newOrign.x - oldOrigin.x, y: newOrign.y - oldOrigin.y) 355 | center = CGPoint(x: center.x - transition.x, y: center.y - transition.y) 356 | } 357 | } 358 | -------------------------------------------------------------------------------- /YYRefreshView.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint YYRefresh.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = 'YYRefreshView' 11 | s.version = '1.0.0' 12 | s.summary = 'Four directions refresh' 13 | 14 | # This description is used to generate tags and improve search results. 15 | # * Think: What does it do? Why did you write it? What is the focus? 16 | # * Try to keep it short, snappy and to the point. 17 | # * Write the description between the DESC delimiters below. 18 | # * Finally, don't worry about the indent, CocoaPods strips it! 19 | 20 | s.description = <<-DESC 21 | Refresh control support four directions 22 | DESC 23 | 24 | s.homepage = 'https://github.com/cgcym1234/YYRefresh' 25 | # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' 26 | s.license = { :type => 'MIT', :file => 'LICENSE' } 27 | s.author = { 'cgcym1234' => 'cgcym1234@163.com' } 28 | s.source = { :git => 'https://github.com/cgcym1234/YYRefresh.git', :tag => s.version.to_s } 29 | # s.social_media_url = 'https://twitter.com/' 30 | 31 | s.ios.deployment_target = '8.0' 32 | s.swift_version = '5.0' 33 | 34 | s.source_files = 'YYRefresh/Classes/**/*' 35 | 36 | s.resource_bundles = { 37 | 'YYRefresh' => ['YYRefresh/Assets/*.xcassets'] 38 | } 39 | 40 | # s.public_header_files = 'Pod/Classes/**/*.h' 41 | # s.frameworks = 'UIKit', 'MapKit' 42 | # s.dependency 'AFNetworking', '~> 2.3' 43 | end 44 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj --------------------------------------------------------------------------------