From 6ba1339c0b2c1be73f7e2c6ff789599dca9b5d1d Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Thu, 6 Nov 2025 19:19:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Podfile | 2 + Podfile.lock | 10 +- Pods/JXCategoryView/LICENSE | 21 + Pods/JXCategoryView/README.md | 296 + .../Sources/Base/JXCategoryBaseCell.h | 29 + .../Sources/Base/JXCategoryBaseCell.m | 98 + .../Sources/Base/JXCategoryBaseCellModel.h | 31 + .../Sources/Base/JXCategoryBaseCellModel.m | 13 + .../Sources/Base/JXCategoryBaseView.h | 222 + .../Sources/Base/JXCategoryBaseView.m | 697 ++ .../Sources/Common/JXCategoryCollectionView.h | 24 + .../Sources/Common/JXCategoryCollectionView.m | 52 + .../Sources/Common/JXCategoryFactory.h | 18 + .../Sources/Common/JXCategoryFactory.m | 29 + .../Common/JXCategoryIndicatorParamsModel.h | 31 + .../Common/JXCategoryIndicatorParamsModel.m | 13 + .../Common/JXCategoryIndicatorProtocol.h | 49 + .../Common/JXCategoryListContainerRTLCell.h | 16 + .../Common/JXCategoryListContainerRTLCell.m | 23 + .../Common/JXCategoryListContainerView.h | 122 + .../Common/JXCategoryListContainerView.m | 547 ++ .../Sources/Common/JXCategoryViewAnimator.h | 24 + .../Sources/Common/JXCategoryViewAnimator.m | 75 + .../Sources/Common/JXCategoryViewDefines.h | 43 + .../Sources/Common/UIColor+JXAdd.h | 18 + .../Sources/Common/UIColor+JXAdd.m | 35 + .../Sources/Dot/JXCategoryDotCell.h | 13 + .../Sources/Dot/JXCategoryDotCell.m | 64 + .../Sources/Dot/JXCategoryDotCellModel.h | 27 + .../Sources/Dot/JXCategoryDotCellModel.m | 13 + .../Sources/Dot/JXCategoryDotView.h | 30 + .../Sources/Dot/JXCategoryDotView.m | 52 + .../Sources/Image/JXCategoryImageCell.h | 15 + .../Sources/Image/JXCategoryImageCell.m | 97 + .../Sources/Image/JXCategoryImageCellModel.h | 32 + .../Sources/Image/JXCategoryImageCellModel.m | 13 + .../Sources/Image/JXCategoryImageView.h | 32 + .../Sources/Image/JXCategoryImageView.m | 104 + .../JXCategoryIndicatorBackgroundView.h | 14 + .../JXCategoryIndicatorBackgroundView.m | 101 + .../JXCategoryIndicatorBallView.h | 17 + .../JXCategoryIndicatorBallView.m | 199 + .../JXCategoryIndicatorComponentView.h | 113 + .../JXCategoryIndicatorComponentView.m | 81 + .../JXCategoryIndicatorDotLineView.h | 17 + .../JXCategoryIndicatorDotLineView.m | 148 + .../JXCategoryIndicatorImageView.h | 20 + .../JXCategoryIndicatorImageView.m | 117 + .../JXCategoryIndicatorLineView.h | 28 + .../JXCategoryIndicatorLineView.m | 202 + .../JXCategoryIndicatorRainbowLineView.h | 30 + .../JXCategoryIndicatorRainbowLineView.m | 38 + .../JXCategoryIndicatorTriangleView.h | 14 + .../JXCategoryIndicatorTriangleView.m | 109 + .../Indicator/JXCategoryIndicatorCell.h | 13 + .../Indicator/JXCategoryIndicatorCell.m | 52 + .../Indicator/JXCategoryIndicatorCellModel.h | 24 + .../Indicator/JXCategoryIndicatorCellModel.m | 13 + .../Indicator/JXCategoryIndicatorView.h | 48 + .../Indicator/JXCategoryIndicatorView.m | 209 + Pods/JXCategoryView/Sources/JXCategoryView.h | 23 + .../Sources/Number/JXCategoryNumberCell.h | 13 + .../Sources/Number/JXCategoryNumberCell.m | 62 + .../Number/JXCategoryNumberCellModel.h | 25 + .../Number/JXCategoryNumberCellModel.m | 37 + .../Sources/Number/JXCategoryNumberView.h | 60 + .../Sources/Number/JXCategoryNumberView.m | 61 + .../Sources/PrivacyInfo.xcprivacy | 14 + .../Sources/RLTManager/RTLManager.h | 20 + .../Sources/RLTManager/RTLManager.m | 26 + .../Sources/Title/JXCategoryTitleCell.h | 27 + .../Sources/Title/JXCategoryTitleCell.m | 240 + .../Sources/Title/JXCategoryTitleCellModel.h | 44 + .../Sources/Title/JXCategoryTitleCellModel.m | 31 + .../Sources/Title/JXCategoryTitleView.h | 63 + .../Sources/Title/JXCategoryTitleView.m | 164 + .../TitleImage/JXCategoryTitleImageCell.h | 15 + .../TitleImage/JXCategoryTitleImageCell.m | 148 + .../JXCategoryTitleImageCellModel.h | 43 + .../JXCategoryTitleImageCellModel.m | 13 + .../TitleImage/JXCategoryTitleImageView.h | 42 + .../TitleImage/JXCategoryTitleImageView.m | 126 + .../JXCategoryTitleVerticalZoomCell.h | 17 + .../JXCategoryTitleVerticalZoomCell.m | 45 + .../JXCategoryTitleVerticalZoomCellModel.h | 19 + .../JXCategoryTitleVerticalZoomCellModel.m | 13 + .../JXCategoryTitleVerticalZoomView.h | 34 + .../JXCategoryTitleVerticalZoomView.m | 94 + Pods/JXPagingView/LICENSE | 21 + Pods/JXPagingView/README.md | 294 + .../JXPagerView/JXPagerListContainerView.h | 128 + .../JXPagerView/JXPagerListContainerView.m | 597 ++ .../JXPagerView/JXPagerListRefreshView.h | 14 + .../JXPagerView/JXPagerListRefreshView.m | 109 + .../JXPagerView/JXPagerMainTableView.h | 19 + .../JXPagerView/JXPagerMainTableView.m | 25 + .../Sources/JXPagerView/JXPagerSmoothView.h | 91 + .../Sources/JXPagerView/JXPagerSmoothView.m | 361 + .../Sources/JXPagerView/JXPagerView.h | 131 + .../Sources/JXPagerView/JXPagerView.m | 409 ++ .../Sources/PrivacyInfo.xcprivacy | 14 + Pods/Manifest.lock | 10 +- Pods/Pods.xcodeproj/project.pbxproj | 6376 ++++++++++------- .../JXCategoryView-JXCategoryView.xcscheme | 58 + .../xcschemes/JXCategoryView.xcscheme | 58 + .../JXPagingView-JXPagerView.xcscheme | 58 + .../xcschemes/JXPagingView.xcscheme | 58 + .../JXCategoryView/JXCategoryView-Info.plist | 26 + .../JXCategoryView/JXCategoryView-dummy.m | 5 + .../JXCategoryView/JXCategoryView-prefix.pch | 12 + .../JXCategoryView/JXCategoryView-umbrella.h | 59 + .../JXCategoryView.debug.xcconfig | 12 + .../JXCategoryView/JXCategoryView.modulemap | 6 + .../JXCategoryView.release.xcconfig | 12 + ...e-JXCategoryView-JXCategoryView-Info.plist | 24 + .../JXPagingView/JXPagingView-Info.plist | 26 + .../JXPagingView/JXPagingView-dummy.m | 5 + .../JXPagingView/JXPagingView-prefix.pch | 12 + .../JXPagingView/JXPagingView-umbrella.h | 21 + .../JXPagingView/JXPagingView.debug.xcconfig | 12 + .../JXPagingView/JXPagingView.modulemap | 6 + .../JXPagingView.release.xcconfig | 12 + ...Bundle-JXPagerView-JXPagingView-Info.plist | 24 + .../Pods-keyBoard-acknowledgements.markdown | 50 + .../Pods-keyBoard-acknowledgements.plist | 62 + ...rd-frameworks-Debug-input-files.xcfilelist | 2 + ...d-frameworks-Debug-output-files.xcfilelist | 2 + ...-frameworks-Release-input-files.xcfilelist | 2 + ...frameworks-Release-output-files.xcfilelist | 2 + .../Pods-keyBoard/Pods-keyBoard-frameworks.sh | 4 + .../Pods-keyBoard.debug.xcconfig | 8 +- .../Pods-keyBoard.release.xcconfig | 8 +- keyBoard.xcodeproj/project.pbxproj | 208 + keyBoard/Assets.xcassets/Tabbar/Contents.json | 6 + .../Tabbar/tab_home.imageset/Contents.json | 22 + .../Tabbar/tab_home.imageset/tab_home@2x.png | Bin 0 -> 1624 bytes .../Tabbar/tab_home.imageset/tab_home@3x.png | Bin 0 -> 2898 bytes .../tab_home_selected.imageset/Contents.json | 22 + .../tab_home_selected@2x.png | Bin 0 -> 2371 bytes .../tab_home_selected@3x.png | Bin 0 -> 4436 bytes .../Tabbar/tab_my.imageset/Contents.json | 22 + .../Tabbar/tab_my.imageset/tab_my@2x.png | Bin 0 -> 2838 bytes .../Tabbar/tab_my.imageset/tab_my@3x.png | Bin 0 -> 5373 bytes .../tab_my_selected.imageset/Contents.json | 22 + .../tab_my_selected@2x.png | Bin 0 -> 3899 bytes .../tab_my_selected@3x.png | Bin 0 -> 7363 bytes .../Tabbar/tab_shequ.imageset/Contents.json | 22 + .../tab_shequ.imageset/tab_shequ@2x.png | Bin 0 -> 3080 bytes .../tab_shequ.imageset/tab_shequ@3x.png | Bin 0 -> 5847 bytes .../tab_shequ_selected.imageset/Contents.json | 22 + .../tab_shequ_selected@2x.png | Bin 0 -> 3800 bytes .../tab_shequ_selected@3x.png | Bin 0 -> 7077 bytes .../Tabbar/tab_shop.imageset/Contents.json | 22 + .../Tabbar/tab_shop.imageset/tab_shop@2x.png | Bin 0 -> 1652 bytes .../Tabbar/tab_shop.imageset/tab_shop@3x.png | Bin 0 -> 3157 bytes .../tab_shop_selected.imageset/Contents.json | 22 + .../tab_shop_selected@2x.png | Bin 0 -> 2239 bytes .../tab_shop_selected@3x.png | Bin 0 -> 4299 bytes keyBoard/Class/Base/VC/BaseTabBarController.m | 3 + keyBoard/Class/Community/VC/KBCommunityVC.h | 16 + keyBoard/Class/Community/VC/KBCommunityVC.m | 31 + keyBoard/Class/Home/V/KBPanModalView.m | 22 +- keyBoard/Class/Home/VC/HomeRankContentVC.h | 18 + keyBoard/Class/Home/VC/HomeRankContentVC.m | 96 + keyBoard/Class/Home/VC/HomeRankVC.h | 8 +- keyBoard/Class/Home/VC/HomeRankVC.m | 129 +- keyBoard/Class/Home/VC/HomeVC.m | 8 +- .../Class/Resource/Images/Indicator/boat.png | Bin 0 -> 21478 bytes .../Class/Resource/Images/Indicator/city.png | Bin 0 -> 38236 bytes .../Class/Resource/Images/Indicator/light.png | Bin 0 -> 44813 bytes .../Class/Resource/Images/Indicator/lotus.png | Bin 0 -> 178089 bytes .../Class/Resource/Images/Indicator/river.png | Bin 0 -> 19245 bytes .../Resource/Images/Indicator/seaWave.png | Bin 0 -> 62773 bytes .../Class/Resource/Images/JXCategoryView.png | Bin 0 -> 2968 bytes .../Images/JXCategoryViewStructure.png | Bin 0 -> 13546 bytes keyBoard/Class/Resource/Images/apple.png | Bin 0 -> 2032 bytes .../Class/Resource/Images/apple_selected.png | Bin 0 -> 1488 bytes keyBoard/Class/Resource/Images/arrow_down.png | Bin 0 -> 155 bytes keyBoard/Class/Resource/Images/arrow_up.png | Bin 0 -> 156 bytes keyBoard/Class/Resource/Images/carrot.png | Bin 0 -> 1953 bytes .../Class/Resource/Images/carrot_selected.png | Bin 0 -> 1305 bytes keyBoard/Class/Resource/Images/crab.png | Bin 0 -> 3581 bytes .../Class/Resource/Images/crab_selected.png | Bin 0 -> 2195 bytes keyBoard/Class/Resource/Images/filter.png | Bin 0 -> 228 bytes keyBoard/Class/Resource/Images/football.png | Bin 0 -> 65011 bytes keyBoard/Class/Resource/Images/grape.png | Bin 0 -> 3350 bytes .../Class/Resource/Images/grape_selected.png | Bin 0 -> 1915 bytes keyBoard/Class/Resource/Images/lobster.png | Bin 0 -> 4499 bytes .../Resource/Images/lobster_selected.png | Bin 0 -> 2856 bytes keyBoard/Class/Resource/Images/lufei.jpg | Bin 0 -> 72830 bytes keyBoard/Class/Resource/Images/watermelon.png | Bin 0 -> 3531 bytes .../Resource/Images/watermelon_selected.png | Bin 0 -> 1953 bytes keyBoard/Class/Shop/VC/KBShopVC.h | 16 + keyBoard/Class/Shop/VC/KBShopVC.m | 31 + keyBoard/KeyBoardPrefixHeader.pch | 3 + 195 files changed, 13443 insertions(+), 2729 deletions(-) create mode 100644 Pods/JXCategoryView/LICENSE create mode 100644 Pods/JXCategoryView/README.md create mode 100644 Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.h create mode 100644 Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.m create mode 100644 Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.h create mode 100644 Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.m create mode 100644 Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.h create mode 100644 Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryFactory.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryFactory.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorProtocol.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryViewDefines.h create mode 100644 Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.h create mode 100644 Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.m create mode 100644 Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.h create mode 100644 Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.m create mode 100644 Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.h create mode 100644 Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.m create mode 100644 Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.h create mode 100644 Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.m create mode 100644 Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.h create mode 100644 Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.m create mode 100644 Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.h create mode 100644 Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.m create mode 100644 Pods/JXCategoryView/Sources/Image/JXCategoryImageView.h create mode 100644 Pods/JXCategoryView/Sources/Image/JXCategoryImageView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.m create mode 100644 Pods/JXCategoryView/Sources/JXCategoryView.h create mode 100644 Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.h create mode 100644 Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.m create mode 100644 Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.h create mode 100644 Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.m create mode 100644 Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.h create mode 100644 Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.m create mode 100644 Pods/JXCategoryView/Sources/PrivacyInfo.xcprivacy create mode 100644 Pods/JXCategoryView/Sources/RLTManager/RTLManager.h create mode 100644 Pods/JXCategoryView/Sources/RLTManager/RTLManager.m create mode 100644 Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.h create mode 100644 Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.m create mode 100644 Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.h create mode 100644 Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.m create mode 100644 Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.h create mode 100644 Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.m create mode 100644 Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.h create mode 100644 Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.m create mode 100644 Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.h create mode 100644 Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.m create mode 100644 Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.h create mode 100644 Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.m create mode 100644 Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.h create mode 100644 Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.m create mode 100644 Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.h create mode 100644 Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.m create mode 100644 Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.h create mode 100644 Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.m create mode 100644 Pods/JXPagingView/LICENSE create mode 100644 Pods/JXPagingView/README.md create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.h create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.m create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.h create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.m create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.h create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.m create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.h create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.m create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerView.h create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerView.m create mode 100644 Pods/JXPagingView/Sources/PrivacyInfo.xcprivacy create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView-JXCategoryView.xcscheme create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView.xcscheme create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView-JXPagerView.xcscheme create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView.xcscheme create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView-Info.plist create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView-dummy.m create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView-prefix.pch create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView-umbrella.h create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView.debug.xcconfig create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView.modulemap create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView.release.xcconfig create mode 100644 Pods/Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView-Info.plist create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView-dummy.m create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView-prefix.pch create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView-umbrella.h create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView.debug.xcconfig create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView.modulemap create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView.release.xcconfig create mode 100644 Pods/Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist create mode 100644 keyBoard/Assets.xcassets/Tabbar/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/tab_home@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/tab_home@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/tab_home_selected@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/tab_home_selected@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/tab_my@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/tab_my@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/tab_my_selected@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/tab_my_selected@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/tab_shequ@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/tab_shequ@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/tab_shequ_selected@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/tab_shequ_selected@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/tab_shop@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/tab_shop@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/tab_shop_selected@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/tab_shop_selected@3x.png create mode 100644 keyBoard/Class/Community/VC/KBCommunityVC.h create mode 100644 keyBoard/Class/Community/VC/KBCommunityVC.m create mode 100644 keyBoard/Class/Home/VC/HomeRankContentVC.h create mode 100644 keyBoard/Class/Home/VC/HomeRankContentVC.m create mode 100644 keyBoard/Class/Resource/Images/Indicator/boat.png create mode 100644 keyBoard/Class/Resource/Images/Indicator/city.png create mode 100644 keyBoard/Class/Resource/Images/Indicator/light.png create mode 100644 keyBoard/Class/Resource/Images/Indicator/lotus.png create mode 100644 keyBoard/Class/Resource/Images/Indicator/river.png create mode 100644 keyBoard/Class/Resource/Images/Indicator/seaWave.png create mode 100644 keyBoard/Class/Resource/Images/JXCategoryView.png create mode 100644 keyBoard/Class/Resource/Images/JXCategoryViewStructure.png create mode 100644 keyBoard/Class/Resource/Images/apple.png create mode 100644 keyBoard/Class/Resource/Images/apple_selected.png create mode 100644 keyBoard/Class/Resource/Images/arrow_down.png create mode 100644 keyBoard/Class/Resource/Images/arrow_up.png create mode 100644 keyBoard/Class/Resource/Images/carrot.png create mode 100644 keyBoard/Class/Resource/Images/carrot_selected.png create mode 100644 keyBoard/Class/Resource/Images/crab.png create mode 100644 keyBoard/Class/Resource/Images/crab_selected.png create mode 100644 keyBoard/Class/Resource/Images/filter.png create mode 100644 keyBoard/Class/Resource/Images/football.png create mode 100644 keyBoard/Class/Resource/Images/grape.png create mode 100644 keyBoard/Class/Resource/Images/grape_selected.png create mode 100644 keyBoard/Class/Resource/Images/lobster.png create mode 100644 keyBoard/Class/Resource/Images/lobster_selected.png create mode 100644 keyBoard/Class/Resource/Images/lufei.jpg create mode 100644 keyBoard/Class/Resource/Images/watermelon.png create mode 100644 keyBoard/Class/Resource/Images/watermelon_selected.png create mode 100644 keyBoard/Class/Shop/VC/KBShopVC.h create mode 100644 keyBoard/Class/Shop/VC/KBShopVC.m diff --git a/Podfile b/Podfile index 4795336..b4c0cbf 100644 --- a/Podfile +++ b/Podfile @@ -10,6 +10,8 @@ target 'keyBoard' do pod 'Bugly', :configurations => ['Release'] pod 'DZNEmptyDataSet', '1.8.1' pod 'FLAnimatedImage', '~> 1.0.17' + pod 'JXPagingView/Pager', '~> 2.1.3' + pod 'JXCategoryView', '~> 1.6.8' pod 'HWPanModal', '~> 0.9.9' pod 'LSTPopView', '~> 0.3.10' pod 'LookinServer', :configurations => ['Debug'] diff --git a/Podfile.lock b/Podfile.lock index a8812f6..9ed0f51 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -18,6 +18,8 @@ PODS: - DZNEmptyDataSet (1.8.1) - FLAnimatedImage (1.0.17) - HWPanModal (0.9.9) + - JXCategoryView (1.6.8) + - JXPagingView/Pager (2.1.3) - LookinServer (1.2.8): - LookinServer/Core (= 1.2.8) - LookinServer/Core (1.2.8) @@ -41,6 +43,8 @@ DEPENDENCIES: - DZNEmptyDataSet (= 1.8.1) - FLAnimatedImage (~> 1.0.17) - HWPanModal (~> 0.9.9) + - JXCategoryView + - JXPagingView/Pager (~> 2.1.3) - LookinServer - LSTPopView (~> 0.3.10) - Masonry (= 1.1.0) @@ -56,6 +60,8 @@ SPEC REPOS: - DZNEmptyDataSet - FLAnimatedImage - HWPanModal + - JXCategoryView + - JXPagingView - LookinServer - LSTPopView - LSTTimer @@ -71,6 +77,8 @@ SPEC CHECKSUMS: DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2 + JXCategoryView: 262d503acea0b1278c79a1c25b7332ffaef4d518 + JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e LookinServer: 1b2b61c6402ae29fa22182d48f5cd067b4e99e80 LSTPopView: 9379f00f6ce7d1fc620b50ab00ed3ef97b2d4d52 LSTTimer: caf8f02ff366ca175cf4c1778d26c166183c1b6f @@ -80,6 +88,6 @@ SPEC CHECKSUMS: MJRefresh: ff9e531227924c84ce459338414550a05d2aea78 SDWebImage: f29024626962457f3470184232766516dee8dfea -PODFILE CHECKSUM: c50284c86c4e30cee59c186e48767667019dcb61 +PODFILE CHECKSUM: ce689000a7b9b24f5d74cc50a93350665c3af035 COCOAPODS: 1.16.2 diff --git a/Pods/JXCategoryView/LICENSE b/Pods/JXCategoryView/LICENSE new file mode 100644 index 0000000..0fdb1e7 --- /dev/null +++ b/Pods/JXCategoryView/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 暴走的鑫鑫 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Pods/JXCategoryView/README.md b/Pods/JXCategoryView/README.md new file mode 100644 index 0000000..2fae2c3 --- /dev/null +++ b/Pods/JXCategoryView/README.md @@ -0,0 +1,296 @@ +
+ +[![platform](https://img.shields.io/badge/platform-iOS-blue.svg?style=plastic)](#) +[![languages](https://img.shields.io/badge/language-objective--c-blue.svg)](#) +[![cocoapods](https://img.shields.io/badge/cocoapods-supported-4BC51D.svg?style=plastic)](https://cocoapods.org/pods/JXCategoryView) +[![support](https://img.shields.io/badge/support-ios%208%2B-orange.svg)](#) + +A powerful and easy to use category view (segmentedcontrol, segmentview, pagingview, pagerview, pagecontrol) (腾讯新闻、今日头条、QQ 音乐、网易云音乐、京东、爱奇艺、腾讯视频、淘宝、天猫、简书、微博等所有主流 APP 分类切换滚动视图) + +与其他的同类三方库对比的优点: +- 使用协议封装指示器逻辑,可以随心所欲地自定义指示器效果; +- 提供更加全面丰富、高度自定义的效果; +- 使用子类化管理 cell 样式,逻辑更清晰,扩展更简单; +- 高度封装列表容器,使用便捷,完美支持列表的生命周期调用; + +## Swift版本 + +如果你在找 Swift 版本,请点击查看 [JXSegmentedView](https://github.com/pujiaxin33/JXSegmentedView)。 + +## 效果预览 + +### 指示器效果预览 + +说明 | Gif | +----|------| +LineView | | +LineView延长 | | +LineView延长+偏移 | | +LineView🌈彩虹风格 | | +DotLineView点线效果 | | +BallView QQ黏性红点 | | +TriangleView 三角形底部 | | +TriangleView 三角形顶部 | | +BackgroundView椭圆形 | | +BackgroundView椭圆形+阴影 | | +BackgroundView长方形 | | +BackgroundView遮罩有背景 | | +BackgroundView遮罩无背景 | | +BackgroundView渐变色 | | +ImageView底部(小船) | | +ImageView背景(最佳男歌手) | | +ImageView滚动效果(足球) | | +混合使用 | | + +以下均支持上下位置切换: +`JXCategoryIndicatorLineView`、`JXCategoryIndicatorImageView`、`JXCategoryIndicatorBallView`、`JXCategoryIndicatorTriangleView` + +### Cell样式效果预览 + +说明 | Gif | +----|------| +颜色渐变 | | +大小缩放 | | +大小缩放+底部锚点 | | +大小缩放+顶部锚点 | | +大小缩放+字体粗细 | | +大小缩放+点击动画 | | +大小缩放+cell宽度缩放 | | +TitleImage_Top | | +TitleImage_Left | | +TitleImage_Bottom | | +TitleImage_Right | | +cell图文混用 | | +Image | | +数字 | | +红点 | | +多行文本 | | +多行富文本 | | +Cell背景色渐变 | | +分割线 | | + +### 特殊效果预览 + +说明 | Gif | +----|------| +数据源过少
averageCellSpacingEnabled默认为YES | | +数据源过少
averageCellSpacingEnabled为NO | | +SegmentedControl
参考[`SegmentedControlViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/SegmentedControl/SegmentedControlViewController.m)类 | | +导航栏使用
参考[`NaviSegmentedControlViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/SegmentedControl/NaviSegmentedControlViewController.m)类 | | +嵌套使用
参考[`NestViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/Nest/NestViewController.m)类 | | +个人主页(上下左右滚动、header悬浮)
参考[`PagingViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/PagingView/Example/PagingViewController.m)类
更多样式请点击查看[JXPagingView库](https://github.com/pujiaxin33/JXPagingView) | | +垂直列表滚动
参考[`VerticalListViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/VerticalListView/VerticalListViewController.m)类
高仿腾讯视频
支持UITableView,参考[`VerticalListTableViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/VerticalListView/VerticalListTableViewController.m)
(背景色异常是录屏软件bug) | | +| 垂直缩放(仿网易圈圈、脉脉首页)
参考[`ScrollZoomViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/ScrollZoom/ScrollZoomViewController.m)类 | | +数据源刷新&列表数据加载
参考[`LoadDataListContainerViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/LoadData/LoadDataListContainerViewController.m)类 | | +上下滚动隐藏导航栏 | | +京东首页-滚动渐变变小 | | + +### 自定义效果预览 + +收录来自其他使用者的自定义示例,这些自定义类只在 Demo 项目里面,Pod 库并没有这些文件。所以,如果你需要使用这些自定义效果,请通过文件导入的方式。 + +目的: +- 参考学习如何自定义; +- 直接修改自定义示例类以快速实现自己的需求。 + +欢迎提 PullRequest 进行收录你的自定义效果。 + +| 说明 | Gif | +| ----|------| +| Spring动画指示器 | | +| 富文本数量cell | | +| 左右对齐指示器 | | +| 秒杀时间线cell | | +| 京东商品排序cell | | +| title背景块cell | | + +## 要求 + +- iOS 9.0+ +- Xcode 9+ +- Objective-C + +## 安装 + +### 手动 + +Clone 代码,把 Sources 文件夹拖入项目,`#import "JXCategoryView.h"` 就可以使用了。 + +### CocoaPods + +```ruby +target '' do + pod 'JXCategoryView' +end +``` +先执行 `pod repo update`,再执行 `pod install`。 + +## 结构图 + + + +## 使用 + +### JXCategoryTitleView 使用示例 + +1. 初始化 `JXCategoryTitleView`: +```Objective-C +self.categoryView = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, WindowsSize.width, 50)]; +self.categoryView.delegate = self; +[self.view addSubview:self.categoryView]; +``` + +2. 配置 `JXCategoryTitleView` 的属性: +```Objective-C +self.categoryView.titles = @[@"螃蟹", @"麻辣小龙虾", @"苹果"...]; +self.categoryView.titleColorGradientEnabled = YES; +``` + +3. 添加指示器: +```Objective-C +JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; +lineView.indicatorColor = [UIColor redColor]; +lineView.indicatorWidth = JXCategoryViewAutomaticDimension; +self.categoryView.indicators = @[lineView]; +``` + +4. 实现 `JXCategoryViewDelegate` 代理(可选) +```Objective-C +// 点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,不关心具体是点击还是滚动选中的。 +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index; + +// 点击选中的情况才会调用该方法 +- (void)categoryView:(JXCategoryBaseView *)categoryView didClickSelectedItemAtIndex:(NSInteger)index; + +// 滚动选中的情况才会调用该方法 +- (void)categoryView:(JXCategoryBaseView *)categoryView didScrollSelectedItemAtIndex:(NSInteger)index; + +// 正在滚动中的回调 +- (void)categoryView:(JXCategoryBaseView *)categoryView scrollingFromLeftIndex:(NSInteger)leftIndex toRightIndex:(NSInteger)rightIndex ratio:(CGFloat)ratio; +``` + +### 列表容器使用示例 + +#### `JXCategoryListContainerView` 封装类使用示例 + +`JXCategoryListContainerView` 是对列表视图高度封装的类,具有以下优点: + +- 相对于直接使用 `UIScrollView` 自定义,封装度高、代码集中、使用简单; +- 列表懒加载:当显示某个列表的时候,才进行列表初始化。而不是一次性加载全部列表,性能更优; +- 支持列表的 `willAppear`、`didAppear`、`willDisappear`、`didDisappear` 生命周期方法调用; + +1. 初始化 `JXCategoryListContainerView` 并关联到 `categoryView`: +```Objective-C +self.listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; +[self.view addSubview:self.listContainerView]; +// 关联到 categoryView +self.categoryView.listContainer = self.listContainerView; +``` + +2. 实现 `JXCategoryListContainerViewDelegate` 代理方法: +```Objective-C +// 返回列表的数量 +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} +// 根据下标 index 返回对应遵守并实现 `JXCategoryListContentViewDelegate` 协议的列表实例 +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + return [[ListViewController alloc] init]; +} +``` + +3. 列表实现 `JXCategoryListContentViewDelegate` 代理方法 +不管列表是 `UIView` 还是 `UIViewController` 都可以,提高使用灵活性,更便于现有的业务接入。 +```Objective-C +// 返回列表视图 +// 如果列表是 VC,就返回 VC.view +// 如果列表是 View,就返回 View 自己 +- (UIView *)listView { + return self.view; +} +``` + + +具体点击 [LoadDataListContainerViewController](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/LoadData/LoadDataListContainerViewController.m) 查看源代码了解 + +#### 直接使用 UIScrollView 自定义 + +因为代码量较多且分散,所有不推荐使用该方法。要正确使用需要注意的地方比较多,尤其对于刚接触 iOS 的同学来说不太友好。 + +不直接贴代码了,具体点击 [LoadDataListCustomViewController](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/LoadData/LoadDataListCustomViewController.m) 查看源代码了解。 + + +## 常见问题和答案 + +❗️❗️❗️这里面包含了许多常见问题和答案,使用之前请务必浏览此文档,或者遇到问题先看此文档❗️❗️❗️ + +[常见问题和答案总文档](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md) + +- [个人主页效果更丰富的示例:JXPagingView](https://github.com/pujiaxin33/JXPagingView) +- [侧滑手势处理](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BE%A7%E6%BB%91%E6%89%8B%E5%8A%BF%E5%A4%84%E7%90%86.md) +- [列表的生命周期方法处理](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E5%88%97%E8%A1%A8%E7%9A%84%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E6%96%B9%E6%B3%95%E5%A4%84%E7%90%86.md) +- [`JXCategoryListContainerType`的`scrollView`和`collectionView`对比](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#jxcategorylistcontainertype%E7%9A%84scrollview%E5%92%8Ccollectionview%E5%AF%B9%E6%AF%94) +- [cell左滑删除](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#cell%E5%B7%A6%E6%BB%91%E5%88%A0%E9%99%A4) +- [`FDFullscreenPopGesture`等全屏手势处理](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E5%85%A8%E5%B1%8F%E6%89%8B%E5%8A%BF%E5%A4%84%E7%90%86.md) +- [JXCategoryView数据源刷新](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#jxcategoryview%E6%95%B0%E6%8D%AE%E6%BA%90%E5%88%B7%E6%96%B0) +- [`reloadDataWithoutListContainer`方法使用说明](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#reloaddatawithoutlistcontainer%E6%96%B9%E6%B3%95%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E) +- [listContainer或contentScrollView关联说明](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#listcontainer%E6%88%96contentscrollview%E5%85%B3%E8%81%94%E8%AF%B4%E6%98%8E) +- [点击切换列表的动画控制](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E7%82%B9%E5%87%BB%E5%88%87%E6%8D%A2%E5%88%97%E8%A1%A8%E7%9A%84%E5%8A%A8%E7%94%BB%E6%8E%A7%E5%88%B6) +- [列表cell点击跳转示例](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E5%88%97%E8%A1%A8cell%E7%82%B9%E5%87%BB%E8%B7%B3%E8%BD%AC%E7%A4%BA%E4%BE%8B) +- [列表调用`presentViewController`方法](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E5%88%97%E8%A1%A8%E8%B0%83%E7%94%A8presentviewcontroller%E6%96%B9%E6%B3%95) +- [代码选中指定index](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E4%BB%A3%E7%A0%81%E9%80%89%E4%B8%AD%E6%8C%87%E5%AE%9Aindex) +- [JXCategoryView.collectionView高度取整说明](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#jxcategoryviewcollectionview%E9%AB%98%E5%BA%A6%E5%8F%96%E6%95%B4%E8%AF%B4%E6%98%8E) +- [对父VC的automaticallyAdjustsScrollViewInsets属性设置为NO](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E5%AF%B9%E7%88%B6vc%E7%9A%84automaticallyadjustsscrollviewinsets%E5%B1%9E%E6%80%A7%E8%AE%BE%E7%BD%AE%E4%B8%BAno) +- [`JXCategoryListContainerView`内部使用`UIViewController`当做列表容器使用说明](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#jxcategorylistcontainerview%E5%86%85%E9%83%A8%E4%BD%BF%E7%94%A8uiviewcontroller%E5%BD%93%E5%81%9A%E5%88%97%E8%A1%A8%E5%AE%B9%E5%99%A8%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E) +- [使用多行文本](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E4%BD%BF%E7%94%A8%E5%A4%9A%E8%A1%8C%E6%96%87%E6%9C%AC) +- [列表容器禁止左右滑动](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E5%88%97%E8%A1%A8%E5%AE%B9%E5%99%A8%E7%A6%81%E6%AD%A2%E5%B7%A6%E5%8F%B3%E6%BB%91%E5%8A%A8) +- [单个cell刷新 ](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E5%8D%95%E4%B8%AAcell%E5%88%B7%E6%96%B0) +- [点击item时指示器和列表滚动时效果一致](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E7%82%B9%E5%87%BBitem%E6%97%B6%E6%8C%87%E7%A4%BA%E5%99%A8%E5%92%8C%E5%88%97%E8%A1%A8%E6%BB%9A%E5%8A%A8%E6%97%B6%E6%95%88%E6%9E%9C%E4%B8%80%E8%87%B4) +- [自定义建议](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BB%BA%E8%AE%AE) + +## 指示器样式自定义 + +- 需要继承 `JXCategoryIndicatorProtocol` 协议,点击参看 [JXCategoryIndicatorProtocol](https://github.com/pujiaxin33/JXCategoryView/blob/master/Sources/Common/JXCategoryIndicatorProtocol.h); +- 提供了继承 `JXCategoryIndicatorProtocol` 协议的基类 `JXCategoryIndicatorComponentView`,里面提供了许多基础属性。点击参看 [JXCategoryIndicatorComponentView](https://github.com/pujiaxin33/JXCategoryView/blob/master/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m); +- 自定义指示器,请参考已实现的指示器视图,多尝试、多思考,再有问题请提 Issue 或加入反馈 QQ 群。 + +## Cell 自定义 + +- 任何子类化需求,view、cell、cellModel 三个都要子类化,即使某个子类 cell 什么事情都不做。用于维护继承链,以免以后子类化都不知道要继承谁了; +- 如果你想完全自定义 cell 里面的内容,那就继承 `JXCategoryIndicatorView`、`JXCategoryIndicatorCell、`JXCategoryIndicatorCellModel`,就像`JXCategoryTitleView`、`JXCategoryTitleCell、`JXCategoryTitleCellModel`那样去做; +- 如果你只是在父类进行一些微调,那就继承目标 view、cell、cellModel,对 cell 原有控件微调、或者加入新的控件皆可。就像 `JXCategoryTitleImageView` 系列、`JXCategoryTitleAttributeView` 系列那样去做; +- Cell 自定义,请参考已实现的 cell 样式,多尝试、多思考,再有问题请提 Issue 或加入反馈 QQ 群 + +## 常用属性说明 + +[常用属性说明文档地址](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E5%B8%B8%E7%94%A8%E5%B1%9E%E6%80%A7%E8%AF%B4%E6%98%8E.md) + +## 更新记录 + +- 2018.8.21 发布1.0.0版本,更新内容:使用POP(面向协议编程)重构指示器视图;[迁移指南](https://github.com/pujiaxin33/JXCategoryView/blob/master/Migration/1.0.0.md) +- 2018.8.22 发布1.0.1版本,更新内容:删除zoomEnabled,新增titleLabelZoomEnabled、imageZoomEnabled; +- 2018.8.23 发布1.0.2版本,更新内容:添加cellWidthZoomEnabled实现腾讯视频效果; +- 2018.8.24 发布1.0.3版本,更新内容:添加垂直列表滚动效果、指示器添加verticalMargin属性、JXCategoryViewDelegate代理方法优化; +- 2018.9.4 发布1.0.4版本,更新内容:修复bug、添加cell图文混用示例; +- 2018.12.19 发布1.1.7版本,更新内容:添加`JXCategoryListContainerView`,高度封装列表逻辑,支持懒加载列表,提升初始化性能; +- 2019.1.24 发布1.2.2版本,更新内容:非兼容更新接口`- (BOOL)selectCellAtIndex:(NSInteger)index selectedType:(JXCategoryCellSelectedType)selectedType`,自定义有用到该接口的请及时更新。 +- 2019.6.21 发布1.3.13版本,更新内容:将`JXCategoryListCollectionContainerView.dataSource`移动到m实现文件,添加`- (instancetype)initWithDataSource:(id)dataSource`初始化方法。 +- 2019.7.20 发布1.3.16版本,删除代理方法`- (void)categoryView:(JXCategoryBaseView *)categoryView didClickedItemContentScrollViewTransitionToIndex:(NSInteger)index;`,请使用`contentScrollViewClickTransitionAnimationEnabled`属性。`JXCategoryTitleVerticalZoomView`进行了重构,内容左边距只需要使用`contentEdgeLeft`属性即可。 +- 2019.9.11 发布1.4.0版本,删除一波被标记为弃用的属性和方法;完善列表的生命周期方法的调用;`JXCategoryListCollectionContainerView`类新增和必须要调用`- (void)scrollingFromLeftIndex:(NSInteger)leftIndex toRightIndex:(NSInteger)rightIndex ratio:(CGFloat)ratio selectedIndex:(NSInteger)selectedIndex`和`- (void)didClickSelectedItemAtIndex:(NSInteger)index`两个方法。 +- 2019.9.19 发布1.5.0版本,重构列表容器,具体修改请参考[1.5.0版本迁移指南](https://github.com/pujiaxin33/JXCategoryView/blob/master/Migration/1.5.0%E7%89%88%E6%9C%AC%E8%BF%81%E7%A7%BB%E6%8C%87%E5%8D%97.md) + +## 补充 + +如果刚开始使用`JXCategoryView`,当开发过程中需要支持某种特性时,请务必先搜索使用文档或者源代码。确认是否已经实现支持了想要的特性。请别不要文档和源代码都没有看,就直接提问,这对于大家都是一种时间浪费。如果没有支持想要的特性,欢迎提Issue讨论,或者自己实现提一个PullRequest。 + +该仓库保持随时更新,对于主流新的分类选择效果会第一时间支持。使用过程中,有任何建议或问题,可以通过以下方式联系我:
+邮箱:317437084@qq.com
+QQ群: 112440473 + + + +喜欢就star❤️一下吧 + +## License + +JXCategoryView is released under the MIT license. diff --git a/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.h b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.h new file mode 100644 index 0000000..ba630f3 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.h @@ -0,0 +1,29 @@ +// +// JXCategoryBaseCell.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXCategoryBaseCellModel.h" +#import "JXCategoryViewAnimator.h" +#import "JXCategoryViewDefines.h" + +@interface JXCategoryBaseCell : UICollectionViewCell + +@property (nonatomic, strong, readonly) JXCategoryBaseCellModel *cellModel; +@property (nonatomic, strong, readonly) JXCategoryViewAnimator *animator; + +- (void)initializeViews NS_REQUIRES_SUPER; + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel NS_REQUIRES_SUPER; + +- (BOOL)checkCanStartSelectedAnimation:(JXCategoryBaseCellModel *)cellModel; + +- (void)addSelectedAnimationBlock:(JXCategoryCellSelectedAnimationBlock)block; + +- (void)startSelectedAnimationIfNeeded:(JXCategoryBaseCellModel *)cellModel; + +@end diff --git a/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.m b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.m new file mode 100644 index 0000000..ea63aac --- /dev/null +++ b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.m @@ -0,0 +1,98 @@ +// +// JXCategoryBaseCell.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryBaseCell.h" +#import "RTLManager.h" + +@interface JXCategoryBaseCell () +@property (nonatomic, strong) JXCategoryBaseCellModel *cellModel; +@property (nonatomic, strong) JXCategoryViewAnimator *animator; +@property (nonatomic, strong) NSMutableArray *animationBlockArray; +@end + +@implementation JXCategoryBaseCell + +#pragma mark - Initialize + +- (void)dealloc { + [self.animator stop]; +} + +- (void)prepareForReuse { + [super prepareForReuse]; + + [self.animator stop]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initializeViews]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self initializeViews]; + } + return self; +} + +#pragma mark - Public + +- (void)initializeViews { + _animationBlockArray = [NSMutableArray array]; + + [RTLManager horizontalFlipViewIfNeeded:self]; + [RTLManager horizontalFlipViewIfNeeded:self.contentView]; +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + self.cellModel = cellModel; + + if (cellModel.isSelectedAnimationEnabled) { + [self.animationBlockArray removeLastObject]; + if ([self checkCanStartSelectedAnimation:cellModel]) { + self.animator = [[JXCategoryViewAnimator alloc] init]; + self.animator.duration = cellModel.selectedAnimationDuration; + } else { + [self.animator stop]; + } + } +} + +- (BOOL)checkCanStartSelectedAnimation:(JXCategoryBaseCellModel *)cellModel { + BOOL canStartSelectedAnimation = ((cellModel.selectedType == JXCategoryCellSelectedTypeCode) || (cellModel.selectedType == JXCategoryCellSelectedTypeClick)); + return canStartSelectedAnimation; +} + +- (void)addSelectedAnimationBlock:(JXCategoryCellSelectedAnimationBlock)block { + [self.animationBlockArray addObject:block]; +} + +- (void)startSelectedAnimationIfNeeded:(JXCategoryBaseCellModel *)cellModel { + if (cellModel.isSelectedAnimationEnabled && [self checkCanStartSelectedAnimation:cellModel]) { + // 需要更新 isTransitionAnimating,用于处理在过滤时,禁止响应点击,避免界面异常。 + cellModel.transitionAnimating = YES; + __weak typeof(self)weakSelf = self; + self.animator.progressCallback = ^(CGFloat percent) { + for (JXCategoryCellSelectedAnimationBlock block in weakSelf.animationBlockArray) { + block(percent); + } + }; + self.animator.completeCallback = ^{ + cellModel.transitionAnimating = NO; + [weakSelf.animationBlockArray removeAllObjects]; + }; + [self.animator start]; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.h b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.h new file mode 100644 index 0000000..af82301 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.h @@ -0,0 +1,31 @@ +// +// JXCategoryBaseCellModel.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import +#import "JXCategoryViewDefines.h" + +@interface JXCategoryBaseCellModel : NSObject + +@property (nonatomic, assign) NSUInteger index; +@property (nonatomic, assign) CGFloat cellWidth; +@property (nonatomic, assign) CGFloat cellSpacing; +@property (nonatomic, assign, getter=isSelected) BOOL selected; + +@property (nonatomic, assign, getter=isCellWidthZoomEnabled) BOOL cellWidthZoomEnabled; +@property (nonatomic, assign) CGFloat cellWidthNormalZoomScale; +@property (nonatomic, assign) CGFloat cellWidthCurrentZoomScale; +@property (nonatomic, assign) CGFloat cellWidthSelectedZoomScale; + +@property (nonatomic, assign, getter=isSelectedAnimationEnabled) BOOL selectedAnimationEnabled; +@property (nonatomic, assign) NSTimeInterval selectedAnimationDuration; +@property (nonatomic, assign) JXCategoryCellSelectedType selectedType; + +@property (nonatomic, assign, getter=isTransitionAnimating) BOOL transitionAnimating; + +@end diff --git a/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.m b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.m new file mode 100644 index 0000000..9b6e520 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryBaseCellModel.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryBaseCellModel.h" + +@implementation JXCategoryBaseCellModel + +@end diff --git a/Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.h b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.h new file mode 100644 index 0000000..27a54fe --- /dev/null +++ b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.h @@ -0,0 +1,222 @@ +// +// JXCategoryView.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXCategoryBaseCell.h" +#import "JXCategoryBaseCellModel.h" +#import "JXCategoryCollectionView.h" +#import "JXCategoryViewDefines.h" + +@class JXCategoryBaseView; + +@protocol JXCategoryViewListContainer +- (void)setDefaultSelectedIndex:(NSInteger)index; +- (UIScrollView *)contentScrollView; +- (void)reloadData; +- (void)didClickSelectedItemAtIndex:(NSInteger)index; +@end + +@protocol JXCategoryViewDelegate + +@optional + +//为什么会把选中代理分为三个,因为有时候只关心点击选中的,有时候只关心滚动选中的,有时候只关心选中。所以具体情况,使用对应方法。 +/** + 点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,不关心具体是点击还是滚动选中的。 + + @param categoryView categoryView对象 + @param index 选中的index + */ +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index; + +/** + 点击选中的情况才会调用该方法 + + @param categoryView categoryView对象 + @param index 选中的index + */ +- (void)categoryView:(JXCategoryBaseView *)categoryView didClickSelectedItemAtIndex:(NSInteger)index; + +/** + 滚动选中的情况才会调用该方法 + + @param categoryView categoryView对象 + @param index 选中的index + */ +- (void)categoryView:(JXCategoryBaseView *)categoryView didScrollSelectedItemAtIndex:(NSInteger)index; + +/** + 控制能否点击Item + + @param categoryView categoryView对象 + @param index 准备点击的index + @return 能否点击 + */ +- (BOOL)categoryView:(JXCategoryBaseView *)categoryView canClickItemAtIndex:(NSInteger)index; + +/** + 正在滚动中的回调 + + @param categoryView categoryView对象 + @param leftIndex 正在滚动中,相对位置处于左边的index + @param rightIndex 正在滚动中,相对位置处于右边的index + @param ratio 从左往右计算的百分比 + */ +- (void)categoryView:(JXCategoryBaseView *)categoryView scrollingFromLeftIndex:(NSInteger)leftIndex toRightIndex:(NSInteger)rightIndex ratio:(CGFloat)ratio; + +@end + +@interface JXCategoryBaseView : UIView + +@property (nonatomic, strong, readonly) JXCategoryCollectionView *collectionView; + +@property (nonatomic, strong) NSArray *dataSource; + +@property (nonatomic, weak) id delegate; + +/** + 高封装度的列表容器,使用该类可以让列表拥有完成的生命周期、自动同步defaultSelectedIndex、自动调用reloadData。 + */ +@property (nonatomic, weak) id listContainer; + +/** + 推荐使用封装度更高的listContainer属性。如果使用contentScrollView请参考`LoadDataListCustomViewController`使用示例。 + */ +@property (nonatomic, strong) UIScrollView *contentScrollView; + +@property (nonatomic, assign) NSInteger defaultSelectedIndex; //修改初始化的时候默认选择的index + +@property (nonatomic, assign, readonly) NSInteger selectedIndex; + +@property (nonatomic, assign, getter=isContentScrollViewClickTransitionAnimationEnabled) BOOL contentScrollViewClickTransitionAnimationEnabled; //点击cell进行contentScrollView切换时是否需要动画。默认为YES + +@property (nonatomic, assign) CGFloat contentEdgeInsetLeft; //整体内容的左边距,默认JXCategoryViewAutomaticDimension(等于cellSpacing) + +@property (nonatomic, assign) CGFloat contentEdgeInsetRight; //整体内容的右边距,默认JXCategoryViewAutomaticDimension(等于cellSpacing) + +@property (nonatomic, assign) CGFloat cellWidth; //默认JXCategoryViewAutomaticDimension + +@property (nonatomic, assign) CGFloat cellWidthIncrement; //cell宽度补偿。默认:0 + +@property (nonatomic, assign) CGFloat cellSpacing; //cell之间的间距,默认20 + +@property (nonatomic, assign, getter=isAverageCellSpacingEnabled) BOOL averageCellSpacingEnabled; //当collectionView.contentSize.width小于JXCategoryBaseView的宽度,是否将cellSpacing均分。默认为YES。 + +//cell宽度是否缩放 +@property (nonatomic, assign, getter=isCellWidthZoomEnabled) BOOL cellWidthZoomEnabled; //默认为NO + +@property (nonatomic, assign, getter=isCellWidthZoomScrollGradientEnabled) BOOL cellWidthZoomScrollGradientEnabled; //手势滚动过程中,是否需要更新cell的宽度。默认为YES + +@property (nonatomic, assign) CGFloat cellWidthZoomScale; //默认1.2,cellWidthZoomEnabled为YES才生效 + +@property (nonatomic, assign, getter=isSelectedAnimationEnabled) BOOL selectedAnimationEnabled; //是否开启点击或代码选中动画。默认为NO。自定义的cell选中动画需要自己实现。(仅点击或调用selectItemAtIndex选中才有效,滚动选中无效) + +@property (nonatomic, assign) NSTimeInterval selectedAnimationDuration; //cell选中动画的时间。默认0.25 + +/** + 选中目标index的item + + @param index 目标index + */ +- (void)selectItemAtIndex:(NSInteger)index; + +/** + 初始化的时候无需调用。比如页面初始化之后,根据网络接口异步回调回来数据,重新配置categoryView,需要调用该方法进行刷新。 + */ +- (void)reloadData; + +/** + 重新配置categoryView但是不需要reload listContainer。特殊情况是该方法。 + */ +- (void)reloadDataWithoutListContainer; + +/** + 刷新指定的index的cell + 内部会触发`- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index`方法进行cellModel刷新 + + @param index 指定cell的index + */ +- (void)reloadCellAtIndex:(NSInteger)index; + +@end + + + +@interface JXCategoryBaseView (UISubclassingBaseHooks) + +/** + 获取目标cell当前的frame,反应当前真实的frame受到cellWidthSelectedZoomScale的影响。 + */ +- (CGRect)getTargetCellFrame:(NSInteger)targetIndex; + +/** + 获取目标cell的选中时的frame,其他cell的状态都当做普通状态处理。 + */ +- (CGRect)getTargetSelectedCellFrame:(NSInteger)targetIndex selectedType:(JXCategoryCellSelectedType)selectedType; +- (void)initializeData NS_REQUIRES_SUPER; +- (void)initializeViews NS_REQUIRES_SUPER; + +/** + reloadData方法调用,重新生成数据源赋值到self.dataSource + */ +- (void)refreshDataSource; + +/** + reloadData方法调用,根据数据源重新刷新状态; + */ +- (void)refreshState NS_REQUIRES_SUPER; + +/** + 选中某个item时,刷新将要选中与取消选中的cellModel + + @param selectedCellModel 将要选中的cellModel + @param unselectedCellModel 取消选中的cellModel + */ +- (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel NS_REQUIRES_SUPER; + +/** + 关联的contentScrollView的contentOffset发生了改变 + + @param contentOffset 偏移量 + */ +- (void)contentOffsetOfContentScrollViewDidChanged:(CGPoint)contentOffset NS_REQUIRES_SUPER; + +/** + 选中某一个item的时候调用,该方法用于子类重载。 + 如果外部要选中某个index,请使用`- (void)selectItemAtIndex:(NSUInteger)index;` + + @param index 选中的index + @param selectedType JXCategoryCellSelectedType + @return 返回值为NO,表示触发内部某些判断(点击了同一个cell),子类无需后续操作。 + */ +- (BOOL)selectCellAtIndex:(NSInteger)index selectedType:(JXCategoryCellSelectedType)selectedType NS_REQUIRES_SUPER; + +/** + reloadData时,返回每个cell的宽度 + + @param index 目标index + @return cellWidth + */ +- (CGFloat)preferredCellWidthAtIndex:(NSInteger)index; + +/** + 返回自定义cell的class + + @return cell class + */ +- (Class)preferredCellClass; + +/** + refreshState时调用,重置cellModel的状态 + + @param cellModel 待重置的cellModel + @param index cellModel在数组中的index + */ +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index NS_REQUIRES_SUPER; + +@end diff --git a/Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.m b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.m new file mode 100644 index 0000000..4d0b7bd --- /dev/null +++ b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.m @@ -0,0 +1,697 @@ +// +// JXCategoryBaseView.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryBaseView.h" +#import "JXCategoryFactory.h" +#import "JXCategoryViewAnimator.h" +#import "RTLManager.h" + +struct DelegateFlags { + unsigned int didSelectedItemAtIndexFlag : 1; + unsigned int didClickSelectedItemAtIndexFlag : 1; + unsigned int didScrollSelectedItemAtIndexFlag : 1; + unsigned int canClickItemAtIndexFlag : 1; + unsigned int scrollingFromLeftIndexToRightIndexFlag : 1; +}; + +@interface JXCategoryBaseView () + +@property (nonatomic, strong) JXCategoryCollectionView *collectionView; +@property (nonatomic, assign) struct DelegateFlags delegateFlags; +@property (nonatomic, assign) NSInteger selectedIndex; +@property (nonatomic, assign) CGFloat innerCellSpacing; +@property (nonatomic, assign) CGPoint lastContentViewContentOffset; +@property (nonatomic, strong) JXCategoryViewAnimator *animator; +// 正在滚动中的目标index。用于处理正在滚动列表的时候,立即点击item,会导致界面显示异常。 +@property (nonatomic, assign) NSInteger scrollingTargetIndex; +@property (nonatomic, assign, getter=isNeedReloadByBecomeActive) BOOL needReloadByBecomeActive; +@property (nonatomic, assign, getter=isFirstLayoutSubviews) BOOL firstLayoutSubviews; +@property (nonatomic, assign, getter=isNeedConfigAutomaticallyAdjustsScrollViewInsets) BOOL needConfigAutomaticallyAdjustsScrollViewInsets; + +@end + +@implementation JXCategoryBaseView + +- (void)dealloc { + if (self.contentScrollView) { + [self.contentScrollView removeObserver:self forKeyPath:@"contentOffset"]; + } + [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil]; + [self.animator stop]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initializeData]; + [self initializeViews]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self initializeData]; + [self initializeViews]; + } + return self; +} + +- (void)willMoveToSuperview:(UIView *)newSuperview { + [super willMoveToSuperview:newSuperview]; + + [self configAutomaticallyAdjustsScrollViewInsets:newSuperview]; +} + +- (void)reloadData { + [self reloadDataWithoutListContainer]; + [self.listContainer reloadData]; +} + +- (void)reloadDataWithoutListContainer { + [self refreshDataSource]; + [self refreshState]; + [self.collectionView.collectionViewLayout invalidateLayout]; + [self.collectionView reloadData]; +} + +- (void)reloadCellAtIndex:(NSInteger)index { + if (index < 0 || index >= self.dataSource.count) { + return; + } + JXCategoryBaseCellModel *cellModel = self.dataSource[index]; + cellModel.selectedType = JXCategoryCellSelectedTypeUnknown; + [self refreshCellModel:cellModel index:index]; + JXCategoryBaseCell *cell = (JXCategoryBaseCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; + [cell reloadData:cellModel]; +} + +- (void)selectItemAtIndex:(NSInteger)index { + [self selectCellAtIndex:index selectedType:JXCategoryCellSelectedTypeCode]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + //部分使用者为了适配不同的手机屏幕尺寸,JXCategoryView的宽高比要求保持一样,所以它的高度就会因为不同宽度的屏幕而不一样。计算出来的高度,有时候会是位数很长的浮点数,如果把这个高度设置给UICollectionView就会触发内部的一个错误。所以,为了规避这个问题,在这里对高度统一向下取整。 + //如果向下取整导致了你的页面异常,请自己重新设置JXCategoryView的高度,保证为整数即可。 + CGRect targetFrame = CGRectMake(0, 0, self.bounds.size.width, floor(self.bounds.size.height)); + if (self.isFirstLayoutSubviews) { + if (self.bounds.size.width == 0 || self.bounds.size.height == 0) { + return; + } + if (self.isNeedConfigAutomaticallyAdjustsScrollViewInsets) { + [self configAutomaticallyAdjustsScrollViewInsets:self.superview]; + } + self.firstLayoutSubviews = NO; + self.collectionView.frame = targetFrame; + [self reloadDataWithoutListContainer]; + }else { + if (!CGRectEqualToRect(self.collectionView.frame, targetFrame)) { + self.collectionView.frame = targetFrame; + [self refreshState]; + [self.collectionView.collectionViewLayout invalidateLayout]; + [self.collectionView reloadData]; + } + } +} + +#pragma mark - Setter + +- (void)setDelegate:(id)delegate { + _delegate = delegate; + + _delegateFlags.didSelectedItemAtIndexFlag = [delegate respondsToSelector:@selector(categoryView:didSelectedItemAtIndex:)]; + _delegateFlags.didClickSelectedItemAtIndexFlag = [delegate respondsToSelector:@selector(categoryView:didClickSelectedItemAtIndex:)]; + _delegateFlags.didScrollSelectedItemAtIndexFlag = [delegate respondsToSelector:@selector(categoryView:didScrollSelectedItemAtIndex:)]; + _delegateFlags.canClickItemAtIndexFlag = [delegate respondsToSelector:@selector(categoryView:canClickItemAtIndex:)]; + _delegateFlags.scrollingFromLeftIndexToRightIndexFlag = [delegate respondsToSelector:@selector(categoryView:scrollingFromLeftIndex:toRightIndex:ratio:)]; +} + +- (void)setDefaultSelectedIndex:(NSInteger)defaultSelectedIndex { + _defaultSelectedIndex = defaultSelectedIndex; + + self.selectedIndex = defaultSelectedIndex; + [self.listContainer setDefaultSelectedIndex:defaultSelectedIndex]; +} + +- (void)setContentScrollView:(UIScrollView *)contentScrollView { + if (_contentScrollView != nil) { + [_contentScrollView removeObserver:self forKeyPath:@"contentOffset"]; + } + _contentScrollView = contentScrollView; + + self.contentScrollView.scrollsToTop = NO; + [self.contentScrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil]; +} + +- (void)setListContainer:(id)listContainer { + _listContainer = listContainer; + [listContainer setDefaultSelectedIndex:self.defaultSelectedIndex]; + self.contentScrollView = [listContainer contentScrollView]; +} + +#pragma mark - + +- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { + return 1; +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.dataSource.count; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + return [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([self preferredCellClass]) forIndexPath:indexPath]; +} + +- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { + JXCategoryBaseCellModel *cellModel = self.dataSource[indexPath.item]; + cellModel.selectedType = JXCategoryCellSelectedTypeUnknown; + [(JXCategoryBaseCell *)cell reloadData:cellModel]; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + BOOL isTransitionAnimating = NO; + for (JXCategoryBaseCellModel *cellModel in self.dataSource) { + if (cellModel.isTransitionAnimating) { + isTransitionAnimating = YES; + break; + } + } + if (!isTransitionAnimating) { + //当前没有正在过渡的item,才允许点击选中 + [self clickSelectItemAtIndex:indexPath.row]; + } +} + +#pragma mark - + +- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { + return UIEdgeInsetsMake(0, [self getContentEdgeInsetLeft], 0, [self getContentEdgeInsetRight]); +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return CGSizeMake(self.dataSource[indexPath.item].cellWidth, self.collectionView.bounds.size.height); +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { + return self.innerCellSpacing; +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { + return self.innerCellSpacing; +} + +#pragma mark - KVO + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if ([keyPath isEqualToString:@"contentOffset"]) { + CGPoint contentOffset = [change[NSKeyValueChangeNewKey] CGPointValue]; + if ((self.contentScrollView.isTracking || self.contentScrollView.isDecelerating)) { + //只处理用户滚动的情况 + [self contentOffsetOfContentScrollViewDidChanged:contentOffset]; + } + self.lastContentViewContentOffset = contentOffset; + } +} + +#pragma mark - Private + +- (void)configAutomaticallyAdjustsScrollViewInsets:(UIView *)view { + UIResponder *next = view; + while (next != nil) { + if ([next isKindOfClass:[UIViewController class]]) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + ((UIViewController *)next).automaticallyAdjustsScrollViewInsets = NO; +#pragma clang diagnostic pop + self.needConfigAutomaticallyAdjustsScrollViewInsets = NO; + break; + } + next = next.nextResponder; + } +} + +- (CGFloat)getContentEdgeInsetLeft { + if (self.contentEdgeInsetLeft == JXCategoryViewAutomaticDimension) { + return self.innerCellSpacing; + } + return self.contentEdgeInsetLeft; +} + +- (CGFloat)getContentEdgeInsetRight { + if (self.contentEdgeInsetRight == JXCategoryViewAutomaticDimension) { + return self.innerCellSpacing; + } + return self.contentEdgeInsetRight; +} + +- (CGFloat)getCellWidthAtIndex:(NSInteger)index { + return [self preferredCellWidthAtIndex:index] + self.cellWidthIncrement; +} + +- (void)clickSelectItemAtIndex:(NSInteger)index { + if (self.delegateFlags.canClickItemAtIndexFlag && ![self.delegate categoryView:self canClickItemAtIndex:index]) { + return; + } + + [self selectCellAtIndex:index selectedType:JXCategoryCellSelectedTypeClick]; +} + +- (void)scrollSelectItemAtIndex:(NSInteger)index { + [self selectCellAtIndex:index selectedType:JXCategoryCellSelectedTypeScroll]; +} + +- (void)applicationDidBecomeActive:(NSNotification *)notification { + if (self.isNeedReloadByBecomeActive) { + self.needReloadByBecomeActive = NO; + [self reloadData]; + } +} + +@end + +@implementation JXCategoryBaseView (UISubclassingBaseHooks) + +- (CGRect)getTargetCellFrame:(NSInteger)targetIndex { + CGFloat x = [self getContentEdgeInsetLeft]; + for (int i = 0; i < targetIndex; i ++) { + JXCategoryBaseCellModel *cellModel = self.dataSource[i]; + CGFloat cellWidth; + if (cellModel.isTransitionAnimating && cellModel.isCellWidthZoomEnabled) { + //正在进行动画的时候,cellWidthCurrentZoomScale是随着动画渐变的,而没有立即更新到目标值 + if (cellModel.isSelected) { + cellWidth = [self getCellWidthAtIndex:cellModel.index]*cellModel.cellWidthSelectedZoomScale; + }else { + cellWidth = [self getCellWidthAtIndex:cellModel.index]*cellModel.cellWidthNormalZoomScale; + } + }else { + cellWidth = cellModel.cellWidth; + } + x += cellWidth + self.innerCellSpacing; + } + CGFloat width; + JXCategoryBaseCellModel *selectedCellModel = self.dataSource[targetIndex]; + if (selectedCellModel.isTransitionAnimating && selectedCellModel.isCellWidthZoomEnabled) { + width = [self getCellWidthAtIndex:selectedCellModel.index]*selectedCellModel.cellWidthSelectedZoomScale; + }else { + width = selectedCellModel.cellWidth; + } + return CGRectMake(x, 0, width, self.bounds.size.height); +} + +- (CGRect)getTargetSelectedCellFrame:(NSInteger)targetIndex selectedType:(JXCategoryCellSelectedType)selectedType { + CGFloat x = [self getContentEdgeInsetLeft]; + for (int i = 0; i < targetIndex; i ++) { + JXCategoryBaseCellModel *cellModel = self.dataSource[i]; + x += [self getCellWidthAtIndex:cellModel.index] + self.innerCellSpacing; + } + CGFloat cellWidth = 0; + JXCategoryBaseCellModel *selectedCellModel = self.dataSource[targetIndex]; + if (selectedCellModel.cellWidthZoomEnabled) { + cellWidth = [self getCellWidthAtIndex:targetIndex]*selectedCellModel.cellWidthSelectedZoomScale; + }else { + cellWidth = [self getCellWidthAtIndex:targetIndex]; + } + return CGRectMake(x, 0, cellWidth, self.bounds.size.height); +} + +- (void)initializeData { + _firstLayoutSubviews = YES; + _dataSource = [NSMutableArray array]; + _selectedIndex = 0; + _cellWidth = JXCategoryViewAutomaticDimension; + _cellWidthIncrement = 0; + _cellSpacing = 20; + _averageCellSpacingEnabled = YES; + _cellWidthZoomEnabled = NO; + _cellWidthZoomScale = 1.2; + _cellWidthZoomScrollGradientEnabled = YES; + _contentEdgeInsetLeft = JXCategoryViewAutomaticDimension; + _contentEdgeInsetRight = JXCategoryViewAutomaticDimension; + _lastContentViewContentOffset = CGPointZero; + _selectedAnimationEnabled = NO; + _selectedAnimationDuration = 0.25; + _scrollingTargetIndex = -1; + _contentScrollViewClickTransitionAnimationEnabled = YES; + _needReloadByBecomeActive = NO; +} + +- (void)initializeViews { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + _collectionView = [[JXCategoryCollectionView alloc] initWithFrame:self.bounds collectionViewLayout:layout]; + self.collectionView.backgroundColor = [UIColor clearColor]; + self.collectionView.showsHorizontalScrollIndicator = NO; + self.collectionView.showsVerticalScrollIndicator = NO; + self.collectionView.scrollsToTop = NO; + self.collectionView.dataSource = self; + self.collectionView.delegate = self; + [self.collectionView registerClass:[self preferredCellClass] forCellWithReuseIdentifier:NSStringFromClass([self preferredCellClass])]; + if (@available(iOS 10.0, *)) { + self.collectionView.prefetchingEnabled = NO; + } + if (@available(iOS 11.0, *)) { + if ([self.collectionView respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) { + self.collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + } + if ([RTLManager supportRTL]) { + self.collectionView.semanticContentAttribute = UISemanticContentAttributeForceLeftToRight; + [RTLManager horizontalFlipView:self.collectionView]; + } + [self addSubview:self.collectionView]; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil]; +} + +- (void)refreshDataSource {} + +- (void)refreshState { + if (self.selectedIndex < 0 || self.selectedIndex >= self.dataSource.count) { + self.defaultSelectedIndex = 0; + } + + self.innerCellSpacing = self.cellSpacing; + //总的内容宽度(左边距+cell总宽度+总cellSpacing+右边距) + __block CGFloat totalItemWidth = [self getContentEdgeInsetLeft]; + //总的cell宽度 + CGFloat totalCellWidth = 0; + for (int i = 0; i < self.dataSource.count; i++) { + JXCategoryBaseCellModel *cellModel = self.dataSource[i]; + cellModel.index = i; + cellModel.cellWidthZoomEnabled = self.cellWidthZoomEnabled; + cellModel.cellWidthNormalZoomScale = 1; + cellModel.cellWidthSelectedZoomScale = self.cellWidthZoomScale; + cellModel.selectedAnimationEnabled = self.selectedAnimationEnabled; + cellModel.selectedAnimationDuration = self.selectedAnimationDuration; + cellModel.cellSpacing = self.innerCellSpacing; + if (i == self.selectedIndex) { + cellModel.selected = YES; + cellModel.cellWidthCurrentZoomScale = cellModel.cellWidthSelectedZoomScale; + }else { + cellModel.selected = NO; + cellModel.cellWidthCurrentZoomScale = cellModel.cellWidthNormalZoomScale; + } + if (self.isCellWidthZoomEnabled) { + cellModel.cellWidth = [self getCellWidthAtIndex:i]*cellModel.cellWidthCurrentZoomScale; + }else { + cellModel.cellWidth = [self getCellWidthAtIndex:i]; + } + totalCellWidth += cellModel.cellWidth; + if (i == self.dataSource.count - 1) { + totalItemWidth += cellModel.cellWidth + [self getContentEdgeInsetRight]; + }else { + totalItemWidth += cellModel.cellWidth + self.innerCellSpacing; + } + [self refreshCellModel:cellModel index:i]; + } + + if (self.isAverageCellSpacingEnabled && totalItemWidth < self.bounds.size.width) { + //如果总的内容宽度都没有超过视图宽度,就将cellSpacing等分 + NSInteger cellSpacingItemCount = self.dataSource.count - 1; + CGFloat totalCellSpacingWidth = self.bounds.size.width - totalCellWidth; + //如果内容左边距是Automatic,就加1 + if (self.contentEdgeInsetLeft == JXCategoryViewAutomaticDimension) { + cellSpacingItemCount += 1; + }else { + totalCellSpacingWidth -= self.contentEdgeInsetLeft; + } + //如果内容右边距是Automatic,就加1 + if (self.contentEdgeInsetRight == JXCategoryViewAutomaticDimension) { + cellSpacingItemCount += 1; + }else { + totalCellSpacingWidth -= self.contentEdgeInsetRight; + } + + CGFloat cellSpacing = 0; + if (cellSpacingItemCount > 0) { + cellSpacing = totalCellSpacingWidth/cellSpacingItemCount; + } + self.innerCellSpacing = cellSpacing; + [self.dataSource enumerateObjectsUsingBlock:^(JXCategoryBaseCellModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + obj.cellSpacing = self.innerCellSpacing; + }]; + } + + //---------------------定位collectionView到当前选中的位置---------------------- + //因为初始化的时候,collectionView并没有初始化完,cell都没有被加载出来。只有自己手动计算当前选中的index的位置,然后更新到contentOffset + __block CGFloat frameXOfSelectedCell = [self getContentEdgeInsetLeft]; + __block CGFloat selectedCellWidth = 0; + totalItemWidth = [self getContentEdgeInsetLeft]; + [self.dataSource enumerateObjectsUsingBlock:^(JXCategoryBaseCellModel * cellModel, NSUInteger idx, BOOL * _Nonnull stop) { + if (idx < self.selectedIndex) { + frameXOfSelectedCell += cellModel.cellWidth + self.innerCellSpacing; + }else if (idx == self.selectedIndex) { + selectedCellWidth = cellModel.cellWidth; + } + if (idx == self.dataSource.count - 1) { + totalItemWidth += cellModel.cellWidth + [self getContentEdgeInsetRight]; + }else { + totalItemWidth += cellModel.cellWidth + self.innerCellSpacing; + } + }]; + + CGFloat minX = 0; + CGFloat maxX = totalItemWidth - self.bounds.size.width; + CGFloat targetX = frameXOfSelectedCell - self.bounds.size.width/2.0 + selectedCellWidth/2.0; + CGPoint collectionViewContentOffset = self.collectionView.contentOffset; + collectionViewContentOffset.x = MAX(MIN(maxX, targetX), minX); + + [self.collectionView setContentOffset:collectionViewContentOffset + animated:NO]; + //---------------------定位collectionView到当前选中的位置---------------------- + + if (CGRectEqualToRect(self.contentScrollView.frame, CGRectZero) && self.contentScrollView.superview != nil) { + //某些情况系统会出现JXCategoryView先布局,contentScrollView后布局。就会导致下面指定defaultSelectedIndex失效,所以发现contentScrollView的frame为zero时,强行触发其父视图链里面已经有frame的一个父视图的layoutSubviews方法。 + //比如JXSegmentedListContainerView会将contentScrollView包裹起来使用,该情况需要JXSegmentedListContainerView.superView触发布局更新 + UIView *parentView = self.contentScrollView.superview; + while (parentView != nil && CGRectEqualToRect(parentView.frame, CGRectZero)) { + parentView = parentView.superview; + } + [parentView setNeedsLayout]; + [parentView layoutIfNeeded]; + } + //将contentScrollView的contentOffset定位到当前选中index的位置 + CGPoint contentScrollViewContentOffset = self.contentScrollView.contentOffset; + contentScrollViewContentOffset.x = self.selectedIndex*self.contentScrollView.bounds.size.width; + [self.contentScrollView setContentOffset:contentScrollViewContentOffset animated:NO]; +} + +- (BOOL)selectCellAtIndex:(NSInteger)targetIndex selectedType:(JXCategoryCellSelectedType)selectedType { + if (targetIndex < 0 || targetIndex >= self.dataSource.count) { + return NO; + } + + self.needReloadByBecomeActive = NO; + if (self.selectedIndex == targetIndex) { + //目标index和当前选中的index相等,就不需要处理后续的选中更新逻辑,只需要回调代理方法即可。 + if (selectedType == JXCategoryCellSelectedTypeCode) { + [self.listContainer didClickSelectedItemAtIndex:targetIndex]; + }else if (selectedType == JXCategoryCellSelectedTypeClick) { + [self.listContainer didClickSelectedItemAtIndex:targetIndex]; + if (self.delegateFlags.didClickSelectedItemAtIndexFlag) { + [self.delegate categoryView:self didClickSelectedItemAtIndex:targetIndex]; + } + }else if (selectedType == JXCategoryCellSelectedTypeScroll) { + if (self.delegateFlags.didScrollSelectedItemAtIndexFlag) { + [self.delegate categoryView:self didScrollSelectedItemAtIndex:targetIndex]; + } + } + if (self.delegateFlags.didSelectedItemAtIndexFlag) { + [self.delegate categoryView:self didSelectedItemAtIndex:targetIndex]; + } + self.scrollingTargetIndex = -1; + return NO; + } + + //通知子类刷新当前选中的和将要选中的cellModel + JXCategoryBaseCellModel *lastCellModel = self.dataSource[self.selectedIndex]; + lastCellModel.selectedType = selectedType; + JXCategoryBaseCellModel *selectedCellModel = self.dataSource[targetIndex]; + selectedCellModel.selectedType = selectedType; + [self refreshSelectedCellModel:selectedCellModel unselectedCellModel:lastCellModel]; + + //刷新当前选中的和将要选中的cell + JXCategoryBaseCell *lastCell = (JXCategoryBaseCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:self.selectedIndex inSection:0]]; + [lastCell reloadData:lastCellModel]; + JXCategoryBaseCell *selectedCell = (JXCategoryBaseCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:targetIndex inSection:0]]; + [selectedCell reloadData:selectedCellModel]; + + if (self.scrollingTargetIndex != -1 && self.scrollingTargetIndex != targetIndex) { + JXCategoryBaseCellModel *scrollingTargetCellModel = self.dataSource[self.scrollingTargetIndex]; + scrollingTargetCellModel.selected = NO; + scrollingTargetCellModel.selectedType = selectedType; + [self refreshSelectedCellModel:selectedCellModel unselectedCellModel:scrollingTargetCellModel]; + JXCategoryBaseCell *scrollingTargetCell = (JXCategoryBaseCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:self.scrollingTargetIndex inSection:0]]; + [scrollingTargetCell reloadData:scrollingTargetCellModel]; + } + + if (self.isCellWidthZoomEnabled) { + [self.collectionView.collectionViewLayout invalidateLayout]; + //延时为了解决cellwidth变化,点击最后几个cell,scrollToItem会出现位置偏移bu。需要等cellWidth动画渐变结束后再滚动到index的cell位置。 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(self.selectedAnimationDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:targetIndex inSection:0] atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES]; + }); + } else { + [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:targetIndex inSection:0] atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES]; + } + + if (selectedType == JXCategoryCellSelectedTypeClick || + selectedType == JXCategoryCellSelectedTypeCode) { + CGPoint offset = self.contentScrollView.contentOffset; + offset.x = + targetIndex*self.contentScrollView.bounds.size.width; + [self.contentScrollView setContentOffset:offset + animated:self.isContentScrollViewClickTransitionAnimationEnabled]; + } + + self.selectedIndex = targetIndex; + if (selectedType == JXCategoryCellSelectedTypeCode) { + [self.listContainer didClickSelectedItemAtIndex:targetIndex]; + } else if (selectedType == JXCategoryCellSelectedTypeClick) { + [self.listContainer didClickSelectedItemAtIndex:targetIndex]; + if (self.delegateFlags.didClickSelectedItemAtIndexFlag) { + [self.delegate categoryView:self didClickSelectedItemAtIndex:targetIndex]; + } + } else if(selectedType == JXCategoryCellSelectedTypeScroll) { + if (self.delegateFlags.didScrollSelectedItemAtIndexFlag) { + [self.delegate categoryView:self didScrollSelectedItemAtIndex:targetIndex]; + } + } + if (self.delegateFlags.didSelectedItemAtIndexFlag) { + [self.delegate categoryView:self didSelectedItemAtIndex:targetIndex]; + } + self.scrollingTargetIndex = -1; + + return YES; +} + + +- (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel { + selectedCellModel.selected = YES; + unselectedCellModel.selected = NO; + + if (self.isCellWidthZoomEnabled) { + if (selectedCellModel.selectedType == JXCategoryCellSelectedTypeCode || + selectedCellModel.selectedType == JXCategoryCellSelectedTypeClick) { + self.animator = [[JXCategoryViewAnimator alloc] init]; + self.animator.duration = self.selectedAnimationDuration; + __weak typeof(self) weakSelf = self; + self.animator.progressCallback = ^(CGFloat percent) { + selectedCellModel.transitionAnimating = YES; + unselectedCellModel.transitionAnimating = YES; + selectedCellModel.cellWidthCurrentZoomScale = [JXCategoryFactory interpolationFrom:selectedCellModel.cellWidthNormalZoomScale to:selectedCellModel.cellWidthSelectedZoomScale percent:percent]; + selectedCellModel.cellWidth = [weakSelf getCellWidthAtIndex:selectedCellModel.index] * selectedCellModel.cellWidthCurrentZoomScale; + unselectedCellModel.cellWidthCurrentZoomScale = [JXCategoryFactory interpolationFrom:unselectedCellModel.cellWidthSelectedZoomScale to:unselectedCellModel.cellWidthNormalZoomScale percent:percent]; + unselectedCellModel.cellWidth = [weakSelf getCellWidthAtIndex:unselectedCellModel.index] * unselectedCellModel.cellWidthCurrentZoomScale; + [weakSelf.collectionView.collectionViewLayout invalidateLayout]; + }; + self.animator.completeCallback = ^{ + selectedCellModel.transitionAnimating = NO; + unselectedCellModel.transitionAnimating = NO; + }; + [self.animator start]; + } else { + selectedCellModel.cellWidthCurrentZoomScale = selectedCellModel.cellWidthSelectedZoomScale; + selectedCellModel.cellWidth = [self getCellWidthAtIndex:selectedCellModel.index] * selectedCellModel.cellWidthCurrentZoomScale; + unselectedCellModel.cellWidthCurrentZoomScale = unselectedCellModel.cellWidthNormalZoomScale; + unselectedCellModel.cellWidth = [self getCellWidthAtIndex:unselectedCellModel.index] * unselectedCellModel.cellWidthCurrentZoomScale; + } + } +} + +- (void)contentOffsetOfContentScrollViewDidChanged:(CGPoint)contentOffset { + if (self.dataSource.count == 0) { + return; + } + CGFloat ratio = contentOffset.x/self.contentScrollView.bounds.size.width; + if (ratio > self.dataSource.count - 1 || ratio < 0) { + //超过了边界,不需要处理 + return; + } + if (contentOffset.x == 0 && self.selectedIndex == 0 && self.lastContentViewContentOffset.x == 0) { + //滚动到了最左边,且已经选中了第一个,且之前的contentOffset.x为0 + return; + } + CGFloat maxContentOffsetX = self.contentScrollView.contentSize.width - self.contentScrollView.bounds.size.width; + if (contentOffset.x == maxContentOffsetX && self.selectedIndex == self.dataSource.count - 1 && self.lastContentViewContentOffset.x == maxContentOffsetX) { + //滚动到了最右边,且已经选中了最后一个,且之前的contentOffset.x为maxContentOffsetX + return; + } + ratio = MAX(0, MIN(self.dataSource.count - 1, ratio)); + NSInteger baseIndex = floorf(ratio); + CGFloat remainderRatio = ratio - baseIndex; + + if (remainderRatio == 0) { + //快速滑动翻页,用户一直在拖拽contentScrollView,需要更新选中状态 + //滑动一小段距离,然后放开回到原位,contentOffset同样的值会回调多次。例如在index为1的情况,滑动放开回到原位,contentOffset会多次回调CGPoint(width, 0) + if (!(self.lastContentViewContentOffset.x == contentOffset.x && self.selectedIndex == baseIndex)) { + [self scrollSelectItemAtIndex:baseIndex]; + } + } else { + self.needReloadByBecomeActive = YES; + if (self.animator.isExecuting) { + [self.animator invalid]; + //需要重置之前animator.progessCallback为处理完的状态 + for (JXCategoryBaseCellModel *model in self.dataSource) { + if (model.isSelected) { + model.cellWidthCurrentZoomScale = model.cellWidthSelectedZoomScale; + model.cellWidth = [self getCellWidthAtIndex:model.index] * model.cellWidthCurrentZoomScale; + }else { + model.cellWidthCurrentZoomScale = model.cellWidthNormalZoomScale; + model.cellWidth = [self getCellWidthAtIndex:model.index] * model.cellWidthCurrentZoomScale; + } + } + } + //快速滑动翻页,当remainderRatio没有变成0,但是已经翻页了,需要通过下面的判断,触发选中 + if (fabs(ratio - self.selectedIndex) > 1) { + NSInteger targetIndex = baseIndex; + if (ratio < self.selectedIndex) { + targetIndex = baseIndex + 1; + } + [self scrollSelectItemAtIndex:targetIndex]; + } + + if (self.selectedIndex == baseIndex) { + self.scrollingTargetIndex = baseIndex + 1; + } else { + self.scrollingTargetIndex = baseIndex; + } + + if (self.isCellWidthZoomEnabled && self.isCellWidthZoomScrollGradientEnabled) { + JXCategoryBaseCellModel *leftCellModel = (JXCategoryBaseCellModel *)self.dataSource[baseIndex]; + JXCategoryBaseCellModel *rightCellModel = (JXCategoryBaseCellModel *)self.dataSource[baseIndex + 1]; + leftCellModel.cellWidthCurrentZoomScale = [JXCategoryFactory interpolationFrom:leftCellModel.cellWidthSelectedZoomScale to:leftCellModel.cellWidthNormalZoomScale percent:remainderRatio]; + leftCellModel.cellWidth = [self getCellWidthAtIndex:leftCellModel.index] * leftCellModel.cellWidthCurrentZoomScale; + rightCellModel.cellWidthCurrentZoomScale = [JXCategoryFactory interpolationFrom:rightCellModel.cellWidthNormalZoomScale to:rightCellModel.cellWidthSelectedZoomScale percent:remainderRatio]; + rightCellModel.cellWidth = [self getCellWidthAtIndex:rightCellModel.index] * rightCellModel.cellWidthCurrentZoomScale; + [self.collectionView.collectionViewLayout invalidateLayout]; + } + + if (self.delegateFlags.scrollingFromLeftIndexToRightIndexFlag) { + [self.delegate categoryView:self scrollingFromLeftIndex:baseIndex toRightIndex:baseIndex + 1 ratio:remainderRatio]; + } + } +} + +- (CGFloat)preferredCellWidthAtIndex:(NSInteger)index { + return 0; +} + +- (Class)preferredCellClass { + return JXCategoryBaseCell.class; +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + +} + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.h b/Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.h new file mode 100644 index 0000000..dcf1ccb --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.h @@ -0,0 +1,24 @@ +// +// JXCategoryCollectionView.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/21. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXCategoryIndicatorProtocol.h" +@class JXCategoryCollectionView; + +@protocol JXCategoryCollectionViewGestureDelegate +@optional +- (BOOL)categoryCollectionView:(JXCategoryCollectionView *)collectionView gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer; +- (BOOL)categoryCollectionView:(JXCategoryCollectionView *)collectionView gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; +@end + +@interface JXCategoryCollectionView : UICollectionView + +@property (nonatomic, strong) NSArray *> *indicators; +@property (nonatomic, weak) id gestureDelegate; + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.m b/Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.m new file mode 100644 index 0000000..e8d4829 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.m @@ -0,0 +1,52 @@ +// +// JXCategoryCollectionView.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/21. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryCollectionView.h" + +@interface JXCategoryCollectionView () +@end + +@implementation JXCategoryCollectionView + +- (void)setIndicators:(NSArray *> *)indicators { + for (UIView *indicator in _indicators) { + //先移除之前的indicator + [indicator removeFromSuperview]; + } + + _indicators = indicators; + + for (UIView *indicator in indicators) { + [self addSubview:indicator]; + } +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + for (UIView *view in self.indicators) { + [self sendSubviewToBack:view]; + } +} + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { + if (self.gestureDelegate && [self.gestureDelegate respondsToSelector:@selector(categoryCollectionView:gestureRecognizerShouldBegin:)]) { + return [self.gestureDelegate categoryCollectionView:self gestureRecognizerShouldBegin:gestureRecognizer]; + } + return YES; +} + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + if (self.gestureDelegate && [self.gestureDelegate respondsToSelector:@selector(categoryCollectionView:gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:)]) { + return [self.gestureDelegate categoryCollectionView:self gestureRecognizer:gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer]; + } + return NO; +} + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryFactory.h b/Pods/JXCategoryView/Sources/Common/JXCategoryFactory.h new file mode 100644 index 0000000..ef28f7e --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryFactory.h @@ -0,0 +1,18 @@ +// +// JXCategoryFactory.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import + +@interface JXCategoryFactory : NSObject + ++ (CGFloat)interpolationFrom:(CGFloat)from to:(CGFloat)to percent:(CGFloat)percent; + ++ (UIColor *)interpolationColorFrom:(UIColor *)fromColor to:(UIColor *)toColor percent:(CGFloat)percent; + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryFactory.m b/Pods/JXCategoryView/Sources/Common/JXCategoryFactory.m new file mode 100644 index 0000000..c71451e --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryFactory.m @@ -0,0 +1,29 @@ +// +// JXCategoryFactory.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryFactory.h" +#import "UIColor+JXAdd.h" + +@implementation JXCategoryFactory + ++ (CGFloat)interpolationFrom:(CGFloat)from to:(CGFloat)to percent:(CGFloat)percent +{ + percent = MAX(0, MIN(1, percent)); + return from + (to - from)*percent; +} + ++ (UIColor *)interpolationColorFrom:(UIColor *)fromColor to:(UIColor *)toColor percent:(CGFloat)percent +{ + CGFloat red = [self interpolationFrom:fromColor.jx_red to:toColor.jx_red percent:percent]; + CGFloat green = [self interpolationFrom:fromColor.jx_green to:toColor.jx_green percent:percent]; + CGFloat blue = [self interpolationFrom:fromColor.jx_blue to:toColor.jx_blue percent:percent]; + CGFloat alpha = [self interpolationFrom:fromColor.jx_alpha to:toColor.jx_alpha percent:percent]; + return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; +} + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.h b/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.h new file mode 100644 index 0000000..00da754 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.h @@ -0,0 +1,31 @@ +// +// JXCategoryIndicatorParamsModel.h +// JXCategoryView +// +// Created by jiaxin on 2018/12/13. +// Copyright © 2018 jiaxin. All rights reserved. +// + +#import +#import +#import "JXCategoryViewDefines.h" + +/** + 指示器不同情况处理时传递的数据模型,不同情况会对不同的属性赋值,根据不同情况的 api 说明确认。 + + FAQ: 为什么会通过 model 传递数据? + 因为指示器处理逻辑以后会扩展不同的使用场景,会新增参数,如果不通过 model 传递,就会在 api 新增参数,一旦修改 api 改的地方就特别多了,而且会影响到之前自定义实现的开发者。 + */ +@interface JXCategoryIndicatorParamsModel : NSObject + +@property (nonatomic, assign) NSInteger selectedIndex; // 当前选中的 index +@property (nonatomic, assign) CGRect selectedCellFrame; // 当前选中的 cellFrame +@property (nonatomic, assign) NSInteger leftIndex; // 正在过渡中的两个 cell,相对位置在左边的 cell 的 index +@property (nonatomic, assign) CGRect leftCellFrame; // 正在过渡中的两个 cell,相对位置在左边的 cell 的 frame +@property (nonatomic, assign) NSInteger rightIndex; // 正在过渡中的两个 cell,相对位置在右边的 cell 的 index +@property (nonatomic, assign) CGRect rightCellFrame; // 正在过渡中的两个 cell,相对位置在右边的 cell 的 frame +@property (nonatomic, assign) CGFloat percent; // 正在过渡中的两个 cell,从左到右的百分比 +@property (nonatomic, assign) NSInteger lastSelectedIndex; // 之前选中的 index +@property (nonatomic, assign) JXCategoryCellSelectedType selectedType; //cell 被选中类型 + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.m b/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.m new file mode 100644 index 0000000..8a0eff0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryIndicatorParamsModel.m +// JXCategoryView +// +// Created by jiaxin on 2018/12/13. +// Copyright © 2018 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorParamsModel.h" + +@implementation JXCategoryIndicatorParamsModel + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorProtocol.h b/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorProtocol.h new file mode 100644 index 0000000..b4f9ff0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorProtocol.h @@ -0,0 +1,49 @@ +// +// JXCategoryIndicatorProtocol.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import +#import "JXCategoryViewDefines.h" +#import "JXCategoryIndicatorParamsModel.h" + +@protocol JXCategoryIndicatorProtocol + +/** + categoryView 重置状态时调用 + + param selectedIndex 当前选中的 index + param selectedCellFrame 当前选中的 cellFrame + @param model 数据模型 + */ +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model; + +/** + contentScrollView在进行手势滑动时,处理指示器跟随手势变化UI逻辑; + + param selectedIndex 当前选中的index + param leftIndex 正在过渡中的两个cell,相对位置在左边的cell的index + param leftCellFrame 正在过渡中的两个cell,相对位置在左边的cell的frame + param rightIndex 正在过渡中的两个cell,相对位置在右边的cell的index + param rightCellFrame 正在过渡中的两个cell,相对位置在右边的cell的frame + param percent 过渡百分比 + @param model 数据模型 + */ +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model; + +/** + 选中了某一个cell + + param lastSelectedIndex 之前选中的index + param selectedIndex 选中的index + param selectedCellFrame 选中的cellFrame + param selectedType cell被选中类型 + @param model 数据模型 + */ +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model; + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.h b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.h new file mode 100644 index 0000000..75243b4 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.h @@ -0,0 +1,16 @@ +// +// JXCategoryListContainerRTLCell.h +// JXCategoryView +// +// Created by jiaxin on 2020/7/3. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JXCategoryListContainerRTLCell : UICollectionViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.m b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.m new file mode 100644 index 0000000..403efa9 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.m @@ -0,0 +1,23 @@ +// +// JXCategoryListContainerRTLCell.m +// JXCategoryView +// +// Created by jiaxin on 2020/7/3. +// + +#import "JXCategoryListContainerRTLCell.h" +#import "RTLManager.h" + +@implementation JXCategoryListContainerRTLCell + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [RTLManager horizontalFlipViewIfNeeded:self]; + [RTLManager horizontalFlipViewIfNeeded:self.contentView]; + } + return self; +} + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.h b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.h new file mode 100644 index 0000000..215b3a9 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.h @@ -0,0 +1,122 @@ +// +// JXCategoryListScrollView.h +// JXCategoryView +// +// Created by jiaxin on 2018/9/12. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXCategoryViewDefines.h" +#import "JXCategoryBaseView.h" +@class JXCategoryListContainerView; + +/** + 列表容器视图的类型 + + - ScrollView: UIScrollView。优势:没有其他副作用。劣势:视图内存占用相对大一点。 + - CollectionView: 使用UICollectionView。优势:因为列表被添加到cell上,视图的内存占用更少,适合内存要求特别高的场景。劣势:因为cell重用机制的问题,导致列表下拉刷新视图,会因为被removeFromSuperview而被隐藏。需要参考`LoadDataListCollectionListViewController`类做特殊处理。 + */ +typedef NS_ENUM(NSUInteger, JXCategoryListContainerType) { + JXCategoryListContainerType_ScrollView, + JXCategoryListContainerType_CollectionView, +}; + +@protocol JXCategoryListContentViewDelegate + +/** + 如果列表是VC,就返回VC.view + 如果列表是View,就返回View自己 + + @return 返回列表视图 + */ +- (UIView *)listView; + +@optional + +/** + 可选实现,列表将要显示的时候调用 + */ +- (void)listWillAppear; + +/** + 可选实现,列表显示的时候调用 + */ +- (void)listDidAppear; + +/** + 可选实现,列表将要消失的时候调用 + */ +- (void)listWillDisappear; + +/** + 可选实现,列表消失的时候调用 + */ +- (void)listDidDisappear; + +@end + +@protocol JXCategoryListContainerViewDelegate +/** + 返回list的数量 + + @param listContainerView 列表的容器视图 + @return list的数量 + */ +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView; + +/** + 根据index返回一个对应列表实例,需要是遵从`JXCategoryListContentViewDelegate`协议的对象。 + 你可以代理方法调用的时候初始化对应列表,达到懒加载的效果。这也是默认推荐的初始化列表方法。你也可以提前创建好列表,等该代理方法回调的时候再返回也可以,达到预加载的效果。 + 如果列表是用自定义UIView封装的,就让自定义UIView遵从`JXCategoryListContentViewDelegate`协议,该方法返回自定义UIView即可。 + 如果列表是用自定义UIViewController封装的,就让自定义UIViewController遵从`JXCategoryListContentViewDelegate`协议,该方法返回自定义UIViewController即可。 + + @param listContainerView 列表的容器视图 + @param index 目标下标 + @return 遵从JXCategoryListContentViewDelegate协议的list实例 + */ +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index; + +@optional +/** + 返回自定义UIScrollView或UICollectionView的Class + 某些特殊情况需要自己处理UIScrollView内部逻辑。比如项目用了FDFullscreenPopGesture,需要处理手势相关代理。 + + @param listContainerView JXCategoryListContainerView + @return 自定义UIScrollView实例 + */ +- (Class)scrollViewClassInlistContainerView:(JXCategoryListContainerView *)listContainerView; + +/** + 控制能否初始化对应index的列表。有些业务需求,需要在某些情况才允许初始化某些列表,通过通过该代理实现控制。 + */ +- (BOOL)listContainerView:(JXCategoryListContainerView *)listContainerView canInitListAtIndex:(NSInteger)index; + +- (void)listContainerViewDidScroll:(UIScrollView *)scrollView; +- (void)listContainerViewWillBeginDragging:(UIScrollView *)scrollView; +- (void)listContainerViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; +- (void)listContainerViewWillBeginDecelerating:(UIScrollView *)scrollView; +- (void)listContainerViewDidEndDecelerating:(UIScrollView *)scrollView; + +@end + + +@interface JXCategoryListContainerView : UIView + +@property (nonatomic, assign, readonly) JXCategoryListContainerType containerType; +@property (nonatomic, strong, readonly) UIScrollView *scrollView; +@property (nonatomic, strong, readonly) NSDictionary > *validListDict; //已经加载过的列表字典。key是index,value是对应的列表 +@property (nonatomic, strong) UIColor *listCellBackgroundColor; //默认:[UIColor whiteColor] +/** + 滚动切换的时候,滚动距离超过一页的多少百分比,就触发列表的初始化。默认0.01(即列表显示了一点就触发加载)。范围0~1,开区间不包括0和1 + */ +@property (nonatomic, assign) CGFloat initListPercent; +@property (nonatomic, assign) BOOL bounces; //默认NO + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; +- (instancetype)initWithType:(JXCategoryListContainerType)type delegate:(id)delegate NS_DESIGNATED_INITIALIZER; + +@end + diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.m b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.m new file mode 100644 index 0000000..42081b1 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.m @@ -0,0 +1,547 @@ +// +// JXCategoryListContainerView.m +// JXCategoryView +// +// Created by jiaxin on 2018/9/12. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryListContainerView.h" +#import +#import "RTLManager.h" + +@interface JXCategoryListContainerViewController : UIViewController +@property (copy) void(^viewWillAppearBlock)(void); +@property (copy) void(^viewDidAppearBlock)(void); +@property (copy) void(^viewWillDisappearBlock)(void); +@property (copy) void(^viewDidDisappearBlock)(void); +@end + +@implementation JXCategoryListContainerViewController +- (void)dealloc +{ + self.viewWillAppearBlock = nil; + self.viewDidAppearBlock = nil; + self.viewWillDisappearBlock = nil; + self.viewDidDisappearBlock = nil; +} +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + self.viewWillAppearBlock(); +} +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + self.viewDidAppearBlock(); +} +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + self.viewWillDisappearBlock(); +} +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + self.viewDidDisappearBlock(); +} +- (BOOL)shouldAutomaticallyForwardAppearanceMethods { return NO; } +@end + +@interface JXCategoryListContainerView () +@property (nonatomic, weak) id delegate; +@property (nonatomic, strong) UIScrollView *scrollView; +@property (nonatomic, assign) NSInteger currentIndex; +@property (nonatomic, strong) NSMutableDictionary > *validListDict; +@property (nonatomic, assign) NSInteger willAppearIndex; +@property (nonatomic, assign) NSInteger willDisappearIndex; +@property (nonatomic, strong) UICollectionView *collectionView; +@property (nonatomic, strong) JXCategoryListContainerViewController *containerVC; +@end + +@implementation JXCategoryListContainerView + +- (instancetype)initWithType:(JXCategoryListContainerType)type delegate:(id)delegate{ + self = [super initWithFrame:CGRectZero]; + if (self) { + _containerType = type; + _delegate = delegate; + _validListDict = [NSMutableDictionary dictionary]; + _willAppearIndex = -1; + _willDisappearIndex = -1; + _initListPercent = 0.01; + [self initializeViews]; + } + return self; +} + +- (void)initializeViews { + _listCellBackgroundColor = [UIColor whiteColor]; + _containerVC = [[JXCategoryListContainerViewController alloc] init]; + self.containerVC.view.backgroundColor = [UIColor clearColor]; + [self addSubview:self.containerVC.view]; + __weak typeof(self) weakSelf = self; + self.containerVC.viewWillAppearBlock = ^{ + [weakSelf listWillAppear:weakSelf.currentIndex]; + }; + self.containerVC.viewDidAppearBlock = ^{ + [weakSelf listDidAppear:weakSelf.currentIndex]; + }; + self.containerVC.viewWillDisappearBlock = ^{ + [weakSelf listWillDisappear:weakSelf.currentIndex]; + }; + self.containerVC.viewDidDisappearBlock = ^{ + [weakSelf listDidDisappear:weakSelf.currentIndex]; + }; + if (self.containerType == JXCategoryListContainerType_ScrollView) { + if (self.delegate && + [self.delegate respondsToSelector:@selector(scrollViewClassInlistContainerView:)] && + [[self.delegate scrollViewClassInlistContainerView:self] isKindOfClass:object_getClass([UIScrollView class])]) { + _scrollView = (UIScrollView *)[[[self.delegate scrollViewClassInlistContainerView:self] alloc] init]; + }else { + _scrollView = [[UIScrollView alloc] init]; + } + self.scrollView.delegate = self; + self.scrollView.pagingEnabled = YES; + self.scrollView.showsHorizontalScrollIndicator = NO; + self.scrollView.showsVerticalScrollIndicator = NO; + self.scrollView.scrollsToTop = NO; + self.scrollView.bounces = NO; + if (@available(iOS 11.0, *)) { + if ([self.scrollView respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) { + self.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + } + [RTLManager horizontalFlipViewIfNeeded:self.scrollView]; + [self.containerVC.view addSubview:self.scrollView]; + }else { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 0; + layout.minimumInteritemSpacing = 0; + if (self.delegate && + [self.delegate respondsToSelector:@selector(scrollViewClassInlistContainerView:)] && + [[self.delegate scrollViewClassInlistContainerView:self] isKindOfClass:object_getClass([UICollectionView class])]) { + _collectionView = (UICollectionView *)[[[self.delegate scrollViewClassInlistContainerView:self] alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + }else { + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + } + self.collectionView.pagingEnabled = YES; + self.collectionView.showsHorizontalScrollIndicator = NO; + self.collectionView.showsVerticalScrollIndicator = NO; + self.collectionView.scrollsToTop = NO; + self.collectionView.bounces = NO; + self.collectionView.dataSource = self; + self.collectionView.delegate = self; + [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"]; + if (@available(iOS 10.0, *)) { + self.collectionView.prefetchingEnabled = NO; + } + if (@available(iOS 11.0, *)) { + if ([self.collectionView respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) { + self.collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + } + if ([RTLManager supportRTL]) { + self.collectionView.semanticContentAttribute = UISemanticContentAttributeForceLeftToRight; + [RTLManager horizontalFlipView:self.collectionView]; + } + [self.containerVC.view addSubview:self.collectionView]; + //让外部统一访问scrollView + _scrollView = _collectionView; + } +} + +- (void)willMoveToSuperview:(UIView *)newSuperview { + [super willMoveToSuperview:newSuperview]; + + UIResponder *next = newSuperview; + while (next != nil) { + if ([next isKindOfClass:[UIViewController class]]) { + [((UIViewController *)next) addChildViewController:self.containerVC]; + break; + } + next = next.nextResponder; + } +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + self.containerVC.view.frame = self.bounds; + if (self.containerType == JXCategoryListContainerType_ScrollView) { + if (CGRectEqualToRect(self.scrollView.frame, CGRectZero) || !CGSizeEqualToSize(self.scrollView.bounds.size, self.bounds.size)) { + self.scrollView.frame = self.bounds; + self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width*[self.delegate numberOfListsInlistContainerView:self], self.scrollView.bounds.size.height); + [_validListDict enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull index, id _Nonnull list, BOOL * _Nonnull stop) { + [list listView].frame = CGRectMake(index.intValue*self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height); + }]; + CGPoint scrollViewContentOffset = self.scrollView.contentOffset; + scrollViewContentOffset.x = self.currentIndex*self.scrollView.bounds.size.width; + self.scrollView.contentOffset = scrollViewContentOffset; + }else { + self.scrollView.frame = self.bounds; + self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width*[self.delegate numberOfListsInlistContainerView:self], self.scrollView.bounds.size.height); + } + }else { + if (CGRectEqualToRect(self.collectionView.frame, CGRectZero) || !CGSizeEqualToSize(self.collectionView.bounds.size, self.bounds.size)) { + [self.collectionView.collectionViewLayout invalidateLayout]; + self.collectionView.frame = self.bounds; + [self.collectionView reloadData]; + CGPoint collectionViewContentOffset = self.collectionView.contentOffset; + collectionViewContentOffset.x = + self.collectionView.bounds.size.width*self.currentIndex; + [self.collectionView setContentOffset:collectionViewContentOffset animated:NO]; + }else { + self.collectionView.frame = self.bounds; + } + } +} + + +- (void)setinitListPercent:(CGFloat)initListPercent { + _initListPercent = initListPercent; + if (initListPercent <= 0 || initListPercent >= 1) { + NSAssert(NO, @"initListPercent值范围为开区间(0,1),即不包括0和1"); + } +} + +- (void)setBounces:(BOOL)bounces { + _bounces = bounces; + self.scrollView.bounces = bounces; +} + +#pragma mark - UICollectionViewDelegate, UICollectionViewDataSource + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return [self.delegate numberOfListsInlistContainerView:self]; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath]; + cell.contentView.backgroundColor = self.listCellBackgroundColor; + + UIView* listView = nil; + id list = _validListDict[@(indexPath.item)]; + if (list != nil) { + //fixme:如果list是UIViewController,如果这里的frame修改是`[list listView].frame = cell.bounds;`。那么就必须给list vc添加如下代码: + //- (void)loadView { + // self.view = [[UIView alloc] init]; + //} + //所以,总感觉是把UIViewController当做普通view使用,导致了系统内部的bug。所以,缓兵之计就是用下面的方法,暂时解决问题。 + listView = [list listView]; + if ([list isKindOfClass:[UIViewController class]]) { + listView.frame = cell.contentView.bounds; + } else { + listView.frame = cell.bounds; + } + } + + BOOL isAdded = NO; + for (UIView *subview in cell.contentView.subviews) { + if( listView != subview ) { + [subview removeFromSuperview]; + } else { + isAdded = YES; + } + } + + if( !isAdded && listView ) { + [cell.contentView addSubview:listView]; + } + + // 针对 RTL 布局 + if ([UIView userInterfaceLayoutDirectionForSemanticContentAttribute:self.semanticContentAttribute] + == UIUserInterfaceLayoutDirectionRightToLeft) { + cell.contentView.transform = CGAffineTransformMakeScale(-1, 1); + } + + return cell; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return self.bounds.size; +} + +#pragma mark - UIScrollViewDelegate + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewDidScroll:)]) { + [self.delegate listContainerViewDidScroll:scrollView]; + } + + if (!scrollView.isDragging && !scrollView.isTracking && !scrollView.isDecelerating) { + return; + } + CGFloat ratio = scrollView.contentOffset.x/scrollView.bounds.size.width; + NSInteger maxCount = round(scrollView.contentSize.width/scrollView.bounds.size.width); + NSInteger leftIndex = floorf(ratio); + leftIndex = MAX(0, MIN(maxCount - 1, leftIndex)); + NSInteger rightIndex = leftIndex + 1; + if (ratio < 0 || rightIndex >= maxCount) { + [self listDidAppearOrDisappear:scrollView]; + return; + } + CGFloat remainderRatio = ratio - leftIndex; + if (rightIndex == self.currentIndex) { + //当前选中的在右边,用户正在从右边往左边滑动 + if (self.validListDict[@(leftIndex)] == nil && remainderRatio < (1 - self.initListPercent)) { + [self initListIfNeededAtIndex:leftIndex]; + }else if (self.validListDict[@(leftIndex)] != nil) { + if (self.willAppearIndex == -1) { + self.willAppearIndex = leftIndex; + [self listWillAppear:self.willAppearIndex]; + } + } + if (self.willDisappearIndex == -1) { + self.willDisappearIndex = rightIndex; + [self listWillDisappear:self.willDisappearIndex]; + } + }else { + //当前选中的在左边,用户正在从左边往右边滑动 + if (self.validListDict[@(rightIndex)] == nil && remainderRatio > self.initListPercent) { + [self initListIfNeededAtIndex:rightIndex]; + }else if (self.validListDict[@(rightIndex)] != nil) { + if (self.willAppearIndex == -1) { + self.willAppearIndex = rightIndex; + [self listWillAppear:self.willAppearIndex]; + } + } + if (self.willDisappearIndex == -1) { + self.willDisappearIndex = leftIndex; + [self listWillDisappear:self.willDisappearIndex]; + } + } + [self listDidAppearOrDisappear:scrollView]; +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + //滑动到一半又取消滑动处理 + if (self.willDisappearIndex != -1) { + [self listWillAppear:self.willDisappearIndex]; + [self listWillDisappear:self.willAppearIndex]; + [self listDidAppear:self.willDisappearIndex]; + [self listDidDisappear:self.willAppearIndex]; + self.willDisappearIndex = -1; + self.willAppearIndex = -1; + } + + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewDidEndDecelerating:)]) { + [self.delegate listContainerViewDidEndDecelerating:scrollView]; + } +} + +- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView +{ + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewWillBeginDragging:)]) { + [self.delegate listContainerViewWillBeginDragging:scrollView]; + } +} + +- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate +{ + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewDidEndDragging:willDecelerate:)]) { + [self.delegate listContainerViewDidEndDragging:scrollView willDecelerate:decelerate]; + } +} + +- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView +{ + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewWillBeginDecelerating:)]) { + [self.delegate listContainerViewWillBeginDecelerating:scrollView]; + } +} + +#pragma mark - JXCategoryViewListContainer + +- (UIScrollView *)contentScrollView { + return self.scrollView; +} + +- (void)setDefaultSelectedIndex:(NSInteger)index { + self.currentIndex = index; +} + +- (void)didClickSelectedItemAtIndex:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + self.willAppearIndex = -1; + self.willDisappearIndex = -1; + if (self.currentIndex != index) { + [self listWillDisappear:self.currentIndex]; + [self listDidDisappear:self.currentIndex]; + [self listWillAppear:index]; + [self listDidAppear:index]; + } +} + +- (void)reloadData { + for (id list in _validListDict.allValues) { + [[list listView] removeFromSuperview]; + if ([list isKindOfClass:[UIViewController class]]) { + [(UIViewController *)list removeFromParentViewController]; + } + } + [_validListDict removeAllObjects]; + + if (self.containerType == JXCategoryListContainerType_ScrollView) { + self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width*[self.delegate numberOfListsInlistContainerView:self], self.scrollView.bounds.size.height); + }else { + [self.collectionView reloadData]; + } + [self listWillAppear:self.currentIndex]; + [self listDidAppear:self.currentIndex]; +} + +#pragma mark - Private + +- (void)initListIfNeededAtIndex:(NSInteger)index { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerView:canInitListAtIndex:)]) { + BOOL canInitList = [self.delegate listContainerView:self canInitListAtIndex:index]; + if (!canInitList) { + return; + } + } + id list = _validListDict[@(index)]; + if (list != nil) { + //列表已经创建好了 + return; + } + list = [self.delegate listContainerView:self initListForIndex:index]; + if ([list isKindOfClass:[UIViewController class]]) { + [self.containerVC addChildViewController:(UIViewController *)list]; + } + _validListDict[@(index)] = list; + + if (self.containerType == JXCategoryListContainerType_ScrollView) { + [list listView].frame = CGRectMake(index*self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height); + [self.scrollView addSubview:[list listView]]; + [RTLManager horizontalFlipViewIfNeeded:[list listView]]; + }else { + UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; + for (UIView *subview in cell.contentView.subviews) { + [subview removeFromSuperview]; + } + [list listView].frame = cell.contentView.bounds; + [cell.contentView addSubview:[list listView]]; + } +} + +- (void)listWillAppear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + id list = _validListDict[@(index)]; + if (list == nil) { + //当前列表未被创建(页面初始化或通过点击触发的listWillAppear) + BOOL canInitList = YES; + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerView:canInitListAtIndex:)]) { + canInitList = [self.delegate listContainerView:self canInitListAtIndex:index]; + } + if (!canInitList) { + return; + } + list = [self.delegate listContainerView:self initListForIndex:index]; + if ([list isKindOfClass:[UIViewController class]]) { + [self.containerVC addChildViewController:(UIViewController *)list]; + } + _validListDict[@(index)] = list; + if (self.containerType == JXCategoryListContainerType_ScrollView) { + if ([list listView].superview == nil) { + [list listView].frame = CGRectMake(index*self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height); + [self.scrollView addSubview:[list listView]]; + [RTLManager horizontalFlipViewIfNeeded:[list listView]]; + } + }else { + UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; + for (UIView *subview in cell.contentView.subviews) { + [subview removeFromSuperview]; + } + [list listView].frame = cell.contentView.bounds; + [cell.contentView addSubview:[list listView]]; + } + } + + if (list && [list respondsToSelector:@selector(listWillAppear)]) { + [list listWillAppear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC beginAppearanceTransition:YES animated:NO]; + } +} + +- (void)listDidAppear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + self.currentIndex = index; + id list = _validListDict[@(index)]; + if (list && [list respondsToSelector:@selector(listDidAppear)]) { + [list listDidAppear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC endAppearanceTransition]; + } +} + +- (void)listWillDisappear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + id list = _validListDict[@(index)]; + if (list && [list respondsToSelector:@selector(listWillDisappear)]) { + [list listWillDisappear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC beginAppearanceTransition:NO animated:NO]; + } +} + +- (void)listDidDisappear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + id list = _validListDict[@(index)]; + if (list && [list respondsToSelector:@selector(listDidDisappear)]) { + [list listDidDisappear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC endAppearanceTransition]; + } +} + +- (BOOL)checkIndexValid:(NSInteger)index { + NSUInteger count = [self.delegate numberOfListsInlistContainerView:self]; + if (count <= 0 || index >= count) { + return NO; + } + return YES; +} + +- (void)listDidAppearOrDisappear:(UIScrollView *)scrollView { + CGFloat currentIndexPercent = scrollView.contentOffset.x/scrollView.bounds.size.width; + if (self.willAppearIndex != -1 || self.willDisappearIndex != -1) { + NSInteger disappearIndex = self.willDisappearIndex; + NSInteger appearIndex = self.willAppearIndex; + if (self.willAppearIndex > self.willDisappearIndex) { + //将要出现的列表在右边 + if (currentIndexPercent >= self.willAppearIndex) { + self.willDisappearIndex = -1; + self.willAppearIndex = -1; + [self listDidDisappear:disappearIndex]; + [self listDidAppear:appearIndex]; + } + }else { + //将要出现的列表在左边 + if (currentIndexPercent <= self.willAppearIndex) { + self.willDisappearIndex = -1; + self.willAppearIndex = -1; + [self listDidDisappear:disappearIndex]; + [self listDidAppear:appearIndex]; + } + } + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.h b/Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.h new file mode 100644 index 0000000..2c7acae --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.h @@ -0,0 +1,24 @@ +// +// JXCategoryViewAnimator.h +// JXCategoryView +// +// Created by jiaxin on 2019/1/24. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import +#import + +@interface JXCategoryViewAnimator : NSObject + +@property (nonatomic, assign) NSTimeInterval duration; +@property (nonatomic, copy) void(^progressCallback)(CGFloat percent); +@property (nonatomic, copy) void(^completeCallback)(void); +@property (readonly, getter=isExecuting) BOOL executing; + +- (void)start; +- (void)stop; +- (void)invalid; + +@end + diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.m b/Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.m new file mode 100644 index 0000000..fc26144 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.m @@ -0,0 +1,75 @@ +// +// JXCategoryViewAnimator.m +// JXCategoryView +// +// Created by jiaxin on 2019/1/24. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryViewAnimator.h" + +@interface JXCategoryViewAnimator () +@property (nonatomic, strong) CADisplayLink *displayLink; +@property (nonatomic, assign) CFTimeInterval firstTimestamp; +@property (readwrite, getter=isExecuting) BOOL executing; +@end + +@implementation JXCategoryViewAnimator + +#pragma mark - Initialize + +- (void)dealloc { + self.progressCallback = nil; + self.completeCallback = nil; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _executing = NO; + _duration = 0.25; + _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(processDisplayLink:)]; + } + return self; +} + +#pragma mark - Public + +- (void)start { + [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; + self.executing = YES; +} + +- (void)stop { + !self.progressCallback ?: self.progressCallback(1); + [self.displayLink invalidate]; + !self.completeCallback ?: self.completeCallback(); + self.executing = NO; +} + +- (void)invalid { + [self.displayLink invalidate]; + !self.completeCallback ?: self.completeCallback(); + self.executing = NO; +} + +#pragma mark - Actions + +- (void)processDisplayLink:(CADisplayLink *)sender { + if (self.firstTimestamp == 0) { + self.firstTimestamp = sender.timestamp; + return; + } + CGFloat percent = (sender.timestamp - self.firstTimestamp)/self.duration; + if (percent >= 1) { + !self.progressCallback ?: self.progressCallback(percent); + [self.displayLink invalidate]; + !self.completeCallback ?: self.completeCallback(); + self.executing = NO; + }else { + !self.progressCallback ?: self.progressCallback(percent); + self.executing = YES; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryViewDefines.h b/Pods/JXCategoryView/Sources/Common/JXCategoryViewDefines.h new file mode 100644 index 0000000..ec3a60c --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryViewDefines.h @@ -0,0 +1,43 @@ +// +// JXCategoryViewDefines.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import + +static const CGFloat JXCategoryViewAutomaticDimension = -1; + +typedef void(^JXCategoryCellSelectedAnimationBlock)(CGFloat percent); + +// 指示器的位置 +typedef NS_ENUM(NSUInteger, JXCategoryComponentPosition) { + JXCategoryComponentPosition_Bottom, + JXCategoryComponentPosition_Top +}; + +// cell 被选中的类型 +typedef NS_ENUM(NSUInteger, JXCategoryCellSelectedType) { + JXCategoryCellSelectedTypeUnknown, // 未知,不是选中(cellForRow方法里面、两个cell过渡时) + JXCategoryCellSelectedTypeClick, // 点击选中 + JXCategoryCellSelectedTypeCode, // 调用方法 selectItemAtIndex: 选中 + JXCategoryCellSelectedTypeScroll // 通过滚动到某个 cell 选中 +}; + +// cell 标题锚点位置 +typedef NS_ENUM(NSUInteger, JXCategoryTitleLabelAnchorPointStyle) { + JXCategoryTitleLabelAnchorPointStyleCenter, + JXCategoryTitleLabelAnchorPointStyleTop, + JXCategoryTitleLabelAnchorPointStyleBottom +}; + +// 指示器滚动样式 +typedef NS_ENUM(NSUInteger, JXCategoryIndicatorScrollStyle) { + JXCategoryIndicatorScrollStyleSimple, // 简单滚动,即从当前位置过渡到目标位置 + JXCategoryIndicatorScrollStyleSameAsUserScroll // 和用户左右滚动列表时的效果一样 +}; + +#define JXCategoryViewDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead) diff --git a/Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.h b/Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.h new file mode 100644 index 0000000..06e1c14 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.h @@ -0,0 +1,18 @@ +// +// UIColor+JXAdd.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/21. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import + +@interface UIColor (JXAdd) + +@property (nonatomic, assign, readonly) CGFloat jx_red; +@property (nonatomic, assign, readonly) CGFloat jx_green; +@property (nonatomic, assign, readonly) CGFloat jx_blue; +@property (nonatomic, assign, readonly) CGFloat jx_alpha; + +@end diff --git a/Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.m b/Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.m new file mode 100644 index 0000000..f76c11b --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.m @@ -0,0 +1,35 @@ +// +// UIColor+JXAdd.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/21. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "UIColor+JXAdd.h" + +@implementation UIColor (JXAdd) + +- (CGFloat)jx_red { + CGFloat r = 0, g, b, a; + [self getRed:&r green:&g blue:&b alpha:&a]; + return r; +} + +- (CGFloat)jx_green { + CGFloat r, g = 0, b, a; + [self getRed:&r green:&g blue:&b alpha:&a]; + return g; +} + +- (CGFloat)jx_blue { + CGFloat r, g, b = 0, a; + [self getRed:&r green:&g blue:&b alpha:&a]; + return b; +} + +- (CGFloat)jx_alpha { + return CGColorGetAlpha(self.CGColor); +} + +@end diff --git a/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.h b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.h new file mode 100644 index 0000000..14d3019 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.h @@ -0,0 +1,13 @@ +// +// JXCategoryDotCell.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCell.h" + +@interface JXCategoryDotCell : JXCategoryTitleCell + +@end diff --git a/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.m b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.m new file mode 100644 index 0000000..2022acd --- /dev/null +++ b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.m @@ -0,0 +1,64 @@ +// +// JXCategoryDotCell.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryDotCell.h" +#import "JXCategoryDotCellModel.h" + +@interface JXCategoryDotCell () +@property (nonatomic, strong) UIView *dot; +@end + +@implementation JXCategoryDotCell + +- (void)initializeViews { + [super initializeViews]; + + _dot = [[UIView alloc] init]; + [self.contentView addSubview:self.dot]; + self.dot.translatesAutoresizingMaskIntoConstraints = NO; +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryDotCellModel *myCellModel = (JXCategoryDotCellModel *)cellModel; + self.dot.hidden = !myCellModel.dotHidden; + self.dot.backgroundColor = myCellModel.dotColor; + self.dot.layer.cornerRadius = myCellModel.dotCornerRadius; + [NSLayoutConstraint deactivateConstraints:self.dot.constraints]; + [self.dot.widthAnchor constraintEqualToConstant:myCellModel.dotSize.width].active = YES; + [self.dot.heightAnchor constraintEqualToConstant:myCellModel.dotSize.height].active = YES; + switch (myCellModel.relativePosition) { + case JXCategoryDotRelativePosition_TopLeft: + { + [self.dot.centerXAnchor constraintEqualToAnchor:self.titleLabel.leadingAnchor constant:myCellModel.dotOffset.x].active = YES; + [self.dot.centerYAnchor constraintEqualToAnchor:self.titleLabel.topAnchor constant:myCellModel.dotOffset.y].active = YES; + } + break; + case JXCategoryDotRelativePosition_TopRight: + { + [self.dot.centerXAnchor constraintEqualToAnchor:self.titleLabel.trailingAnchor constant:myCellModel.dotOffset.x].active = YES; + [self.dot.centerYAnchor constraintEqualToAnchor:self.titleLabel.topAnchor constant:myCellModel.dotOffset.y].active = YES; + } + break; + case JXCategoryDotRelativePosition_BottomLeft: + { + [self.dot.centerXAnchor constraintEqualToAnchor:self.titleLabel.leadingAnchor constant:myCellModel.dotOffset.x].active = YES; + [self.dot.centerYAnchor constraintEqualToAnchor:self.titleLabel.bottomAnchor constant:myCellModel.dotOffset.y].active = YES; + } + break; + case JXCategoryDotRelativePosition_BottomRight: + { + [self.dot.centerXAnchor constraintEqualToAnchor:self.titleLabel.trailingAnchor constant:myCellModel.dotOffset.x].active = YES; + [self.dot.centerYAnchor constraintEqualToAnchor:self.titleLabel.bottomAnchor constant:myCellModel.dotOffset.y].active = YES; + } + break; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.h b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.h new file mode 100644 index 0000000..b0531a9 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.h @@ -0,0 +1,27 @@ +// +// JXCategoryDotCellModel.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCellModel.h" + +typedef NS_ENUM(NSUInteger, JXCategoryDotRelativePosition) { + JXCategoryDotRelativePosition_TopLeft = 0, + JXCategoryDotRelativePosition_TopRight, + JXCategoryDotRelativePosition_BottomLeft, + JXCategoryDotRelativePosition_BottomRight, +}; + +@interface JXCategoryDotCellModel : JXCategoryTitleCellModel + +@property (nonatomic, assign) BOOL dotHidden; +@property (nonatomic, assign) JXCategoryDotRelativePosition relativePosition; +@property (nonatomic, assign) CGSize dotSize; +@property (nonatomic, assign) CGFloat dotCornerRadius; +@property (nonatomic, strong) UIColor *dotColor; +@property (nonatomic, assign) CGPoint dotOffset; + +@end diff --git a/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.m b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.m new file mode 100644 index 0000000..054cbfc --- /dev/null +++ b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryDotCellModel.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryDotCellModel.h" + +@implementation JXCategoryDotCellModel + +@end diff --git a/Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.h b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.h new file mode 100644 index 0000000..1cc9ad9 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.h @@ -0,0 +1,30 @@ +// +// JXCategoryDotView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleView.h" +#import "JXCategoryDotCell.h" +#import "JXCategoryDotCellModel.h" + +@interface JXCategoryDotView : JXCategoryTitleView + +//相对于titleLabel的位置,默认:JXCategoryDotRelativePosition_TopRight +@property (nonatomic, assign) JXCategoryDotRelativePosition relativePosition; +//@[@(布尔值)]数组,控制红点是否显示 +@property (nonatomic, strong) NSArray *dotStates; +//红点的尺寸。默认:CGSizeMake(10, 10) +@property (nonatomic, assign) CGSize dotSize; +//红点的圆角值。默认:JXCategoryViewAutomaticDimension(self.dotSize.height/2) +@property (nonatomic, assign) CGFloat dotCornerRadius; +//红点的颜色。默认:[UIColor redColor] +@property (nonatomic, strong) UIColor *dotColor; +/** + 红点 x,y方向的偏移 (+值:水平方向向右,竖直方向向下) + */ +@property (nonatomic, assign) CGPoint dotOffset; + +@end diff --git a/Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.m b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.m new file mode 100644 index 0000000..847aadb --- /dev/null +++ b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.m @@ -0,0 +1,52 @@ +// +// JXCategoryDotView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryDotView.h" + +@implementation JXCategoryDotView + +- (void)initializeData { + [super initializeData]; + + _relativePosition = JXCategoryDotRelativePosition_TopRight; + _dotSize = CGSizeMake(10, 10); + _dotCornerRadius = JXCategoryViewAutomaticDimension; + _dotColor = [UIColor redColor]; + _dotOffset = CGPointZero; +} + +- (Class)preferredCellClass { + return [JXCategoryDotCell class]; +} + +- (void)refreshDataSource { + NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:self.titles.count]; + for (int i = 0; i < self.titles.count; i++) { + JXCategoryDotCellModel *cellModel = [[JXCategoryDotCellModel alloc] init]; + [tempArray addObject:cellModel]; + } + self.dataSource = [NSArray arrayWithArray:tempArray]; +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + [super refreshCellModel:cellModel index:index]; + + JXCategoryDotCellModel *myCellModel = (JXCategoryDotCellModel *)cellModel; + myCellModel.dotHidden = [self.dotStates[index] boolValue]; + myCellModel.relativePosition = self.relativePosition; + myCellModel.dotSize = self.dotSize; + myCellModel.dotColor = self.dotColor; + myCellModel.dotOffset = self.dotOffset; + if (self.dotCornerRadius == JXCategoryViewAutomaticDimension) { + myCellModel.dotCornerRadius = self.dotSize.height/2; + }else { + myCellModel.dotCornerRadius = self.dotCornerRadius; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.h b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.h new file mode 100644 index 0000000..f0dc162 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.h @@ -0,0 +1,15 @@ +// +// JXCategoryImageCell.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorCell.h" + +@interface JXCategoryImageCell : JXCategoryIndicatorCell + +@property (nonatomic, strong) UIImageView *imageView; + +@end diff --git a/Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.m b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.m new file mode 100644 index 0000000..7384759 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.m @@ -0,0 +1,97 @@ +// +// JXCategoryImageCell.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryImageCell.h" +#import "JXCategoryImageCellModel.h" + +@interface JXCategoryImageCell() +@property (nonatomic, strong) id currentImageInfo; +@property (nonatomic, strong) NSString *currentImageName; +@property (nonatomic, strong) NSURL *currentImageURL; +@end + +@implementation JXCategoryImageCell + +- (void)prepareForReuse { + [super prepareForReuse]; + + self.currentImageInfo = nil; + self.currentImageName = nil; + self.currentImageURL = nil; +} + +- (void)initializeViews { + [super initializeViews]; + + _imageView = [[UIImageView alloc] init]; + _imageView.contentMode = UIViewContentModeScaleAspectFit; + [self.contentView addSubview:_imageView]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + JXCategoryImageCellModel *myCellModel = (JXCategoryImageCellModel *)self.cellModel; + self.imageView.bounds = CGRectMake(0, 0, myCellModel.imageSize.width, myCellModel.imageSize.height); + self.imageView.center = self.contentView.center; + if (myCellModel.imageCornerRadius && (myCellModel.imageCornerRadius != 0)) { + self.imageView.layer.cornerRadius = myCellModel.imageCornerRadius; + self.imageView.layer.masksToBounds = YES; + } +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryImageCellModel *myCellModel = (JXCategoryImageCellModel *)cellModel; + //因为`- (void)reloadData:(JXCategoryBaseCellModel *)cellModel`方法会回调多次,尤其是左右滚动的时候会调用无数次,如果每次都触发图片加载,会非常消耗性能。所以只会在图片发生了变化的时候,才进行图片加载。 + if (myCellModel.loadImageBlock != nil) { + id currentImageInfo = myCellModel.imageInfo; + if (myCellModel.isSelected) { + currentImageInfo = myCellModel.selectedImageInfo; + } + if (currentImageInfo && ![currentImageInfo isEqual:self.currentImageInfo]) { + self.currentImageInfo = currentImageInfo; + if (myCellModel.loadImageBlock) { + myCellModel.loadImageBlock(self.imageView, currentImageInfo); + } + } + } else { + NSString *currentImageName; + NSURL *currentImageURL; + if (myCellModel.imageName) { + currentImageName = myCellModel.imageName; + } else if (myCellModel.imageURL) { + currentImageURL = myCellModel.imageURL; + } + if (myCellModel.isSelected) { + if (myCellModel.selectedImageName) { + currentImageName = myCellModel.selectedImageName; + } else if (myCellModel.selectedImageURL) { + currentImageURL = myCellModel.selectedImageURL; + } + } + if (currentImageName && ![currentImageName isEqualToString:self.currentImageName]) { + self.currentImageName = currentImageName; + self.imageView.image = [UIImage imageNamed:currentImageName]; + } else if (currentImageURL && ![currentImageURL.absoluteString isEqualToString:self.currentImageURL.absoluteString]) { + self.currentImageURL = currentImageURL; + if (myCellModel.loadImageCallback) { + myCellModel.loadImageCallback(self.imageView, currentImageURL); + } + } + } + + if (myCellModel.isImageZoomEnabled) { + self.imageView.transform = CGAffineTransformMakeScale(myCellModel.imageZoomScale, myCellModel.imageZoomScale); + }else { + self.imageView.transform = CGAffineTransformIdentity; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.h b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.h new file mode 100644 index 0000000..0d79fdf --- /dev/null +++ b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.h @@ -0,0 +1,32 @@ +// +// JXCategoryImageCellModel.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorCellModel.h" + +@interface JXCategoryImageCellModel : JXCategoryIndicatorCellModel + +@property (nonatomic, strong) id imageInfo; +@property (nonatomic, strong) id selectedImageInfo; +@property (nonatomic, copy) void(^loadImageBlock)(UIImageView *imageView, id info); + +@property (nonatomic, assign) CGSize imageSize; + +@property (nonatomic, assign) CGFloat imageCornerRadius; + +@property (nonatomic, assign, getter=isImageZoomEnabled) BOOL imageZoomEnabled; + +@property (nonatomic, assign) CGFloat imageZoomScale; + +/// 以下属性将会被弃用 +@property (nonatomic, copy) NSString *imageName; //加载bundle内的图片 +@property (nonatomic, strong) NSURL *imageURL; //图片URL +@property (nonatomic, copy) NSString *selectedImageName; +@property (nonatomic, strong) NSURL *selectedImageURL; +@property (nonatomic, copy) void(^loadImageCallback)(UIImageView *imageView, NSURL *imageURL); + +@end diff --git a/Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.m b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.m new file mode 100644 index 0000000..a7dbec7 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryImageCellModel.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryImageCellModel.h" + +@implementation JXCategoryImageCellModel + +@end diff --git a/Pods/JXCategoryView/Sources/Image/JXCategoryImageView.h b/Pods/JXCategoryView/Sources/Image/JXCategoryImageView.h new file mode 100644 index 0000000..a4324d6 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Image/JXCategoryImageView.h @@ -0,0 +1,32 @@ +// +// JXCategoryImageView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorView.h" +#import "JXCategoryImageCell.h" +#import "JXCategoryImageCellModel.h" + +@interface JXCategoryImageView : JXCategoryIndicatorView + +//imageInfo数组可以传入imageName字符串或者image的URL地址等,然后会通过loadImageBlock透传回来,把imageView对于图片的加载过程完全交给使用者决定。 +@property (nonatomic, strong) NSArray *imageInfoArray; +@property (nonatomic, strong) NSArray *selectedImageInfoArray; +@property (nonatomic, copy) void(^loadImageBlock)(UIImageView *imageView, id info); + +@property (nonatomic, assign) CGSize imageSize; //默认值为 CGSizeMake(20, 20) +@property (nonatomic, assign) CGFloat imageCornerRadius; //图片圆角 +@property (nonatomic, assign, getter=isImageZoomEnabled) BOOL imageZoomEnabled; //默认值为 NO +@property (nonatomic, assign) CGFloat imageZoomScale; //默认值为 1.2,imageZoomEnabled 为 YES 时才生效 + +//下面的属性将会被弃用,请使用`imageInfoArray`、`selectedImageInfoArray`、`loadImageBlock`属性完成需求。 +@property (nonatomic, strong) NSArray *imageNames; +@property (nonatomic, strong) NSArray *imageURLs; +@property (nonatomic, strong) NSArray *selectedImageNames; +@property (nonatomic, strong) NSArray *selectedImageURLs; +@property (nonatomic, copy) void(^loadImageCallback)(UIImageView *imageView, NSURL *imageURL); //使用imageURL从远端下载图片进行加载,建议使用SDWebImage等第三方库进行下载。 + +@end diff --git a/Pods/JXCategoryView/Sources/Image/JXCategoryImageView.m b/Pods/JXCategoryView/Sources/Image/JXCategoryImageView.m new file mode 100644 index 0000000..9c39b02 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Image/JXCategoryImageView.m @@ -0,0 +1,104 @@ +// +// JXCategoryImageView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryImageView.h" +#import "JXCategoryFactory.h" + +@implementation JXCategoryImageView + +- (void)dealloc { + self.loadImageBlock = nil; + self.loadImageCallback = nil; +} + +- (void)initializeData { + [super initializeData]; + + _imageSize = CGSizeMake(20, 20); + _imageZoomEnabled = NO; + _imageZoomScale = 1.2; + _imageCornerRadius = 0; +} + +- (Class)preferredCellClass { + return [JXCategoryImageCell class]; +} + +- (void)refreshDataSource { + NSUInteger count = 0; + if (self.imageInfoArray.count > 0) { + count = self.imageInfoArray.count; + }else if (self.imageNames.count > 0) { + count = self.imageNames.count; + }else { + count = self.imageURLs.count; + } + NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:count]; + for (int i = 0; i < count; i++) { + JXCategoryImageCellModel *cellModel = [[JXCategoryImageCellModel alloc] init]; + [tempArray addObject:cellModel]; + } + self.dataSource = [NSArray arrayWithArray:tempArray]; +} + +- (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel { + [super refreshSelectedCellModel:selectedCellModel unselectedCellModel:unselectedCellModel]; + + JXCategoryImageCellModel *myUnselectedCellModel = (JXCategoryImageCellModel *)unselectedCellModel; + myUnselectedCellModel.imageZoomScale = 1.0; + + JXCategoryImageCellModel *myselectedCellModel = (JXCategoryImageCellModel *)selectedCellModel; + myselectedCellModel.imageZoomScale = self.imageZoomScale; +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + [super refreshCellModel:cellModel index:index]; + + JXCategoryImageCellModel *myCellModel = (JXCategoryImageCellModel *)cellModel; + myCellModel.loadImageBlock = self.loadImageBlock; + myCellModel.loadImageCallback = self.loadImageCallback; + myCellModel.imageSize = self.imageSize; + myCellModel.imageCornerRadius = self.imageCornerRadius; + if (self.imageInfoArray && self.imageInfoArray.count != 0) { + myCellModel.imageInfo = self.imageInfoArray[index]; + }else if (self.imageNames && self.imageNames.count != 0) { + myCellModel.imageName = self.imageNames[index]; + }else if (self.imageURLs && self.imageURLs.count != 0) { + myCellModel.imageURL = self.imageURLs[index]; + } + if (self.selectedImageInfoArray && self.selectedImageInfoArray.count != 0) { + myCellModel.selectedImageInfo = self.selectedImageInfoArray[index]; + }else if (self.selectedImageNames && self.selectedImageNames.count != 0) { + myCellModel.selectedImageName = self.selectedImageNames[index]; + }else if (self.selectedImageURLs && self.selectedImageURLs.count != 0) { + myCellModel.selectedImageURL = self.selectedImageURLs[index]; + } + myCellModel.imageZoomEnabled = self.imageZoomEnabled; + myCellModel.imageZoomScale = ((index == self.selectedIndex) ? self.imageZoomScale : 1.0); +} + +- (void)refreshLeftCellModel:(JXCategoryBaseCellModel *)leftCellModel rightCellModel:(JXCategoryBaseCellModel *)rightCellModel ratio:(CGFloat)ratio { + [super refreshLeftCellModel:leftCellModel rightCellModel:rightCellModel ratio:ratio]; + + JXCategoryImageCellModel *leftModel = (JXCategoryImageCellModel *)leftCellModel; + JXCategoryImageCellModel *rightModel = (JXCategoryImageCellModel *)rightCellModel; + + if (self.isImageZoomEnabled) { + leftModel.imageZoomScale = [JXCategoryFactory interpolationFrom:self.imageZoomScale to:1.0 percent:ratio]; + rightModel.imageZoomScale = [JXCategoryFactory interpolationFrom:1.0 to:self.imageZoomScale percent:ratio]; + } +} + +- (CGFloat)preferredCellWidthAtIndex:(NSInteger)index { + if (self.cellWidth == JXCategoryViewAutomaticDimension) { + return self.imageSize.width; + } + return self.cellWidth; +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.h new file mode 100644 index 0000000..e423efb --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.h @@ -0,0 +1,14 @@ +// +// JXCategoryIndicatorBackgroundView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +/// BackgroundView 样式的指示器 +@interface JXCategoryIndicatorBackgroundView : JXCategoryIndicatorComponentView + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.m new file mode 100644 index 0000000..4f4942f --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.m @@ -0,0 +1,101 @@ +// +// JXCategoryIndicatorBackgroundView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorBackgroundView.h" +#import "JXCategoryFactory.h" + +@implementation JXCategoryIndicatorBackgroundView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (void)configureDefaulteValue { + self.indicatorWidth = JXCategoryViewAutomaticDimension; + self.indicatorHeight = JXCategoryViewAutomaticDimension; + self.indicatorCornerRadius = JXCategoryViewAutomaticDimension; + self.indicatorColor = [UIColor lightGrayColor]; + self.indicatorWidthIncrement = 10; +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + self.layer.cornerRadius = [self indicatorCornerRadiusValue:model.selectedCellFrame]; + self.backgroundColor = self.indicatorColor; + + CGFloat width = [self indicatorWidthValue:model.selectedCellFrame]; + CGFloat height = [self indicatorHeightValue:model.selectedCellFrame]; + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - width)/2; + CGFloat y = (model.selectedCellFrame.size.height - height)/2 - self.verticalMargin; + self.frame = CGRectMake(x, y, width, height); +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + CGRect rightCellFrame = model.rightCellFrame; + CGRect leftCellFrame = model.leftCellFrame; + CGFloat percent = model.percent; + CGFloat targetX = 0; + CGFloat targetWidth = [self indicatorWidthValue:leftCellFrame]; + + if (percent == 0) { + targetX = leftCellFrame.origin.x + (leftCellFrame.size.width - targetWidth)/2.0; + }else { + CGFloat leftWidth = targetWidth; + CGFloat rightWidth = [self indicatorWidthValue:rightCellFrame]; + + CGFloat leftX = leftCellFrame.origin.x + (leftCellFrame.size.width - leftWidth)/2; + CGFloat rightX = rightCellFrame.origin.x + (rightCellFrame.size.width - rightWidth)/2; + + targetX = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:percent]; + + if (self.indicatorWidth == JXCategoryViewAutomaticDimension) { + targetWidth = [JXCategoryFactory interpolationFrom:leftWidth to:rightWidth percent:percent]; + } + } + + //允许变动frame的情况:1、允许滚动;2、不允许滚动,但是已经通过手势滚动切换一页内容了; + if (self.isScrollEnabled == YES || (self.isScrollEnabled == NO && percent == 0)) { + CGRect toFrame = self.frame; + toFrame.origin.x = targetX; + toFrame.size.width = targetWidth; + self.frame = toFrame; + } +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + CGFloat width = [self indicatorWidthValue:model.selectedCellFrame]; + CGRect toFrame = self.frame; + toFrame.origin.x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - width)/2; + toFrame.size.width = width; + + if (self.isScrollEnabled) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ + self.frame = toFrame; + } completion:^(BOOL finished) { + }]; + }else { + self.frame = toFrame; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.h new file mode 100644 index 0000000..777d8a3 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.h @@ -0,0 +1,17 @@ +// +// JXCategoryIndicatorBallView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/21. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +/// QQ 小红点样式的指示器 +@interface JXCategoryIndicatorBallView : JXCategoryIndicatorComponentView + +// 球沿的 X 轴方向上的偏移量。默认值为 20 +@property (nonatomic, assign) CGFloat ballScrollOffsetX; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.m new file mode 100644 index 0000000..afaeff0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.m @@ -0,0 +1,199 @@ +// +// JXCategoryIndicatorBallView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/21. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorBallView.h" +#import "JXCategoryFactory.h" + +@interface JXCategoryIndicatorBallView () +@property (nonatomic, strong) UIView *smallBall; +@property (nonatomic, strong) UIView *bigBall; +@property (nonatomic, strong) CAShapeLayer *shapeLayer; +@end + +@implementation JXCategoryIndicatorBallView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self configureIndicatorBall]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self configureIndicatorBall]; + } + return self; +} + +- (void)configureIndicatorBall { + self.indicatorWidth = 15; + self.indicatorHeight = 15; + _ballScrollOffsetX = 20; + + _smallBall = [[UIView alloc] init]; + [self addSubview:self.smallBall]; + + _bigBall = [[UIView alloc] init]; + [self addSubview:self.bigBall]; + + _shapeLayer = [CAShapeLayer layer]; + [self.layer addSublayer:self.shapeLayer]; +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + CGFloat ballWidth = [self indicatorWidthValue:model.selectedCellFrame]; + CGFloat ballHeight = [self indicatorHeightValue:model.selectedCellFrame]; + + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + self.shapeLayer.fillColor = self.indicatorColor.CGColor; + [CATransaction commit]; + + self.smallBall.backgroundColor = self.indicatorColor; + self.smallBall.layer.cornerRadius = ballHeight/2; + self.bigBall.backgroundColor = self.indicatorColor; + self.bigBall.layer.cornerRadius = ballHeight/2; + + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - ballWidth)/2; + CGFloat y = self.superview.bounds.size.height - ballHeight - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + y = self.verticalMargin; + } + self.smallBall.frame = CGRectMake(x, y, ballWidth, ballHeight); + self.bigBall.frame = CGRectMake(x, y, ballWidth, ballHeight); +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + CGFloat ballWidth = [self indicatorWidthValue:model.leftCellFrame]; + CGFloat ballHeight = [self indicatorHeightValue:model.leftCellFrame]; + CGRect rightCellFrame = model.rightCellFrame; + CGRect leftCellFrame = model.leftCellFrame; + CGFloat percent = model.percent; + CGFloat targetXOfBigBall = 0; + CGFloat targetXOfSmallBall = leftCellFrame.origin.x + (leftCellFrame.size.width - ballWidth)/2; + CGFloat targetWidthOfSmallBall = ballWidth; + + if (percent == 0) { + targetXOfBigBall = leftCellFrame.origin.x + (leftCellFrame.size.width - ballWidth)/2.0; + targetXOfSmallBall = leftCellFrame.origin.x + (leftCellFrame.size.width - targetWidthOfSmallBall)/2.0; + }else { + CGFloat leftX = leftCellFrame.origin.x + (leftCellFrame.size.width - ballWidth)/2; + CGFloat rightX = rightCellFrame.origin.x + (rightCellFrame.size.width - ballWidth)/2; + + //前50%,移动bigBall的x,缩小smallBall;后50%,移动bigBall的x,缩小smallBall,移动smallBall的x + if (percent <= 0.5) { + targetXOfBigBall = [JXCategoryFactory interpolationFrom:leftX to:(rightX - self.ballScrollOffsetX) percent:percent*2]; + targetWidthOfSmallBall = [JXCategoryFactory interpolationFrom:ballWidth to:ballWidth/2 percent:percent*2]; + }else { + targetXOfBigBall = [JXCategoryFactory interpolationFrom:(rightX - self.ballScrollOffsetX) to:rightX percent:(percent - 0.5)*2]; + targetWidthOfSmallBall = [JXCategoryFactory interpolationFrom:ballWidth/2 to:0 percent:(percent - 0.5)*2]; + targetXOfSmallBall = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:(percent - 0.5)*2]; + } + } + + //允许变动frame的情况:1、允许滚动;2、不允许滚动,但是已经通过手势滚动切换一页内容了; + if (self.isScrollEnabled == YES || (self.isScrollEnabled == NO && percent == 0)) { + CGRect bigBallFrame = self.bigBall.frame; + bigBallFrame.origin.x = targetXOfBigBall; + self.bigBall.frame = bigBallFrame; + self.bigBall.layer.cornerRadius = bigBallFrame.size.height/2; + + CGFloat targetYOfSmallBall = self.superview.bounds.size.height - ballHeight/2 - targetWidthOfSmallBall/2 - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + targetYOfSmallBall = ballHeight/2 - targetWidthOfSmallBall/2 + self.verticalMargin; + } + self.smallBall.frame = CGRectMake(targetXOfSmallBall, targetYOfSmallBall, targetWidthOfSmallBall, targetWidthOfSmallBall); + self.smallBall.layer.cornerRadius = targetWidthOfSmallBall/2; + + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + self.shapeLayer.path = [self getBezierPathWithSmallCir:self.smallBall andBigCir:self.bigBall].CGPath; + [CATransaction commit]; + } +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + CGFloat ballWidth = [self indicatorWidthValue:model.selectedCellFrame]; + CGFloat ballHeight = [self indicatorHeightValue:model.selectedCellFrame]; + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - ballWidth)/2; + CGFloat y = self.superview.bounds.size.height - ballHeight - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + y = self.verticalMargin; + } + CGRect toFrame = CGRectMake(x, y, ballWidth, ballHeight); + + if (self.isScrollEnabled) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ + self.smallBall.frame = toFrame; + self.bigBall.frame = toFrame; + self.smallBall.layer.cornerRadius = ballHeight/2; + self.bigBall.layer.cornerRadius = ballHeight/2; + } completion:^(BOOL finished) { + + }]; + }else { + self.smallBall.frame = toFrame; + self.bigBall.frame = toFrame; + self.smallBall.layer.cornerRadius = ballHeight/2; + self.bigBall.layer.cornerRadius = ballHeight/2; + } +} + +- (UIBezierPath *)getBezierPathWithSmallCir:(UIView *)smallCir andBigCir:(UIView *)bigCir{ + // 获取最小的圆 + if (bigCir.frame.size.width < smallCir.frame.size.width) { + UIView *view = bigCir; + bigCir = smallCir; + smallCir = view; + } + // 获取小圆的信息 + CGFloat d = self.bigBall.center.x - self.smallBall.center.x; + if (d == 0) { + return nil; + } + CGFloat x1 = smallCir.center.x; + CGFloat y1 = smallCir.center.y; + CGFloat r1 = smallCir.bounds.size.width/2; + + // 获取大圆的信息 + CGFloat x2 = bigCir.center.x; + CGFloat y2 = bigCir.center.y; + CGFloat r2 = bigCir.bounds.size.width/2; + + // 获取三角函数 + CGFloat sinA = (y2 - y1)/d; + CGFloat cosA = (x2 - x1)/d; + + // 获取矩形四个点 + CGPoint pointA = CGPointMake(x1 - sinA*r1, y1 + cosA * r1); + CGPoint pointB = CGPointMake(x1 + sinA*r1, y1 - cosA * r1); + CGPoint pointC = CGPointMake(x2 + sinA*r2, y2 - cosA * r2); + CGPoint pointD = CGPointMake(x2 - sinA*r2, y2 + cosA * r2); + + // 获取控制点,以便画出曲线 + CGPoint pointO = CGPointMake(pointA.x + d / 2 * cosA , pointA.y + d / 2 * sinA); + CGPoint pointP = CGPointMake(pointB.x + d / 2 * cosA , pointB.y + d / 2 * sinA); + + // 创建路径 + UIBezierPath *path =[UIBezierPath bezierPath]; + [path moveToPoint:pointA]; + [path addLineToPoint:pointB]; + [path addQuadCurveToPoint:pointC controlPoint:pointP]; + [path addLineToPoint:pointD]; + [path addQuadCurveToPoint:pointA controlPoint:pointO]; + return path; +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.h new file mode 100644 index 0000000..6b2906e --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.h @@ -0,0 +1,113 @@ +// +// JXCategoryComponentBaseView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXCategoryIndicatorProtocol.h" +#import "JXCategoryViewDefines.h" + +@interface JXCategoryIndicatorComponentView : UIView + +/** + 指示器的位置 + + 可设置的枚举类型: + - 底部:JXCategoryComponentPosition_Bottom + - 顶部:JXCategoryComponentPosition_Top + */ +@property (nonatomic, assign) JXCategoryComponentPosition componentPosition; + +/** + 指示器的宽度 + + 默认值为 JXCategoryViewAutomaticDimension(表示与 cell 的宽度相等)。 + 内部通过 `- (CGFloat)indicatorWidthValue:(CGRect)cellFrame` 方法获取实际的值。 + */ +@property (nonatomic, assign) CGFloat indicatorWidth; + +/** + 指示器的宽度增量 + + 例如:需求是指示器宽度比 cell 宽度多 10pt。就可以将该属性赋值为 10。 + 最终指示器的宽度 = indicatorWidth + indicatorWidthIncrement。 + */ +@property (nonatomic, assign) CGFloat indicatorWidthIncrement; + +/** + 指示器的高度 + + 默认值为 3。 + 内部通过 `- (CGFloat)indicatorHeightValue:(CGRect)cellFrame` 方法获取实际的值。 + */ +@property (nonatomic, assign) CGFloat indicatorHeight; + +/** + 指示器的 CornerRadius 圆角半径 + + 默认值为 JXCategoryViewAutomaticDimension (等于 indicatorHeight/2)。 + 内部通过 `- (CGFloat)indicatorCornerRadiusValue:(CGRect)cellFrame` 方法获取实际的值。 + */ +@property (nonatomic, assign) CGFloat indicatorCornerRadius; + +/** + 指示器的颜色 + */ +@property (nonatomic, strong) UIColor *indicatorColor; + +/** + 指示器在垂直方向上的偏移量 + + 数值越大越靠近中心。默认值为 0。 + */ +@property (nonatomic, assign) CGFloat verticalMargin; + +/** + 是否允许手势滚动 + + 点击切换的时候,是否允许滚动,默认值为 YES。 + */ +@property (nonatomic, assign, getter=isScrollEnabled) BOOL scrollEnabled; + +/** + 指示器滚动样式 + + 点击切换的时候,如果允许滚动,分为简单滚动和复杂滚动。 + 默认值为 JXCategoryIndicatorScrollStyleSimple + 目前仅JXCategoryIndicatorLineView、JXCategoryIndicatorDotLineView支持,其他子类暂不支持。 + */ +@property (nonatomic, assign) JXCategoryIndicatorScrollStyle scrollStyle; + +/** + 滚动动画的时间,默认值为 0.25s + */ +@property (nonatomic, assign) NSTimeInterval scrollAnimationDuration; + +/** + 传入 cellFrame 获取指示器的最终宽度 + + @param cellFrame cellFrame + @return 指示器的最终宽度 + */ +- (CGFloat)indicatorWidthValue:(CGRect)cellFrame; + +/** + 传入 cellFrame 获取指示器的最终高度 + + @param cellFrame cellFrame + @return 指示器的最终高度 + */ +- (CGFloat)indicatorHeightValue:(CGRect)cellFrame; + +/** + 传入 cellFrame 获取指示器的最终圆角 + + @param cellFrame cellFrame + @return 指示器的最终圆角 + */ +- (CGFloat)indicatorCornerRadiusValue:(CGRect)cellFrame; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m new file mode 100644 index 0000000..f9111d3 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m @@ -0,0 +1,81 @@ +// +// JXCategoryComponentBaseView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +@implementation JXCategoryIndicatorComponentView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self configureDefaultValue]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self configureDefaultValue]; + } + return self; +} + +- (void)configureDefaultValue { + _componentPosition = JXCategoryComponentPosition_Bottom; + _scrollEnabled = YES; + _verticalMargin = 0; + _scrollAnimationDuration = 0.25; + _indicatorWidth = JXCategoryViewAutomaticDimension; + _indicatorWidthIncrement = 0; + _indicatorHeight = 3; + _indicatorCornerRadius = JXCategoryViewAutomaticDimension; + _indicatorColor = [UIColor redColor]; + _scrollStyle = JXCategoryIndicatorScrollStyleSimple; +} + +#pragma mark - Public + +- (CGFloat)indicatorWidthValue:(CGRect)cellFrame { + if (self.indicatorWidth == JXCategoryViewAutomaticDimension) { + return cellFrame.size.width + self.indicatorWidthIncrement; + } + return self.indicatorWidth + self.indicatorWidthIncrement; +} + +- (CGFloat)indicatorHeightValue:(CGRect)cellFrame { + if (self.indicatorHeight == JXCategoryViewAutomaticDimension) { + return cellFrame.size.height; + } + return self.indicatorHeight; +} + +- (CGFloat)indicatorCornerRadiusValue:(CGRect)cellFrame { + if (self.indicatorCornerRadius == JXCategoryViewAutomaticDimension) { + return [self indicatorHeightValue:cellFrame]/2; + } + return self.indicatorCornerRadius; +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.h new file mode 100644 index 0000000..e58bbdb --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.h @@ -0,0 +1,17 @@ +// +// JXCategoryIndicatorDotLineView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/22. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +/// 点线效果的指示器 +@interface JXCategoryIndicatorDotLineView : JXCategoryIndicatorComponentView + +// 线状态的最大宽度,默认值为 50 +@property (nonatomic, assign) CGFloat lineWidth; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.m new file mode 100644 index 0000000..3a680e4 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.m @@ -0,0 +1,148 @@ +// +// JXCategoryIndicatorDotLineView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/22. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorDotLineView.h" +#import "JXCategoryFactory.h" +#import "JXCategoryViewAnimator.h" + +@interface JXCategoryIndicatorDotLineView () +@property (nonatomic, strong) JXCategoryViewAnimator *animator; +@end + +@implementation JXCategoryIndicatorDotLineView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (void)configureDefaulteValue { + self.indicatorWidth = 10; + self.indicatorHeight = 10; + _lineWidth = 50; +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + CGFloat dotWidth = [self indicatorWidthValue:model.selectedCellFrame]; + CGFloat dotHeight = [self indicatorHeightValue:model.selectedCellFrame]; + self.backgroundColor = self.indicatorColor; + self.layer.cornerRadius = [self indicatorHeightValue:model.selectedCellFrame]/2; + + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - dotWidth)/2; + CGFloat y = self.superview.bounds.size.height - dotHeight - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + y = self.verticalMargin; + } + self.frame = CGRectMake(x, y, dotWidth, dotHeight); +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + if (self.animator.isExecuting) { + [self.animator invalid]; + self.animator = nil; + } + CGFloat dotWidth = [self indicatorWidthValue:model.selectedCellFrame]; + CGRect rightCellFrame = model.rightCellFrame; + CGRect leftCellFrame = model.leftCellFrame; + CGFloat percent = model.percent; + CGFloat targetX = 0; + CGFloat targetWidth = dotWidth; + CGFloat leftWidth = dotWidth; + CGFloat rightWidth = dotWidth; + CGFloat leftX = leftCellFrame.origin.x + (leftCellFrame.size.width - leftWidth)/2; + CGFloat rightX = rightCellFrame.origin.x + (rightCellFrame.size.width - rightWidth)/2; + CGFloat centerX = leftX + (rightX - leftX - self.lineWidth)/2; + + //前50%,移动x,增加宽度;后50%,移动x并减小width + if (percent <= 0.5) { + targetX = [JXCategoryFactory interpolationFrom:leftX to:centerX percent:percent*2]; + targetWidth = [JXCategoryFactory interpolationFrom:dotWidth to:self.lineWidth percent:percent*2]; + }else { + targetX = [JXCategoryFactory interpolationFrom:centerX to:rightX percent:(percent - 0.5)*2]; + targetWidth = [JXCategoryFactory interpolationFrom:self.lineWidth to:dotWidth percent:(percent - 0.5)*2]; + } + + //允许变动frame的情况:1、允许滚动;2、不允许滚动,但是已经通过手势滚动切换一页内容了; + if (self.isScrollEnabled == YES || (self.isScrollEnabled == NO && percent == 0)) { + CGRect frame = self.frame; + frame.origin.x = targetX; + frame.size.width = targetWidth; + self.frame = frame; + } +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + CGFloat dotWidth = [self indicatorWidthValue:model.selectedCellFrame]; + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - dotWidth)/2; + CGRect targetIndicatorFrame = self.frame; + targetIndicatorFrame.origin.x = x; + if (self.isScrollEnabled) { + if (self.scrollStyle == JXCategoryIndicatorScrollStyleSameAsUserScroll && (model.selectedType == JXCategoryCellSelectedTypeClick | model.selectedType == JXCategoryCellSelectedTypeCode)) { + if (self.animator.isExecuting) { + [self.animator invalid]; + self.animator = nil; + } + CGFloat leftX = 0; + CGFloat rightX = 0; + BOOL isNeedReversePercent = NO; + if (self.frame.origin.x > model.selectedCellFrame.origin.x) { + leftX = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - dotWidth)/2;; + rightX = self.frame.origin.x; + isNeedReversePercent = YES; + }else { + leftX = self.frame.origin.x; + rightX = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - dotWidth)/2; + } + CGFloat centerX = leftX + (rightX - leftX - self.lineWidth)/2; + __weak typeof(self) weakSelf = self; + self.animator = [[JXCategoryViewAnimator alloc] init]; + self.animator.progressCallback = ^(CGFloat percent) { + if (isNeedReversePercent) { + percent = 1 - percent; + } + CGFloat targetX = 0; + CGFloat targetWidth = 0; + if (percent <= 0.5) { + targetX = [JXCategoryFactory interpolationFrom:leftX to:centerX percent:percent*2]; + targetWidth = [JXCategoryFactory interpolationFrom:dotWidth to:self.lineWidth percent:percent*2]; + }else { + targetX = [JXCategoryFactory interpolationFrom:centerX to:rightX percent:(percent - 0.5)*2]; + targetWidth = [JXCategoryFactory interpolationFrom:self.lineWidth to:dotWidth percent:(percent - 0.5)*2]; + } + CGRect toFrame = weakSelf.frame; + toFrame.origin.x = targetX; + toFrame.size.width = targetWidth; + weakSelf.frame = toFrame; + }; + [self.animator start]; + }else if (self.scrollStyle == JXCategoryIndicatorScrollStyleSimple) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ + self.frame = targetIndicatorFrame; + } completion: nil]; + } + }else { + self.frame = targetIndicatorFrame; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.h new file mode 100644 index 0000000..04a1738 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.h @@ -0,0 +1,20 @@ +// +// JXCategoryIndicatorImageView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +@interface JXCategoryIndicatorImageView : JXCategoryIndicatorComponentView + +// 指示器图片 +@property (nonatomic, strong, readonly) UIImageView *indicatorImageView; +// 图片是否开启滚动,默认值为 NO +@property (nonatomic, assign) BOOL indicatorImageViewRollEnabled; +// 图片的尺寸,默认值为 CGSizeMake(30, 20) +@property (nonatomic, assign) CGSize indicatorImageViewSize; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.m new file mode 100644 index 0000000..02dc891 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.m @@ -0,0 +1,117 @@ +// +// JXCategoryIndicatorImageView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorImageView.h" +#import "JXCategoryFactory.h" + +@implementation JXCategoryIndicatorImageView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self setupIndicatorImageView]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self setupIndicatorImageView]; + } + return self; +} + +- (void)setupIndicatorImageView { + _indicatorImageViewSize = CGSizeMake(30, 20); + _indicatorImageViewRollEnabled = NO; + + _indicatorImageView = [[UIImageView alloc] init]; + self.indicatorImageView.frame = CGRectMake(0, 0, self.indicatorImageViewSize.width, self.indicatorImageViewSize.height); + self.indicatorImageView.contentMode = UIViewContentModeScaleAspectFit; + [self addSubview:self.indicatorImageView]; +} + +#pragma mark - Custom Accessors + +- (void)setIndicatorImageViewSize:(CGSize)indicatorImageViewSize { + _indicatorImageViewSize = indicatorImageViewSize; + + self.indicatorImageView.frame = CGRectMake(0, 0, self.indicatorImageViewSize.width, self.indicatorImageViewSize.height); +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - self.indicatorImageViewSize.width)/2; + CGFloat y = self.superview.bounds.size.height - self.indicatorImageViewSize.height - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + y = self.verticalMargin; + } + self.frame = CGRectMake(x, y, self.indicatorImageViewSize.width, self.indicatorImageViewSize.height); +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + CGRect rightCellFrame = model.rightCellFrame; + CGRect leftCellFrame = model.leftCellFrame; + CGFloat percent = model.percent; + CGFloat targetWidth = self.indicatorImageViewSize.width; + CGFloat targetX = 0; + + if (percent == 0) { + targetX = leftCellFrame.origin.x + (leftCellFrame.size.width - targetWidth)/2.0; + }else { + CGFloat leftX = leftCellFrame.origin.x + (leftCellFrame.size.width - targetWidth)/2; + CGFloat rightX = rightCellFrame.origin.x + (rightCellFrame.size.width - targetWidth)/2; + targetX = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:percent]; + } + + //允许变动frame的情况:1、允许滚动;2、不允许滚动,但是已经通过手势滚动切换一页内容了; + if (self.isScrollEnabled == YES || (self.isScrollEnabled == NO && percent == 0)) { + CGRect frame = self.frame; + frame.origin.x = targetX; + self.frame = frame; + + if (self.indicatorImageViewRollEnabled) { + self.indicatorImageView.transform = CGAffineTransformMakeRotation(M_PI*2*percent); + } + } +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + CGRect toFrame = self.frame; + toFrame.origin.x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - self.indicatorImageViewSize.width)/2; + if (self.isScrollEnabled) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ + self.frame = toFrame; + } completion:^(BOOL finished) { + }]; + if (self.indicatorImageViewRollEnabled && (model.selectedType == JXCategoryCellSelectedTypeCode || model.selectedType == JXCategoryCellSelectedTypeClick)) { + [self.indicatorImageView.layer removeAnimationForKey:@"rotate"]; + CABasicAnimation *rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; + if (model.selectedIndex > model.lastSelectedIndex) { + rotateAnimation.fromValue = @(0); + rotateAnimation.toValue = @(M_PI*2); + }else { + rotateAnimation.fromValue = @(M_PI*2); + rotateAnimation.toValue = @(0); + } + rotateAnimation.fillMode = kCAFillModeBackwards; + rotateAnimation.removedOnCompletion = YES; + rotateAnimation.duration = 0.25; + [self.indicatorImageView.layer addAnimation:rotateAnimation forKey:@"rotate"]; + } + }else { + self.frame = toFrame; + } +} + + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.h new file mode 100644 index 0000000..54c784a --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.h @@ -0,0 +1,28 @@ +// +// JXCategoryIndicatorLineView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +typedef NS_ENUM(NSUInteger, JXCategoryIndicatorLineStyle) { + JXCategoryIndicatorLineStyle_Normal = 0, + JXCategoryIndicatorLineStyle_Lengthen = 1, + JXCategoryIndicatorLineStyle_LengthenOffset = 2, +}; + +@interface JXCategoryIndicatorLineView : JXCategoryIndicatorComponentView + +@property (nonatomic, assign) JXCategoryIndicatorLineStyle lineStyle; + +/** + line 滚动时沿 x 轴方向上的偏移量,默认值为 10。 + + lineStyle 为 JXCategoryIndicatorLineStyle_LengthenOffset 有用。 + */ +@property (nonatomic, assign) CGFloat lineScrollOffsetX; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.m new file mode 100644 index 0000000..87ffbe6 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.m @@ -0,0 +1,202 @@ +// +// JXCategoryIndicatorLineView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorLineView.h" +#import "JXCategoryFactory.h" +#import "JXCategoryViewDefines.h" +#import "JXCategoryViewAnimator.h" + +@interface JXCategoryIndicatorLineView () +@property (nonatomic, strong) JXCategoryViewAnimator *animator; +@end + +@implementation JXCategoryIndicatorLineView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (void)configureDefaulteValue { + _lineStyle = JXCategoryIndicatorLineStyle_Normal; + _lineScrollOffsetX = 10; + self.indicatorHeight = 3; +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + self.backgroundColor = self.indicatorColor; + self.layer.cornerRadius = [self indicatorCornerRadiusValue:model.selectedCellFrame]; + + CGFloat selectedLineWidth = [self indicatorWidthValue:model.selectedCellFrame]; + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - selectedLineWidth)/2; + CGFloat y = self.superview.bounds.size.height - [self indicatorHeightValue:model.selectedCellFrame] - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + y = self.verticalMargin; + } + self.frame = CGRectMake(x, y, selectedLineWidth, [self indicatorHeightValue:model.selectedCellFrame]); +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + if (self.animator.isExecuting) { + [self.animator invalid]; + self.animator = nil; + } + CGRect rightCellFrame = model.rightCellFrame; + CGRect leftCellFrame = model.leftCellFrame; + CGFloat percent = model.percent; + CGFloat targetX = leftCellFrame.origin.x; + CGFloat targetWidth = [self indicatorWidthValue:leftCellFrame]; + + CGFloat leftWidth = targetWidth; + CGFloat rightWidth = [self indicatorWidthValue:rightCellFrame]; + CGFloat leftX = leftCellFrame.origin.x + (leftCellFrame.size.width - leftWidth)/2; + CGFloat rightX = rightCellFrame.origin.x + (rightCellFrame.size.width - rightWidth)/2; + + if (self.lineStyle == JXCategoryIndicatorLineStyle_Normal) { + targetX = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:percent]; + if (self.indicatorWidth == JXCategoryViewAutomaticDimension) { + targetWidth = [JXCategoryFactory interpolationFrom:leftWidth to:rightWidth percent:percent]; + } + }else if (self.lineStyle == JXCategoryIndicatorLineStyle_Lengthen) { + CGFloat maxWidth = rightX - leftX + rightWidth; + //前50%,只增加width;后50%,移动x并减小width + if (percent <= 0.5) { + targetX = leftX; + targetWidth = [JXCategoryFactory interpolationFrom:leftWidth to:maxWidth percent:percent*2]; + }else { + targetX = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:(percent - 0.5)*2]; + targetWidth = [JXCategoryFactory interpolationFrom:maxWidth to:rightWidth percent:(percent - 0.5)*2]; + } + }else if (self.lineStyle == JXCategoryIndicatorLineStyle_LengthenOffset) { + //前50%,增加width,并少量移动x;后50%,少量移动x并减小width + CGFloat offsetX = self.lineScrollOffsetX;//x的少量偏移量 + CGFloat maxWidth = rightX - leftX + rightWidth - offsetX*2; + if (percent <= 0.5) { + targetX = [JXCategoryFactory interpolationFrom:leftX to:leftX + offsetX percent:percent*2];; + targetWidth = [JXCategoryFactory interpolationFrom:leftWidth to:maxWidth percent:percent*2]; + }else { + targetX = [JXCategoryFactory interpolationFrom:(leftX + offsetX) to:rightX percent:(percent - 0.5)*2]; + targetWidth = [JXCategoryFactory interpolationFrom:maxWidth to:rightWidth percent:(percent - 0.5)*2]; + } + } + //允许变动frame的情况:1、允许滚动;2、不允许滚动,但是已经通过手势滚动切换一页内容了; + if (self.isScrollEnabled == YES || (self.isScrollEnabled == NO && percent == 0)) { + CGRect frame = self.frame; + frame.origin.x = targetX; + frame.size.width = targetWidth; + self.frame = frame; + } +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + CGRect targetIndicatorFrame = self.frame; + CGFloat targetIndicatorWidth = [self indicatorWidthValue:model.selectedCellFrame]; + targetIndicatorFrame.origin.x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - targetIndicatorWidth)/2.0; + targetIndicatorFrame.size.width = targetIndicatorWidth; + if (self.isScrollEnabled) { + if (self.scrollStyle == JXCategoryIndicatorScrollStyleSameAsUserScroll && (model.selectedType == JXCategoryCellSelectedTypeClick | model.selectedType == JXCategoryCellSelectedTypeCode)) { + if (self.animator.isExecuting) { + [self.animator invalid]; + self.animator = nil; + } + CGFloat leftX = 0; + CGFloat rightX = 0; + CGFloat leftWidth = 0; + CGFloat rightWidth = 0; + BOOL isNeedReversePercent = NO; + if (self.frame.origin.x > model.selectedCellFrame.origin.x) { + leftWidth = [self indicatorWidthValue:model.selectedCellFrame]; + rightWidth = self.frame.size.width; + leftX = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - leftWidth)/2;; + rightX = self.frame.origin.x; + isNeedReversePercent = YES; + }else { + leftWidth = self.frame.size.width; + rightWidth = [self indicatorWidthValue:model.selectedCellFrame]; + leftX = self.frame.origin.x; + rightX = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - rightWidth)/2; + } + __weak typeof(self) weakSelf = self; + if (self.lineStyle == JXCategoryIndicatorLineStyle_Normal) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ + self.frame = targetIndicatorFrame; + } completion: nil]; + }else if (self.lineStyle == JXCategoryIndicatorLineStyle_Lengthen) { + CGFloat maxWidth = rightX - leftX + rightWidth; + //前50%,只增加width;后50%,移动x并减小width + self.animator = [[JXCategoryViewAnimator alloc] init]; + self.animator.progressCallback = ^(CGFloat percent) { + if (isNeedReversePercent) { + percent = 1 - percent; + } + CGFloat targetX = 0; + CGFloat targetWidth = 0; + if (percent <= 0.5) { + targetX = leftX; + targetWidth = [JXCategoryFactory interpolationFrom:leftWidth to:maxWidth percent:percent*2]; + }else { + targetX = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:(percent - 0.5)*2]; + targetWidth = [JXCategoryFactory interpolationFrom:maxWidth to:rightWidth percent:(percent - 0.5)*2]; + } + CGRect toFrame = weakSelf.frame; + toFrame.origin.x = targetX; + toFrame.size.width = targetWidth; + weakSelf.frame = toFrame; + }; + [self.animator start]; + }else if (self.lineStyle == JXCategoryIndicatorLineStyle_LengthenOffset) { + //前50%,增加width,并少量移动x;后50%,少量移动x并减小width + CGFloat offsetX = self.lineScrollOffsetX;//x的少量偏移量 + CGFloat maxWidth = rightX - leftX + rightWidth - offsetX*2; + self.animator = [[JXCategoryViewAnimator alloc] init]; + self.animator.progressCallback = ^(CGFloat percent) { + if (isNeedReversePercent) { + percent = 1 - percent; + } + CGFloat targetX = 0; + CGFloat targetWidth = 0; + if (percent <= 0.5) { + targetX = [JXCategoryFactory interpolationFrom:leftX to:leftX + offsetX percent:percent*2];; + targetWidth = [JXCategoryFactory interpolationFrom:leftWidth to:maxWidth percent:percent*2]; + }else { + targetX = [JXCategoryFactory interpolationFrom:(leftX + offsetX) to:rightX percent:(percent - 0.5)*2]; + targetWidth = [JXCategoryFactory interpolationFrom:maxWidth to:rightWidth percent:(percent - 0.5)*2]; + } + CGRect toFrame = weakSelf.frame; + toFrame.origin.x = targetX; + toFrame.size.width = targetWidth; + weakSelf.frame = toFrame; + }; + [self.animator start]; + } + }else if (self.scrollStyle == JXCategoryIndicatorScrollStyleSimple) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ + self.frame = targetIndicatorFrame; + } completion: nil]; + } + }else { + self.frame = targetIndicatorFrame; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.h new file mode 100644 index 0000000..5fe134e --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.h @@ -0,0 +1,30 @@ +// +// JXCategoryIndicatorRainbowLineView.h +// JXCategoryView +// +// Created by jiaxin on 2018/12/13. +// Copyright © 2018 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorLineView.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + 彩虹效果的指示器 + + !!!: 会无视 JXCategoryIndicatorLineView 的 indicatorColor 属性,以 indicatorColors 为准。 + */ +@interface JXCategoryIndicatorRainbowLineView : JXCategoryIndicatorLineView + +/** + 指示器颜色数组 + + 数量需要与 cell 的数量相等。没有提供默认值,必须要赋值该属性。 + categoryView 在 reloadData 的时候,也要一并更新该属性,不然会出现数组越界。 + */ +@property (nonatomic, strong) NSArray *indicatorColors; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.m new file mode 100644 index 0000000..9978c8c --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.m @@ -0,0 +1,38 @@ +// +// JXCategoryIndicatorRainbowLineView.m +// JXCategoryView +// +// Created by jiaxin on 2018/12/13. +// Copyright © 2018 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorRainbowLineView.h" +#import "JXCategoryFactory.h" + +@implementation JXCategoryIndicatorRainbowLineView + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + [super jx_refreshState:model]; + + UIColor *color = self.indicatorColors[model.selectedIndex]; + self.backgroundColor = color; +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + [super jx_contentScrollViewDidScroll:model]; + + UIColor *leftColor = self.indicatorColors[model.leftIndex]; + UIColor *rightColor = self.indicatorColors[model.rightIndex]; + UIColor *color = [JXCategoryFactory interpolationColorFrom:leftColor to:rightColor percent:model.percent]; + self.backgroundColor = color; +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + [super jx_selectedCell:model]; + + UIColor *color = self.indicatorColors[model.selectedIndex]; + self.backgroundColor = color; +} + + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.h new file mode 100644 index 0000000..e4dfdb2 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.h @@ -0,0 +1,14 @@ +// +// JXCategoryIndicatorTriangleView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +/// 三角形样式的指示器 +@interface JXCategoryIndicatorTriangleView : JXCategoryIndicatorComponentView + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.m new file mode 100644 index 0000000..96f5ab0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.m @@ -0,0 +1,109 @@ +// +// JXCategoryIndicatorTriangleView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorTriangleView.h" +#import "JXCategoryFactory.h" + +@interface JXCategoryIndicatorTriangleView () +@property (nonatomic, strong) CAShapeLayer *triangleLayer; +@end + +@implementation JXCategoryIndicatorTriangleView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (void)configureDefaulteValue { + self.indicatorWidth = 14; + self.indicatorHeight = 10; + + _triangleLayer = [CAShapeLayer layer]; + [self.layer addSublayer:self.triangleLayer]; +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - [self indicatorWidthValue:model.selectedCellFrame])/2; + CGFloat y = self.superview.bounds.size.height - [self indicatorHeightValue:model.selectedCellFrame] - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + y = self.verticalMargin; + } + self.frame = CGRectMake(x, y, [self indicatorWidthValue:model.selectedCellFrame], [self indicatorHeightValue:model.selectedCellFrame]); + + [CATransaction begin]; + [CATransaction setDisableActions:NO]; + self.triangleLayer.fillColor = self.indicatorColor.CGColor; + self.triangleLayer.frame = self.bounds; + UIBezierPath *path = [UIBezierPath bezierPath]; + if (self.componentPosition == JXCategoryComponentPosition_Bottom) { + [path moveToPoint:CGPointMake(self.bounds.size.width/2, 0)]; + [path addLineToPoint:CGPointMake(0, self.bounds.size.height)]; + [path addLineToPoint:CGPointMake(self.bounds.size.width, self.bounds.size.height)]; + } else { + [path moveToPoint:CGPointMake(0, 0)]; + [path addLineToPoint:CGPointMake(self.bounds.size.width, 0)]; + [path addLineToPoint:CGPointMake(self.bounds.size.width/2, self.bounds.size.height)]; + } + [path closePath]; + self.triangleLayer.path = path.CGPath; + [CATransaction commit]; +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + CGRect rightCellFrame = model.rightCellFrame; + CGRect leftCellFrame = model.leftCellFrame; + CGFloat percent = model.percent; + CGFloat targetWidth = [self indicatorWidthValue:model.leftCellFrame]; + CGFloat targetX = 0; + + if (percent == 0) { + targetX = leftCellFrame.origin.x + (leftCellFrame.size.width - targetWidth)/2.0; + } else { + CGFloat leftX = leftCellFrame.origin.x + (leftCellFrame.size.width - targetWidth)/2; + CGFloat rightX = rightCellFrame.origin.x + (rightCellFrame.size.width - targetWidth)/2; + targetX = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:percent]; + } + + //允许变动frame的情况:1、允许滚动;2、不允许滚动,但是已经通过手势滚动切换一页内容了; + if (self.isScrollEnabled == YES || (self.isScrollEnabled == NO && percent == 0)) { + CGRect frame = self.frame; + frame.origin.x = targetX; + self.frame = frame; + } +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + CGRect toFrame = self.frame; + toFrame.origin.x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - [self indicatorWidthValue:model.selectedCellFrame])/2; + if (self.isScrollEnabled) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ + self.frame = toFrame; + } completion:^(BOOL finished) { + }]; + } else { + self.frame = toFrame; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.h b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.h new file mode 100644 index 0000000..27796d5 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.h @@ -0,0 +1,13 @@ +// +// JXCategoryComponetCell.h +// DQGuess +// +// Created by jiaxin on 2018/7/25. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryBaseCell.h" + +@interface JXCategoryIndicatorCell : JXCategoryBaseCell + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m new file mode 100644 index 0000000..390701f --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m @@ -0,0 +1,52 @@ +// +// JXCategoryComponetCell.m +// DQGuess +// +// Created by jiaxin on 2018/7/25. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryIndicatorCell.h" +#import "JXCategoryIndicatorCellModel.h" + +@interface JXCategoryIndicatorCell () +@property (nonatomic, strong) UIView *separatorLine; +@end + +@implementation JXCategoryIndicatorCell + +- (void)initializeViews { + [super initializeViews]; + + self.separatorLine = [[UIView alloc] init]; + self.separatorLine.hidden = YES; + [self.contentView addSubview:self.separatorLine]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + JXCategoryIndicatorCellModel *model = (JXCategoryIndicatorCellModel *)self.cellModel; + CGFloat lineWidth = model.separatorLineSize.width; + CGFloat lineHeight = model.separatorLineSize.height; + + self.separatorLine.frame = CGRectMake(self.bounds.size.width - lineWidth + self.cellModel.cellSpacing/2, (self.bounds.size.height - lineHeight)/2.0, lineWidth, lineHeight); +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryIndicatorCellModel *model = (JXCategoryIndicatorCellModel *)cellModel; + self.separatorLine.backgroundColor = model.separatorLineColor; + self.separatorLine.hidden = !model.isSepratorLineShowEnabled; + + if (model.isCellBackgroundColorGradientEnabled) { + if (model.isSelected) { + self.contentView.backgroundColor = model.cellBackgroundSelectedColor; + }else { + self.contentView.backgroundColor = model.cellBackgroundUnselectedColor; + } + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.h b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.h new file mode 100644 index 0000000..21effb0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.h @@ -0,0 +1,24 @@ +// +// JXCategoryComponentCellModel.h +// DQGuess +// +// Created by jiaxin on 2018/7/25. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import +#import "JXCategoryBaseCellModel.h" + +@interface JXCategoryIndicatorCellModel : JXCategoryBaseCellModel + +@property (nonatomic, assign, getter=isSepratorLineShowEnabled) BOOL sepratorLineShowEnabled; +@property (nonatomic, strong) UIColor *separatorLineColor; +@property (nonatomic, assign) CGSize separatorLineSize; + +@property (nonatomic, assign) CGRect backgroundViewMaskFrame; // 底部指示器的 frame 转换到 cell 的 frame + +@property (nonatomic, assign, getter=isCellBackgroundColorGradientEnabled) BOOL cellBackgroundColorGradientEnabled; +@property (nonatomic, strong) UIColor *cellBackgroundSelectedColor; +@property (nonatomic, strong) UIColor *cellBackgroundUnselectedColor; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.m b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.m new file mode 100644 index 0000000..d79d6f4 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryComponentCellModel.m +// DQGuess +// +// Created by jiaxin on 2018/7/25. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryIndicatorCellModel.h" + +@implementation JXCategoryIndicatorCellModel + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.h b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.h new file mode 100644 index 0000000..a172268 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.h @@ -0,0 +1,48 @@ +// +// JXCategoryComponentView.h +// DQGuess +// +// Created by jiaxin on 2018/7/25. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryBaseView.h" +#import "JXCategoryIndicatorCell.h" +#import "JXCategoryIndicatorCellModel.h" +#import "JXCategoryIndicatorProtocol.h" + +@interface JXCategoryIndicatorView : JXCategoryBaseView + +@property (nonatomic, strong) NSArray *> *indicators; + +//----------------------ellBackgroundColor-----------------------// +//cell的背景色是否渐变。默认:NO +@property (nonatomic, assign, getter=isCellBackgroundColorGradientEnabled) BOOL cellBackgroundColorGradientEnabled; +//cell普通状态的背景色。默认:[UIColor clearColor] +@property (nonatomic, strong) UIColor *cellBackgroundUnselectedColor; +//cell选中状态的背景色。默认:[UIColor grayColor] +@property (nonatomic, strong) UIColor *cellBackgroundSelectedColor; + +//----------------------separatorLine-----------------------// +//是否显示分割线。默认为NO +@property (nonatomic, assign, getter=isSeparatorLineShowEnabled) BOOL separatorLineShowEnabled; +//分割线颜色。默认为[UIColor lightGrayColor] +@property (nonatomic, strong) UIColor *separatorLineColor; +//分割线的size。默认为CGSizeMake(1/[UIScreen mainScreen].scale, 20) +@property (nonatomic, assign) CGSize separatorLineSize; + +@end + +@interface JXCategoryIndicatorView (UISubclassingIndicatorHooks) + +/** + 当contentScrollView滚动时候,处理跟随手势的过渡效果。 + 根据cellModel的左右位置、是否选中、ratio进行过滤数据计算。 + + @param leftCellModel 左边的cellModel + @param rightCellModel 右边的cellModel + @param ratio 从左往右方向计算的百分比 + */ +- (void)refreshLeftCellModel:(JXCategoryBaseCellModel *)leftCellModel rightCellModel:(JXCategoryBaseCellModel *)rightCellModel ratio:(CGFloat)ratio NS_REQUIRES_SUPER; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.m b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.m new file mode 100644 index 0000000..861ccde --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.m @@ -0,0 +1,209 @@ +// +// JXCategoryIndicatorView.m +// DQGuess +// +// Created by jiaxin on 2018/7/25. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryIndicatorView.h" +#import "JXCategoryIndicatorBackgroundView.h" +#import "JXCategoryFactory.h" + +@interface JXCategoryIndicatorView() + +@end + +@implementation JXCategoryIndicatorView + +- (void)initializeData { + [super initializeData]; + + _separatorLineShowEnabled = NO; + _separatorLineColor = [UIColor lightGrayColor]; + _separatorLineSize = CGSizeMake(1/[UIScreen mainScreen].scale, 20); + _cellBackgroundColorGradientEnabled = NO; + _cellBackgroundUnselectedColor = [UIColor whiteColor]; + _cellBackgroundSelectedColor = [UIColor lightGrayColor]; +} + +- (void)initializeViews { + [super initializeViews]; +} + +- (void)setIndicators:(NSArray *> *)indicators { + _indicators = indicators; + + self.collectionView.indicators = indicators; +} + +- (void)refreshState { + [super refreshState]; + + CGRect selectedCellFrame = CGRectZero; + JXCategoryIndicatorCellModel *selectedCellModel; + for (int i = 0; i < self.dataSource.count; i++) { + JXCategoryIndicatorCellModel *cellModel = (JXCategoryIndicatorCellModel *)self.dataSource[i]; + cellModel.sepratorLineShowEnabled = self.isSeparatorLineShowEnabled; + cellModel.separatorLineColor = self.separatorLineColor; + cellModel.separatorLineSize = self.separatorLineSize; + cellModel.backgroundViewMaskFrame = CGRectZero; + cellModel.cellBackgroundColorGradientEnabled = self.isCellBackgroundColorGradientEnabled; + cellModel.cellBackgroundSelectedColor = self.cellBackgroundSelectedColor; + cellModel.cellBackgroundUnselectedColor = self.cellBackgroundUnselectedColor; + if (i == self.dataSource.count - 1) { + cellModel.sepratorLineShowEnabled = NO; + } + if (i == self.selectedIndex) { + selectedCellModel = cellModel; + selectedCellFrame = [self getTargetCellFrame:i]; + } + } + + for (UIView *indicator in self.indicators) { + if (self.dataSource.count <= 0) { + indicator.hidden = YES; + } else { + indicator.hidden = NO; + JXCategoryIndicatorParamsModel *indicatorParamsModel = [[JXCategoryIndicatorParamsModel alloc] init]; + indicatorParamsModel.selectedIndex = self.selectedIndex; + indicatorParamsModel.selectedCellFrame = selectedCellFrame; + [indicator jx_refreshState:indicatorParamsModel]; + + if ([indicator isKindOfClass:[JXCategoryIndicatorBackgroundView class]]) { + CGRect maskFrame = indicator.frame; + maskFrame.origin.x = maskFrame.origin.x - selectedCellFrame.origin.x; + selectedCellModel.backgroundViewMaskFrame = maskFrame; + } + } + } +} + +- (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel { + [super refreshSelectedCellModel:selectedCellModel unselectedCellModel:unselectedCellModel]; + + JXCategoryIndicatorCellModel *myUnselectedCellModel = (JXCategoryIndicatorCellModel *)unselectedCellModel; + myUnselectedCellModel.backgroundViewMaskFrame = CGRectZero; + myUnselectedCellModel.cellBackgroundUnselectedColor = self.cellBackgroundUnselectedColor; + myUnselectedCellModel.cellBackgroundSelectedColor = self.cellBackgroundSelectedColor; + + JXCategoryIndicatorCellModel *myselectedCellModel = (JXCategoryIndicatorCellModel *)selectedCellModel; + myselectedCellModel.cellBackgroundUnselectedColor = self.cellBackgroundUnselectedColor; + myselectedCellModel.cellBackgroundSelectedColor = self.cellBackgroundSelectedColor; +} + +- (void)contentOffsetOfContentScrollViewDidChanged:(CGPoint)contentOffset { + [super contentOffsetOfContentScrollViewDidChanged:contentOffset]; + + CGFloat ratio = contentOffset.x/self.contentScrollView.bounds.size.width; + if (ratio > self.dataSource.count - 1 || ratio < 0) { + //超过了边界,不需要处理 + return; + } + ratio = MAX(0, MIN(self.dataSource.count - 1, ratio)); + NSInteger baseIndex = floorf(ratio); + if (baseIndex + 1 >= self.dataSource.count) { + //右边越界了,不需要处理 + return; + } + CGFloat remainderRatio = ratio - baseIndex; + + CGRect leftCellFrame = [self getTargetCellFrame:baseIndex]; + CGRect rightCellFrame = [self getTargetCellFrame:baseIndex + 1]; + + JXCategoryIndicatorParamsModel *indicatorParamsModel = [[JXCategoryIndicatorParamsModel alloc] init]; + indicatorParamsModel.selectedIndex = self.selectedIndex; + indicatorParamsModel.leftIndex = baseIndex; + indicatorParamsModel.leftCellFrame = leftCellFrame; + indicatorParamsModel.rightIndex = baseIndex + 1; + indicatorParamsModel.rightCellFrame = rightCellFrame; + indicatorParamsModel.percent = remainderRatio; + if (remainderRatio == 0) { + for (UIView *indicator in self.indicators) { + [indicator jx_contentScrollViewDidScroll:indicatorParamsModel]; + } + } else { + JXCategoryIndicatorCellModel *leftCellModel = (JXCategoryIndicatorCellModel *)self.dataSource[baseIndex]; + leftCellModel.selectedType = JXCategoryCellSelectedTypeUnknown; + JXCategoryIndicatorCellModel *rightCellModel = (JXCategoryIndicatorCellModel *)self.dataSource[baseIndex + 1]; + rightCellModel.selectedType = JXCategoryCellSelectedTypeUnknown; + [self refreshLeftCellModel:leftCellModel rightCellModel:rightCellModel ratio:remainderRatio]; + + for (UIView *indicator in self.indicators) { + [indicator jx_contentScrollViewDidScroll:indicatorParamsModel]; + if ([indicator isKindOfClass:[JXCategoryIndicatorBackgroundView class]]) { + CGRect leftMaskFrame = indicator.frame; + leftMaskFrame.origin.x = leftMaskFrame.origin.x - leftCellFrame.origin.x; + leftCellModel.backgroundViewMaskFrame = leftMaskFrame; + + CGRect rightMaskFrame = indicator.frame; + rightMaskFrame.origin.x = rightMaskFrame.origin.x - rightCellFrame.origin.x; + rightCellModel.backgroundViewMaskFrame = rightMaskFrame; + } + } + + JXCategoryBaseCell *leftCell = (JXCategoryBaseCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:baseIndex inSection:0]]; + [leftCell reloadData:leftCellModel]; + JXCategoryBaseCell *rightCell = (JXCategoryBaseCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:baseIndex + 1 inSection:0]]; + [rightCell reloadData:rightCellModel]; + } +} + +- (BOOL)selectCellAtIndex:(NSInteger)index selectedType:(JXCategoryCellSelectedType)selectedType { + NSInteger lastSelectedIndex = self.selectedIndex; + BOOL result = [super selectCellAtIndex:index selectedType:selectedType]; + if (!result) { + return NO; + } + + CGRect clickedCellFrame = [self getTargetSelectedCellFrame:index selectedType:selectedType]; + + JXCategoryIndicatorCellModel *selectedCellModel = (JXCategoryIndicatorCellModel *)self.dataSource[index]; + selectedCellModel.selectedType = selectedType; + for (UIView *indicator in self.indicators) { + JXCategoryIndicatorParamsModel *indicatorParamsModel = [[JXCategoryIndicatorParamsModel alloc] init]; + indicatorParamsModel.lastSelectedIndex = lastSelectedIndex; + indicatorParamsModel.selectedIndex = index; + indicatorParamsModel.selectedCellFrame = clickedCellFrame; + indicatorParamsModel.selectedType = selectedType; + [indicator jx_selectedCell:indicatorParamsModel]; + if ([indicator isKindOfClass:[JXCategoryIndicatorBackgroundView class]]) { + CGRect maskFrame = indicator.frame; + maskFrame.origin.x = maskFrame.origin.x - clickedCellFrame.origin.x; + selectedCellModel.backgroundViewMaskFrame = maskFrame; + } + } + + JXCategoryIndicatorCell *selectedCell = (JXCategoryIndicatorCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; + [selectedCell reloadData:selectedCellModel]; + + return YES; +} + +@end + +@implementation JXCategoryIndicatorView (UISubclassingIndicatorHooks) + +- (void)refreshLeftCellModel:(JXCategoryBaseCellModel *)leftCellModel rightCellModel:(JXCategoryBaseCellModel *)rightCellModel ratio:(CGFloat)ratio { + if (self.isCellBackgroundColorGradientEnabled) { + //处理cell背景色渐变 + JXCategoryIndicatorCellModel *leftModel = (JXCategoryIndicatorCellModel *)leftCellModel; + JXCategoryIndicatorCellModel *rightModel = (JXCategoryIndicatorCellModel *)rightCellModel; + if (leftModel.isSelected) { + leftModel.cellBackgroundSelectedColor = [JXCategoryFactory interpolationColorFrom:self.cellBackgroundSelectedColor to:self.cellBackgroundUnselectedColor percent:ratio]; + leftModel.cellBackgroundUnselectedColor = self.cellBackgroundUnselectedColor; + }else { + leftModel.cellBackgroundUnselectedColor = [JXCategoryFactory interpolationColorFrom:self.cellBackgroundSelectedColor to:self.cellBackgroundUnselectedColor percent:ratio]; + leftModel.cellBackgroundSelectedColor = self.cellBackgroundSelectedColor; + } + if (rightModel.isSelected) { + rightModel.cellBackgroundSelectedColor = [JXCategoryFactory interpolationColorFrom:self.cellBackgroundUnselectedColor to:self.cellBackgroundSelectedColor percent:ratio]; + rightModel.cellBackgroundUnselectedColor = self.cellBackgroundUnselectedColor; + }else { + rightModel.cellBackgroundUnselectedColor = [JXCategoryFactory interpolationColorFrom:self.cellBackgroundUnselectedColor to:self.cellBackgroundSelectedColor percent:ratio]; + rightModel.cellBackgroundSelectedColor = self.cellBackgroundSelectedColor; + } + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/JXCategoryView.h b/Pods/JXCategoryView/Sources/JXCategoryView.h new file mode 100644 index 0000000..d90c0cc --- /dev/null +++ b/Pods/JXCategoryView/Sources/JXCategoryView.h @@ -0,0 +1,23 @@ + + +#import "JXCategoryBaseView.h" +#import "JXCategoryIndicatorView.h" +#import "JXCategoryTitleView.h" +#import "JXCategoryImageView.h" +#import "JXCategoryTitleImageView.h" +#import "JXCategoryNumberView.h" +#import "JXCategoryDotView.h" + +#import "JXCategoryFactory.h" +#import "JXCategoryIndicatorProtocol.h" +#import "JXCategoryViewDefines.h" +#import "JXCategoryListContainerView.h" + +#import "JXCategoryIndicatorComponentView.h" +#import "JXCategoryIndicatorLineView.h" +#import "JXCategoryIndicatorTriangleView.h" +#import "JXCategoryIndicatorImageView.h" +#import "JXCategoryIndicatorBackgroundView.h" +#import "JXCategoryIndicatorBallView.h" +#import "JXCategoryIndicatorRainbowLineView.h" + diff --git a/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.h b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.h new file mode 100644 index 0000000..acbc2db --- /dev/null +++ b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.h @@ -0,0 +1,13 @@ +// +// JXCategoryNumberCell.h +// DQGuess +// +// Created by jiaxin on 2018/4/9. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryTitleCell.h" + +@interface JXCategoryNumberCell : JXCategoryTitleCell +@property (nonatomic, strong) UILabel *numberLabel; +@end diff --git a/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.m b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.m new file mode 100644 index 0000000..e9bcbd4 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.m @@ -0,0 +1,62 @@ +// +// JXCategoryNumberCell.m +// DQGuess +// +// Created by jiaxin on 2018/4/9. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryNumberCell.h" +#import "JXCategoryNumberCellModel.h" + +@interface JXCategoryNumberCell () +@property (nonatomic, strong) NSLayoutConstraint *numberCenterXConstraint; +@property (nonatomic, strong) NSLayoutConstraint *numberCenterYConstraint; +@property (nonatomic, strong) NSLayoutConstraint *numberHeightConstraint; +@property (nonatomic, strong) NSLayoutConstraint *numberWidthConstraint; +@end + +@implementation JXCategoryNumberCell + +- (void)prepareForReuse { + [super prepareForReuse]; + + self.numberLabel.text = nil; +} + +- (void)initializeViews { + [super initializeViews]; + + self.numberLabel = [[UILabel alloc] init]; + self.numberLabel.textAlignment = NSTextAlignmentCenter; + self.numberLabel.layer.masksToBounds = YES; + [self.contentView addSubview:self.numberLabel]; + self.numberLabel.translatesAutoresizingMaskIntoConstraints = NO; + self.numberCenterXConstraint = [self.numberLabel.centerXAnchor constraintEqualToAnchor:self.titleLabel.trailingAnchor]; + self.numberCenterYConstraint = [self.numberLabel.centerYAnchor constraintEqualToAnchor:self.titleLabel.topAnchor]; + self.numberHeightConstraint = [self.numberLabel.heightAnchor constraintEqualToConstant:0]; + self.numberWidthConstraint = [self.numberLabel.widthAnchor constraintEqualToConstant:0]; + [NSLayoutConstraint activateConstraints:@[self.numberCenterXConstraint, self.numberCenterYConstraint, self.numberWidthConstraint, self.numberHeightConstraint]]; +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryNumberCellModel *myCellModel = (JXCategoryNumberCellModel *)cellModel; + self.numberLabel.hidden = (myCellModel.count == 0); + self.numberLabel.backgroundColor = myCellModel.numberBackgroundColor; + self.numberLabel.font = myCellModel.numberLabelFont; + self.numberLabel.textColor = myCellModel.numberTitleColor; + self.numberLabel.text = myCellModel.numberString; + self.numberLabel.layer.cornerRadius = myCellModel.numberLabelHeight/2.0; + self.numberHeightConstraint.constant = myCellModel.numberLabelHeight; + self.numberCenterXConstraint.constant = myCellModel.numberLabelOffset.x; + self.numberCenterYConstraint.constant = myCellModel.numberLabelOffset.y; + if (myCellModel.count < 10 && myCellModel.shouldMakeRoundWhenSingleNumber) { + self.numberWidthConstraint.constant = myCellModel.numberLabelHeight; + }else { + self.numberWidthConstraint.constant = myCellModel.numberStringWidth + myCellModel.numberLabelWidthIncrement; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.h b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.h new file mode 100644 index 0000000..0622a64 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.h @@ -0,0 +1,25 @@ +// +// JXCategoryNumberCellModel.h +// DQGuess +// +// Created by jiaxin on 2018/4/24. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryTitleCellModel.h" + +@interface JXCategoryNumberCellModel : JXCategoryTitleCellModel + +@property (nonatomic, assign) NSInteger count; +@property (nonatomic, copy) NSString *numberString; +@property (nonatomic, assign, readonly) CGFloat numberStringWidth; +@property (nonatomic, copy) void(^numberStringFormatterBlock)(NSInteger number); +@property (nonatomic, strong) UIColor *numberBackgroundColor; +@property (nonatomic, strong) UIColor *numberTitleColor; +@property (nonatomic, assign) CGFloat numberLabelWidthIncrement; +@property (nonatomic, assign) CGFloat numberLabelHeight; +@property (nonatomic, strong) UIFont *numberLabelFont; +@property (nonatomic, assign) CGPoint numberLabelOffset; +@property (nonatomic, assign) BOOL shouldMakeRoundWhenSingleNumber; + +@end diff --git a/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.m b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.m new file mode 100644 index 0000000..43a940a --- /dev/null +++ b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.m @@ -0,0 +1,37 @@ +// +// JXCategoryNumberCellModel.m +// DQGuess +// +// Created by jiaxin on 2018/4/24. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryNumberCellModel.h" + +@implementation JXCategoryNumberCellModel + +- (void)setNumberString:(NSString *)numberString { + _numberString = numberString; + + [self updateNumberSizeWidthIfNeeded]; +} + +- (void)setNumberLabelHeight:(CGFloat)numberLabelHeight { + _numberLabelHeight = numberLabelHeight; + + [self updateNumberSizeWidthIfNeeded]; +} + +- (void)setNumberLabelFont:(UIFont *)numberLabelFont { + _numberLabelFont = numberLabelFont; + + [self updateNumberSizeWidthIfNeeded]; +} + +- (void)updateNumberSizeWidthIfNeeded { + if (self.numberLabelFont != nil) { + _numberStringWidth = [self.numberString boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, self.numberLabelHeight) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : self.numberLabelFont} context:nil].size.width; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.h b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.h new file mode 100644 index 0000000..af033a4 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.h @@ -0,0 +1,60 @@ +// +// JXCategoryNumberView.h +// DQGuess +// +// Created by jiaxin on 2018/4/9. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryTitleView.h" +#import "JXCategoryNumberCell.h" +#import "JXCategoryNumberCellModel.h" + +@interface JXCategoryNumberView : JXCategoryTitleView + +/** + 需要与titles的count对应 + */ +@property (nonatomic, strong) NSArray *counts; + +/** + 内部默认不会格式化数字,直接转成字符串显示。比如业务需要数字超过999显示999+,可以通过该block实现。 + */ +@property (nonatomic, copy) NSString *(^numberStringFormatterBlock)(NSInteger number); + +/** + numberLabel的font,默认:[UIFont systemFontOfSize:11] + */ +@property (nonatomic, strong) UIFont *numberLabelFont; + +/** + 数字的背景色,默认:[UIColor colorWithRed:241/255.0 green:147/255.0 blue:95/255.0 alpha:1] + */ +@property (nonatomic, strong) UIColor *numberBackgroundColor; + +/** + 数字的title颜色,默认:[UIColor whiteColor] + */ +@property (nonatomic, strong) UIColor *numberTitleColor; + +/** + numberLabel的宽度补偿,label真实的宽度是文字内容的宽度加上补偿的宽度,默认:10 + */ +@property (nonatomic, assign) CGFloat numberLabelWidthIncrement; + +/** + numberLabel的高度,默认:14 + */ +@property (nonatomic, assign) CGFloat numberLabelHeight; + +/** + numberLabel x,y方向的偏移 (+值:水平方向向右,竖直方向向下) + */ +@property (nonatomic, assign) CGPoint numberLabelOffset; + +/** +当是单一数字时,是否让numberLabel变成圆。即numberLabel的宽度等于高度,cornerRadius等于高度/2。当为true,单一数字时会忽略numberLabelWidthIncrement属性。默认为NO; +*/ +@property (nonatomic, assign) BOOL shouldMakeRoundWhenSingleNumber; + +@end diff --git a/Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.m b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.m new file mode 100644 index 0000000..c7a7b40 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.m @@ -0,0 +1,61 @@ +// +// JXCategoryNumberView.m +// DQGuess +// +// Created by jiaxin on 2018/4/9. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryNumberView.h" + +@implementation JXCategoryNumberView + +- (void)dealloc { + self.numberStringFormatterBlock = nil; +} + +- (void)initializeData { + [super initializeData]; + + self.cellSpacing = 25; + _numberTitleColor = [UIColor whiteColor]; + _numberBackgroundColor = [UIColor colorWithRed:241/255.0 green:147/255.0 blue:95/255.0 alpha:1]; + _numberLabelHeight = 14; + _numberLabelWidthIncrement = 10; + _numberLabelFont = [UIFont systemFontOfSize:11]; + _shouldMakeRoundWhenSingleNumber = NO; +} + +- (Class)preferredCellClass { + return [JXCategoryNumberCell class]; +} + +- (void)refreshDataSource { + NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:self.titles.count]; + for (int i = 0; i < self.titles.count; i++) { + JXCategoryNumberCellModel *cellModel = [[JXCategoryNumberCellModel alloc] init]; + [tempArray addObject:cellModel]; + } + self.dataSource = [NSArray arrayWithArray:tempArray]; +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + [super refreshCellModel:cellModel index:index]; + + JXCategoryNumberCellModel *myCellModel = (JXCategoryNumberCellModel *)cellModel; + myCellModel.count = [self.counts[index] integerValue]; + if (self.numberStringFormatterBlock != nil) { + myCellModel.numberString = self.numberStringFormatterBlock(myCellModel.count); + }else { + myCellModel.numberString = [NSString stringWithFormat:@"%ld", (long)myCellModel.count]; + } + myCellModel.numberBackgroundColor = self.numberBackgroundColor; + myCellModel.numberTitleColor = self.numberTitleColor; + myCellModel.numberLabelHeight = self.numberLabelHeight; + myCellModel.numberLabelOffset = self.numberLabelOffset; + myCellModel.numberLabelWidthIncrement = self.numberLabelWidthIncrement; + myCellModel.numberLabelFont = self.numberLabelFont; + myCellModel.shouldMakeRoundWhenSingleNumber = self.shouldMakeRoundWhenSingleNumber; +} + +@end diff --git a/Pods/JXCategoryView/Sources/PrivacyInfo.xcprivacy b/Pods/JXCategoryView/Sources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..9021190 --- /dev/null +++ b/Pods/JXCategoryView/Sources/PrivacyInfo.xcprivacy @@ -0,0 +1,14 @@ + + + + + NSPrivacyAccessedAPITypes + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/Pods/JXCategoryView/Sources/RLTManager/RTLManager.h b/Pods/JXCategoryView/Sources/RLTManager/RTLManager.h new file mode 100644 index 0000000..6c0471e --- /dev/null +++ b/Pods/JXCategoryView/Sources/RLTManager/RTLManager.h @@ -0,0 +1,20 @@ +// +// RTLManager.h +// JXCategoryView +// +// Created by jiaxin on 2020/7/3. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RTLManager : NSObject + ++ (BOOL)supportRTL; ++ (void)horizontalFlipView:(UIView *)view; ++ (void)horizontalFlipViewIfNeeded:(UIView *)view; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/JXCategoryView/Sources/RLTManager/RTLManager.m b/Pods/JXCategoryView/Sources/RLTManager/RTLManager.m new file mode 100644 index 0000000..9ce9eab --- /dev/null +++ b/Pods/JXCategoryView/Sources/RLTManager/RTLManager.m @@ -0,0 +1,26 @@ +// +// RTLManager.m +// JXCategoryView +// +// Created by jiaxin on 2020/7/3. +// + +#import "RTLManager.h" + +@implementation RTLManager + ++ (BOOL)supportRTL { + return [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:UIView.appearance.semanticContentAttribute] == UIUserInterfaceLayoutDirectionRightToLeft; +} + ++ (void)horizontalFlipView:(UIView *)view { + view.transform = CGAffineTransformMakeScale(-1, 1); +} + ++ (void)horizontalFlipViewIfNeeded:(UIView *)view { + if ([self supportRTL]) { + [self horizontalFlipView:view]; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.h b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.h new file mode 100644 index 0000000..8ab54d6 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.h @@ -0,0 +1,27 @@ +// +// JXCategoryTitleCell.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorCell.h" +#import "JXCategoryViewDefines.h" +@class JXCategoryTitleCellModel; + +@interface JXCategoryTitleCell : JXCategoryIndicatorCell + +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) UILabel *maskTitleLabel; +@property (nonatomic, strong) NSLayoutConstraint *titleLabelCenterX; +@property (nonatomic, strong) NSLayoutConstraint *titleLabelCenterY; +@property (nonatomic, strong) NSLayoutConstraint *maskTitleLabelCenterX; + +- (JXCategoryCellSelectedAnimationBlock)preferredTitleZoomAnimationBlock:(JXCategoryTitleCellModel *)cellModel baseScale:(CGFloat)baseScale; + +- (JXCategoryCellSelectedAnimationBlock)preferredTitleStrokeWidthAnimationBlock:(JXCategoryTitleCellModel *)cellModel attributedString:(NSMutableAttributedString *)attributedString; + +- (JXCategoryCellSelectedAnimationBlock)preferredTitleColorAnimationBlock:(JXCategoryTitleCellModel *)cellModel; + +@end diff --git a/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.m b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.m new file mode 100644 index 0000000..ae2b446 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.m @@ -0,0 +1,240 @@ +// +// JXCategoryTitleCell.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCell.h" +#import "JXCategoryTitleCellModel.h" +#import "JXCategoryFactory.h" +#import "RTLManager.h" + +@interface JXCategoryTitleCell () +@property (nonatomic, strong) CALayer *titleMaskLayer; +@property (nonatomic, strong) CALayer *maskTitleMaskLayer; +@property (nonatomic, strong) NSLayoutConstraint *maskTitleLabelCenterY; +@end + +@implementation JXCategoryTitleCell + +- (void)initializeViews { + [super initializeViews]; + + self.isAccessibilityElement = true; + self.accessibilityTraits = UIAccessibilityTraitButton; + _titleLabel = [[UILabel alloc] init]; + self.titleLabel.clipsToBounds = YES; + self.titleLabel.textAlignment = NSTextAlignmentCenter; + self.titleLabel.translatesAutoresizingMaskIntoConstraints = NO; + [self.contentView addSubview:self.titleLabel]; + + self.titleLabelCenterX = [self.titleLabel.centerXAnchor constraintEqualToAnchor:self.contentView.centerXAnchor constant:0]; + self.titleLabelCenterY = [self.titleLabel.centerYAnchor constraintEqualToAnchor:self.contentView.centerYAnchor constant:0]; + + _titleMaskLayer = [CALayer layer]; + self.titleMaskLayer.backgroundColor = [UIColor redColor].CGColor; + + _maskTitleLabel = [[UILabel alloc] init]; + self.maskTitleLabel.hidden = YES; + self.maskTitleLabel.translatesAutoresizingMaskIntoConstraints = NO; + self.maskTitleLabel.textAlignment = NSTextAlignmentCenter; + [self.contentView addSubview:self.maskTitleLabel]; + + self.maskTitleLabelCenterX = [self.maskTitleLabel.centerXAnchor constraintEqualToAnchor:self.contentView.centerXAnchor]; + self.maskTitleLabelCenterY = [self.maskTitleLabel.centerYAnchor constraintEqualToAnchor:self.contentView.centerYAnchor]; + + _maskTitleMaskLayer = [CALayer layer]; + self.maskTitleMaskLayer.backgroundColor = [UIColor redColor].CGColor; + self.maskTitleLabel.layer.mask = self.maskTitleMaskLayer; + + [NSLayoutConstraint activateConstraints:@[self.titleLabelCenterX, self.titleLabelCenterY, self.maskTitleLabelCenterX, self.maskTitleLabelCenterY]]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + JXCategoryTitleCellModel *myCellModel = (JXCategoryTitleCellModel *)self.cellModel; + switch (myCellModel.titleLabelAnchorPointStyle) { + case JXCategoryTitleLabelAnchorPointStyleCenter: { + self.titleLabel.layer.anchorPoint = CGPointMake(0.5, 0.5); + self.maskTitleLabel.layer.anchorPoint = CGPointMake(0.5, 0.5); + self.titleLabelCenterY.constant = 0 + myCellModel.titleLabelVerticalOffset; + break; + } + case JXCategoryTitleLabelAnchorPointStyleTop: { + self.titleLabel.layer.anchorPoint = CGPointMake(0.5, 0); + self.maskTitleLabel.layer.anchorPoint = CGPointMake(0.5, 0); + CGFloat percent = (myCellModel.titleLabelCurrentZoomScale - myCellModel.titleLabelNormalZoomScale)/(myCellModel.titleLabelSelectedZoomScale - myCellModel.titleLabelNormalZoomScale); + self.titleLabelCenterY.constant = -myCellModel.titleHeight/2 - myCellModel.titleLabelVerticalOffset - myCellModel.titleLabelZoomSelectedVerticalOffset*percent; + break; + } + case JXCategoryTitleLabelAnchorPointStyleBottom: { + self.titleLabel.layer.anchorPoint = CGPointMake(0.5, 1); + self.maskTitleLabel.layer.anchorPoint = CGPointMake(0.5, 1); + CGFloat percent = (myCellModel.titleLabelCurrentZoomScale - myCellModel.titleLabelNormalZoomScale)/(myCellModel.titleLabelSelectedZoomScale - myCellModel.titleLabelNormalZoomScale); + self.titleLabelCenterY.constant = myCellModel.titleHeight/2 + myCellModel.titleLabelVerticalOffset + myCellModel.titleLabelZoomSelectedVerticalOffset*percent; + break; + } + } +} + + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryTitleCellModel *myCellModel = (JXCategoryTitleCellModel *)cellModel; + self.accessibilityLabel = myCellModel.title; + self.titleLabel.numberOfLines = myCellModel.titleNumberOfLines; + self.maskTitleLabel.numberOfLines = myCellModel.titleNumberOfLines; + + if (myCellModel.isTitleLabelZoomEnabled) { + //先把font设置为缩放的最大值,再缩小到最小值,最后根据当前的titleLabelZoomScale值,进行缩放更新。这样就能避免transform从小到大时字体模糊 + UIFont *maxScaleFont = [UIFont fontWithDescriptor:myCellModel.titleFont.fontDescriptor size:myCellModel.titleFont.pointSize*myCellModel.titleLabelSelectedZoomScale]; + CGFloat baseScale = myCellModel.titleFont.lineHeight/maxScaleFont.lineHeight; + if (myCellModel.isSelectedAnimationEnabled && [self checkCanStartSelectedAnimation:myCellModel]) { + JXCategoryCellSelectedAnimationBlock block = [self preferredTitleZoomAnimationBlock:myCellModel baseScale:baseScale]; + [self addSelectedAnimationBlock:block]; + } else { + self.titleLabel.font = maxScaleFont; + self.maskTitleLabel.font = maxScaleFont; + CGAffineTransform currentTransform = CGAffineTransformMakeScale(baseScale*myCellModel.titleLabelCurrentZoomScale, baseScale*myCellModel.titleLabelCurrentZoomScale); + self.titleLabel.transform = currentTransform; + self.maskTitleLabel.transform = currentTransform; + } + } else { + if (myCellModel.isSelected) { + self.titleLabel.font = myCellModel.titleSelectedFont; + self.maskTitleLabel.font = myCellModel.titleSelectedFont; + } else { + self.titleLabel.font = myCellModel.titleFont; + self.maskTitleLabel.font = myCellModel.titleFont; + } + } + + NSString *titleString = myCellModel.title ? myCellModel.title : @""; + NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:titleString]; + if (myCellModel.isTitleLabelStrokeWidthEnabled) { + if (myCellModel.isSelectedAnimationEnabled && [self checkCanStartSelectedAnimation:myCellModel]) { + JXCategoryCellSelectedAnimationBlock block = [self preferredTitleStrokeWidthAnimationBlock:myCellModel attributedString:attributedString]; + [self addSelectedAnimationBlock:block]; + } else { + [attributedString addAttribute:NSStrokeWidthAttributeName value:@(myCellModel.titleLabelCurrentStrokeWidth) range:NSMakeRange(0, titleString.length)]; + self.titleLabel.attributedText = attributedString; + self.maskTitleLabel.attributedText = attributedString; + } + } else { + self.titleLabel.attributedText = attributedString; + self.maskTitleLabel.attributedText = attributedString; + } + + if (myCellModel.isTitleLabelMaskEnabled) { + self.maskTitleLabel.hidden = NO; + self.titleLabel.textColor = myCellModel.titleNormalColor; + self.maskTitleLabel.textColor = myCellModel.titleSelectedColor; + [self.contentView setNeedsLayout]; + [self.contentView layoutIfNeeded]; + + CGRect topMaskframe = myCellModel.backgroundViewMaskFrame; + //将相对于cell的backgroundViewMaskFrame转换为相对于maskTitleLabel + //使用self.bounds.size.width而不是self.contentView.bounds.size.width。因为某些情况下,会出现self.bounds是正确的,而self.contentView.bounds还是重用前的状态。 + topMaskframe.origin.y = 0; + CGRect bottomMaskFrame = topMaskframe; + CGFloat maskStartX = 0; + if (self.maskTitleLabel.bounds.size.width >= self.bounds.size.width) { + topMaskframe.origin.x -= (self.maskTitleLabel.bounds.size.width -self.bounds.size.width)/2; + bottomMaskFrame.size.width = self.maskTitleLabel.bounds.size.width; + maskStartX = -(self.maskTitleLabel.bounds.size.width -self.bounds.size.width)/2; + } else { + bottomMaskFrame.size.width = self.bounds.size.width; + topMaskframe.origin.x -= (self.bounds.size.width -self.maskTitleLabel.bounds.size.width)/2; + maskStartX = 0; + } + bottomMaskFrame.origin.x = topMaskframe.origin.x; + if (topMaskframe.origin.x > maskStartX) { + bottomMaskFrame.origin.x = topMaskframe.origin.x - bottomMaskFrame.size.width; + } else { + bottomMaskFrame.origin.x = CGRectGetMaxX(topMaskframe); + } + + // 适配RTL布局(镜像x值) + if ([RTLManager supportRTL]) { + topMaskframe.origin.x = self.maskTitleMaskLayer.superlayer.frame.size.width - CGRectGetMaxX(topMaskframe); + bottomMaskFrame.origin.x = self.titleMaskLayer.superlayer.frame.size.width - CGRectGetMaxX(bottomMaskFrame); + } + + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + if (topMaskframe.size.width > 0 && CGRectIntersectsRect(topMaskframe, self.maskTitleLabel.frame)) { + self.titleLabel.layer.mask = self.titleMaskLayer; + self.maskTitleMaskLayer.frame = topMaskframe; + self.titleMaskLayer.frame = bottomMaskFrame; + } else { + self.maskTitleMaskLayer.frame = topMaskframe; + self.titleLabel.layer.mask = nil; + } + [CATransaction commit]; + } else { + self.maskTitleLabel.hidden = YES; + self.titleLabel.layer.mask = nil; + if (myCellModel.isSelectedAnimationEnabled && [self checkCanStartSelectedAnimation:myCellModel]) { + JXCategoryCellSelectedAnimationBlock block = [self preferredTitleColorAnimationBlock:myCellModel]; + [self addSelectedAnimationBlock:block]; + } else { + self.titleLabel.textColor = myCellModel.titleCurrentColor; + } + } + + [self startSelectedAnimationIfNeeded:myCellModel]; +} + +#pragma mark - Public + +- (JXCategoryCellSelectedAnimationBlock)preferredTitleZoomAnimationBlock:(JXCategoryTitleCellModel *)cellModel baseScale:(CGFloat)baseScale { + __weak typeof(self) weakSelf = self; + return ^(CGFloat percent) { + if (cellModel.isSelected) { + //将要选中,scale从小到大插值渐变 + cellModel.titleLabelCurrentZoomScale = [JXCategoryFactory interpolationFrom:cellModel.titleLabelNormalZoomScale to:cellModel.titleLabelSelectedZoomScale percent:percent]; + } else { + //将要取消选中,scale从大到小插值渐变 + cellModel.titleLabelCurrentZoomScale = [JXCategoryFactory interpolationFrom:cellModel.titleLabelSelectedZoomScale to:cellModel.titleLabelNormalZoomScale percent:percent]; + } + CGAffineTransform currentTransform = CGAffineTransformMakeScale(baseScale*cellModel.titleLabelCurrentZoomScale, baseScale*cellModel.titleLabelCurrentZoomScale); + weakSelf.titleLabel.transform = currentTransform; + weakSelf.maskTitleLabel.transform = currentTransform; + }; +} + +- (JXCategoryCellSelectedAnimationBlock)preferredTitleStrokeWidthAnimationBlock:(JXCategoryTitleCellModel *)cellModel attributedString:(NSMutableAttributedString *)attributedString { + __weak typeof(self) weakSelf = self; + return ^(CGFloat percent) { + if (cellModel.isSelected) { + //将要选中,StrokeWidth从小到大插值渐变 + cellModel.titleLabelCurrentStrokeWidth = [JXCategoryFactory interpolationFrom:cellModel.titleLabelNormalStrokeWidth to:cellModel.titleLabelSelectedStrokeWidth percent:percent]; + } else { + //将要取消选中,StrokeWidth从大到小插值渐变 + cellModel.titleLabelCurrentStrokeWidth = [JXCategoryFactory interpolationFrom:cellModel.titleLabelSelectedStrokeWidth to:cellModel.titleLabelNormalStrokeWidth percent:percent]; + } + [attributedString addAttribute:NSStrokeWidthAttributeName value:@(cellModel.titleLabelCurrentStrokeWidth) range:NSMakeRange(0, attributedString.string.length)]; + weakSelf.titleLabel.attributedText = attributedString; + weakSelf.maskTitleLabel.attributedText = attributedString; + }; +} + +- (JXCategoryCellSelectedAnimationBlock)preferredTitleColorAnimationBlock:(JXCategoryTitleCellModel *)cellModel { + __weak typeof(self) weakSelf = self; + return ^(CGFloat percent) { + if (cellModel.isSelected) { + //将要选中,textColor从titleNormalColor到titleSelectedColor插值渐变 + cellModel.titleCurrentColor = [JXCategoryFactory interpolationColorFrom:cellModel.titleNormalColor to:cellModel.titleSelectedColor percent:percent]; + } else { + //将要取消选中,textColor从titleSelectedColor到titleNormalColor插值渐变 + cellModel.titleCurrentColor = [JXCategoryFactory interpolationColorFrom:cellModel.titleSelectedColor to:cellModel.titleNormalColor percent:percent]; + } + weakSelf.titleLabel.textColor = cellModel.titleCurrentColor; + }; +} + +@end diff --git a/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.h b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.h new file mode 100644 index 0000000..ea7a298 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.h @@ -0,0 +1,44 @@ +// +// JXCategoryTitleCellModel.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorCellModel.h" +#import +#import "JXCategoryViewDefines.h" + +@interface JXCategoryTitleCellModel : JXCategoryIndicatorCellModel + +@property (nonatomic, copy) NSString *title; + +@property (nonatomic, assign, readonly) CGFloat titleHeight; + +@property (nonatomic, assign) NSInteger titleNumberOfLines; +@property (nonatomic, assign) CGFloat titleLabelVerticalOffset; + +@property (nonatomic, strong) UIColor *titleNormalColor; +@property (nonatomic, strong) UIColor *titleCurrentColor; +@property (nonatomic, strong) UIColor *titleSelectedColor; + +@property (nonatomic, strong) UIFont *titleFont; +@property (nonatomic, strong) UIFont *titleSelectedFont; + +@property (nonatomic, assign, getter=isTitleLabelMaskEnabled) BOOL titleLabelMaskEnabled; +@property (nonatomic, assign, getter=isTitleLabelZoomEnabled) BOOL titleLabelZoomEnabled; + +@property (nonatomic, assign) CGFloat titleLabelNormalZoomScale; +@property (nonatomic, assign) CGFloat titleLabelCurrentZoomScale; +@property (nonatomic, assign) CGFloat titleLabelSelectedZoomScale; +@property (nonatomic, assign) CGFloat titleLabelZoomSelectedVerticalOffset; + +@property (nonatomic, assign, getter=isTitleLabelStrokeWidthEnabled) BOOL titleLabelStrokeWidthEnabled; +@property (nonatomic, assign) CGFloat titleLabelNormalStrokeWidth; +@property (nonatomic, assign) CGFloat titleLabelCurrentStrokeWidth; +@property (nonatomic, assign) CGFloat titleLabelSelectedStrokeWidth; + +@property (nonatomic, assign) JXCategoryTitleLabelAnchorPointStyle titleLabelAnchorPointStyle; + +@end diff --git a/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.m b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.m new file mode 100644 index 0000000..bf0a27c --- /dev/null +++ b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.m @@ -0,0 +1,31 @@ +// +// JXCategoryTitleCellModel.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCellModel.h" + +@implementation JXCategoryTitleCellModel + +- (void)setTitle:(NSString *)title { + _title = title; + + [self updateNumberSizeWidthIfNeeded]; +} + +- (void)setTitleFont:(UIFont *)titleFont { + _titleFont = titleFont; + + [self updateNumberSizeWidthIfNeeded]; +} + +- (void)updateNumberSizeWidthIfNeeded { + if (self.titleFont) { + _titleHeight = [self.title boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : self.titleFont} context:nil].size.height; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.h b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.h new file mode 100644 index 0000000..33af07b --- /dev/null +++ b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.h @@ -0,0 +1,63 @@ +// +// JXCategoryView.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorView.h" +#import "JXCategoryTitleCell.h" +#import "JXCategoryTitleCellModel.h" +#import "JXCategoryViewDefines.h" + +@class JXCategoryTitleView; + +@protocol JXCategoryTitleViewDataSource +@optional +// 如果将JXCategoryTitleView嵌套进UITableView的cell,每次重用的时候,JXCategoryTitleView进行reloadData时,会重新计算所有的title宽度。所以该应用场景,需要UITableView的cellModel缓存titles的文字宽度,再通过该代理方法返回给JXCategoryTitleView。 +// 如果实现了该方法就以该方法返回的宽度为准,不触发内部默认的文字宽度计算。 +- (CGFloat)categoryTitleView:(JXCategoryTitleView *)titleView widthForTitle:(NSString *)title; +@end + + +@interface JXCategoryTitleView : JXCategoryIndicatorView + +@property (nonatomic, weak) id titleDataSource; + +@property (nonatomic, strong) NSArray *titles; + +@property (nonatomic, assign) NSInteger titleNumberOfLines; //默认:1 + +@property (nonatomic, strong) UIColor *titleColor; //默认:[UIColor blackColor] + +@property (nonatomic, strong) UIColor *titleSelectedColor; //默认:[UIColor redColor] + +@property (nonatomic, strong) UIFont *titleFont; //默认:[UIFont systemFontOfSize:15] + +@property (nonatomic, strong) UIFont *titleSelectedFont; //文字被选中的字体。默认:与titleFont一样 + +@property (nonatomic, assign, getter=isTitleColorGradientEnabled) BOOL titleColorGradientEnabled; //默认:NO,title的颜色是否渐变过渡 + +@property (nonatomic, assign, getter=isTitleLabelMaskEnabled) BOOL titleLabelMaskEnabled; //默认:NO,titleLabel是否遮罩过滤。 + +//----------------------titleLabelZoomEnabled-----------------------// +@property (nonatomic, assign, getter=isTitleLabelZoomEnabled) BOOL titleLabelZoomEnabled; //默认为NO。为YES时titleSelectedFont失效,以titleFont为准。 + +@property (nonatomic, assign, getter=isTitleLabelZoomScrollGradientEnabled) BOOL titleLabelZoomScrollGradientEnabled; //手势滚动中,是否需要更新状态。默认为YES + +@property (nonatomic, assign) CGFloat titleLabelZoomScale; //默认1.2,titleLabelZoomEnabled为YES才生效。是对字号的缩放,比如titleFont的pointSize为10,放大之后字号就是10*1.2=12。 + +@property (nonatomic, assign) CGFloat titleLabelZoomSelectedVerticalOffset; //titleLabelZoomEnabled设置为YES,会对titleLabel进行transform缩放,当titleLabelZoomScale过大时(比如设置为2),选中的文本被放大之后底部会有很大的空白,从视觉上看就跟其他未选中的文本不在一个水平线上。这个时候就可以用这个值进行调整。 + +//----------------------titleLabelStrokeWidth-----------------------// +@property (nonatomic, assign, getter=isTitleLabelStrokeWidthEnabled) BOOL titleLabelStrokeWidthEnabled; //默认:NO + +@property (nonatomic, assign) CGFloat titleLabelSelectedStrokeWidth; //默认:-3,用于控制字体的粗细(底层通过NSStrokeWidthAttributeName实现)。使用该属性,务必让titleFont和titleSelectedFont设置为一样的!!! + +//----------------------titleLabel缩放中心位置-----------------------// +@property (nonatomic, assign) CGFloat titleLabelVerticalOffset; //titleLabel锚点垂直方向的位置偏移,数值越大越偏离中心,默认为:0 + +@property (nonatomic, assign) JXCategoryTitleLabelAnchorPointStyle titleLabelAnchorPointStyle; //titleLabel锚点位置,用于调整titleLabel缩放时的基准位置。默认为:JXCategoryTitleLabelAnchorPointStyleCenter + +@end diff --git a/Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.m b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.m new file mode 100644 index 0000000..ac2d5a0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.m @@ -0,0 +1,164 @@ +// +// JXCategoryView.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleView.h" +#import "JXCategoryFactory.h" + +@implementation JXCategoryTitleView + +- (void)initializeData { + [super initializeData]; + + _titleNumberOfLines = 1; + _titleLabelZoomEnabled = NO; + _titleLabelZoomScale = 1.2; + _titleColor = [UIColor blackColor]; + _titleSelectedColor = [UIColor redColor]; + _titleFont = [UIFont systemFontOfSize:15]; + _titleColorGradientEnabled = NO; + _titleLabelMaskEnabled = NO; + _titleLabelZoomScrollGradientEnabled = YES; + _titleLabelStrokeWidthEnabled = NO; + _titleLabelSelectedStrokeWidth = -3; + _titleLabelVerticalOffset = 0; + _titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; +} + +- (UIFont *)titleSelectedFont { + if (_titleSelectedFont) { + return _titleSelectedFont; + } + return self.titleFont; +} + +#pragma mark - Override + +- (Class)preferredCellClass { + return [JXCategoryTitleCell class]; +} + +- (void)refreshDataSource { + NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:self.titles.count]; + for (int i = 0; i < self.titles.count; i++) { + JXCategoryTitleCellModel *cellModel = [[JXCategoryTitleCellModel alloc] init]; + [tempArray addObject:cellModel]; + } + self.dataSource = [NSArray arrayWithArray:tempArray]; +} + +- (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel { + [super refreshSelectedCellModel:selectedCellModel unselectedCellModel:unselectedCellModel]; + + JXCategoryTitleCellModel *myUnselectedCellModel = (JXCategoryTitleCellModel *)unselectedCellModel; + JXCategoryTitleCellModel *myselectedCellModel = (JXCategoryTitleCellModel *)selectedCellModel; + if (self.isSelectedAnimationEnabled && (selectedCellModel.selectedType == JXCategoryCellSelectedTypeClick || selectedCellModel.selectedType == JXCategoryCellSelectedTypeCode)) { + //开启了动画过渡,且cell在屏幕内,current的属性值会在cell里面进行动画插值更新 + //1、当unselectedCell在屏幕外的时候,还是需要在这里更新值 + //2、当selectedCell在屏幕外的时候,还是需要在这里更新值(比如调用selectItemAtIndex方法选中的时候) + BOOL isUnselectedCellVisible = NO; + BOOL isSelectedCellVisible = NO; + NSArray *indexPaths = [self.collectionView indexPathsForVisibleItems]; + for (NSIndexPath *indexPath in indexPaths) { + if (indexPath.item == myUnselectedCellModel.index) { + isUnselectedCellVisible = YES; + continue; + } else if (indexPath.item == myselectedCellModel.index) { + isSelectedCellVisible = YES; + continue; + } + } + if (!isUnselectedCellVisible) { + //但是当unselectedCell在屏幕外时,不会在cell里面通过动画插值更新,在这里直接更新 + myUnselectedCellModel.titleCurrentColor = myUnselectedCellModel.titleNormalColor; + myUnselectedCellModel.titleLabelCurrentZoomScale = myUnselectedCellModel.titleLabelNormalZoomScale; + myUnselectedCellModel.titleLabelCurrentStrokeWidth = myUnselectedCellModel.titleLabelNormalStrokeWidth; + } + if (!isSelectedCellVisible) { + //但是当selectedCell在屏幕外时,不会在cell里面通过动画插值更新,在这里直接更新 + myselectedCellModel.titleCurrentColor = myselectedCellModel.titleSelectedColor; + myselectedCellModel.titleLabelCurrentZoomScale = myselectedCellModel.titleLabelSelectedZoomScale; + myselectedCellModel.titleLabelCurrentStrokeWidth = myselectedCellModel.titleLabelSelectedStrokeWidth; + } + } else { + //没有开启动画,可以直接更新属性 + myselectedCellModel.titleCurrentColor = myselectedCellModel.titleSelectedColor; + myselectedCellModel.titleLabelCurrentZoomScale = myselectedCellModel.titleLabelSelectedZoomScale; + myselectedCellModel.titleLabelCurrentStrokeWidth = myselectedCellModel.titleLabelSelectedStrokeWidth; + + myUnselectedCellModel.titleCurrentColor = myUnselectedCellModel.titleNormalColor; + myUnselectedCellModel.titleLabelCurrentZoomScale = myUnselectedCellModel.titleLabelNormalZoomScale; + myUnselectedCellModel.titleLabelCurrentStrokeWidth = myUnselectedCellModel.titleLabelNormalStrokeWidth; + } +} + +- (void)refreshLeftCellModel:(JXCategoryBaseCellModel *)leftCellModel rightCellModel:(JXCategoryBaseCellModel *)rightCellModel ratio:(CGFloat)ratio { + [super refreshLeftCellModel:leftCellModel rightCellModel:rightCellModel ratio:ratio]; + + JXCategoryTitleCellModel *leftModel = (JXCategoryTitleCellModel *)leftCellModel; + JXCategoryTitleCellModel *rightModel = (JXCategoryTitleCellModel *)rightCellModel; + + if (self.isTitleLabelZoomEnabled && self.isTitleLabelZoomScrollGradientEnabled) { + leftModel.titleLabelCurrentZoomScale = [JXCategoryFactory interpolationFrom:self.titleLabelZoomScale to:1.0 percent:ratio]; + rightModel.titleLabelCurrentZoomScale = [JXCategoryFactory interpolationFrom:1.0 to:self.titleLabelZoomScale percent:ratio]; + } + + if (self.isTitleLabelStrokeWidthEnabled) { + leftModel.titleLabelCurrentStrokeWidth = [JXCategoryFactory interpolationFrom:leftModel.titleLabelSelectedStrokeWidth to:leftModel.titleLabelNormalStrokeWidth percent:ratio]; + rightModel.titleLabelCurrentStrokeWidth = [JXCategoryFactory interpolationFrom:rightModel.titleLabelNormalStrokeWidth to:rightModel.titleLabelSelectedStrokeWidth percent:ratio]; + } + + if (self.isTitleColorGradientEnabled) { + leftModel.titleCurrentColor = [JXCategoryFactory interpolationColorFrom:self.titleSelectedColor to:self.titleColor percent:ratio]; + rightModel.titleCurrentColor = [JXCategoryFactory interpolationColorFrom:self.titleColor to:self.titleSelectedColor percent:ratio]; + } +} + +- (CGFloat)preferredCellWidthAtIndex:(NSInteger)index { + if (self.cellWidth == JXCategoryViewAutomaticDimension) { + if (self.titleDataSource && [self.titleDataSource respondsToSelector:@selector(categoryTitleView:widthForTitle:)]) { + return [self.titleDataSource categoryTitleView:self widthForTitle:self.titles[index]]; + } else { + return ceilf([self.titles[index] boundingRectWithSize:CGSizeMake(MAXFLOAT, self.bounds.size.height) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : self.titleFont} context:nil].size.width); + } + } else { + return self.cellWidth; + } +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + [super refreshCellModel:cellModel index:index]; + + JXCategoryTitleCellModel *model = (JXCategoryTitleCellModel *)cellModel; + model.title = self.titles[index]; + model.titleNumberOfLines = self.titleNumberOfLines; + model.titleFont = self.titleFont; + model.titleSelectedFont = self.titleSelectedFont; + model.titleNormalColor = self.titleColor; + model.titleSelectedColor = self.titleSelectedColor; + model.titleLabelMaskEnabled = self.isTitleLabelMaskEnabled; + model.titleLabelZoomEnabled = self.isTitleLabelZoomEnabled; + model.titleLabelNormalZoomScale = 1; + model.titleLabelZoomSelectedVerticalOffset = self.titleLabelZoomSelectedVerticalOffset; + model.titleLabelSelectedZoomScale = self.titleLabelZoomScale; + model.titleLabelStrokeWidthEnabled = self.isTitleLabelStrokeWidthEnabled; + model.titleLabelNormalStrokeWidth = 0; + model.titleLabelSelectedStrokeWidth = self.titleLabelSelectedStrokeWidth; + model.titleLabelVerticalOffset = self.titleLabelVerticalOffset; + model.titleLabelAnchorPointStyle = self.titleLabelAnchorPointStyle; + if (index == self.selectedIndex) { + model.titleCurrentColor = model.titleSelectedColor; + model.titleLabelCurrentZoomScale = model.titleLabelSelectedZoomScale; + model.titleLabelCurrentStrokeWidth= model.titleLabelSelectedStrokeWidth; + }else { + model.titleCurrentColor = model.titleNormalColor; + model.titleLabelCurrentZoomScale = model.titleLabelNormalZoomScale; + model.titleLabelCurrentStrokeWidth = model.titleLabelNormalStrokeWidth; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.h b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.h new file mode 100644 index 0000000..e430a67 --- /dev/null +++ b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.h @@ -0,0 +1,15 @@ +// +// JXCategoryImageCell.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/8. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCell.h" + +@interface JXCategoryTitleImageCell : JXCategoryTitleCell + +@property (nonatomic, strong) UIImageView *imageView; + +@end diff --git a/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.m b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.m new file mode 100644 index 0000000..ae6c39d --- /dev/null +++ b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.m @@ -0,0 +1,148 @@ +// +// JXCategoryImageCell.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/8. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleImageCell.h" +#import "JXCategoryTitleImageCellModel.h" + +@interface JXCategoryTitleImageCell() +@property (nonatomic, strong) id currentImageInfo; +@property (nonatomic, strong) NSString *currentImageName; +@property (nonatomic, strong) NSURL *currentImageURL; +@property (nonatomic, strong) UIStackView *stackView; +@property (nonatomic, strong) NSLayoutConstraint *imageViewWidthConstraint; +@property (nonatomic, strong) NSLayoutConstraint *imageViewHeightConstraint; +@end + +@implementation JXCategoryTitleImageCell + +- (void)prepareForReuse { + [super prepareForReuse]; + + self.currentImageInfo = nil; + self.currentImageName = nil; + self.currentImageURL = nil; +} + +- (void)initializeViews { + [super initializeViews]; + + [self.titleLabel removeFromSuperview]; + + _imageView = [[UIImageView alloc] init]; + self.imageView.translatesAutoresizingMaskIntoConstraints = NO; + self.imageView.contentMode = UIViewContentModeScaleAspectFit; + self.imageViewWidthConstraint = [self.imageView.widthAnchor constraintEqualToConstant:0]; + self.imageViewWidthConstraint.active = YES; + self.imageViewHeightConstraint = [self.imageView.heightAnchor constraintEqualToConstant:0]; + self.imageViewHeightConstraint.active = YES; + + _stackView = [[UIStackView alloc] init]; + self.stackView.alignment = UIStackViewAlignmentCenter; + [self.contentView addSubview:self.stackView]; + self.stackView.translatesAutoresizingMaskIntoConstraints = NO; + [self.stackView.centerXAnchor constraintEqualToAnchor:self.contentView.centerXAnchor].active = YES; + [self.stackView.centerYAnchor constraintEqualToAnchor:self.contentView.centerYAnchor].active = YES; +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryTitleImageCellModel *myCellModel = (JXCategoryTitleImageCellModel *)cellModel; + + self.titleLabel.hidden = NO; + self.imageView.hidden = NO; + [self.stackView removeArrangedSubview:self.titleLabel]; + [self.stackView removeArrangedSubview:self.imageView]; + CGSize imageSize = myCellModel.imageSize; + self.imageViewWidthConstraint.constant = imageSize.width; + self.imageViewHeightConstraint.constant = imageSize.height; + self.stackView.spacing = myCellModel.titleImageSpacing; + + switch (myCellModel.imageType) { + case JXCategoryTitleImageType_TopImage: { + self.stackView.axis = UILayoutConstraintAxisVertical; + [self.stackView addArrangedSubview:self.imageView]; + [self.stackView addArrangedSubview:self.titleLabel]; + break; + } + case JXCategoryTitleImageType_LeftImage: { + self.stackView.axis = UILayoutConstraintAxisHorizontal; + [self.stackView addArrangedSubview:self.imageView]; + [self.stackView addArrangedSubview:self.titleLabel]; + break; + } + case JXCategoryTitleImageType_BottomImage: { + self.stackView.axis = UILayoutConstraintAxisVertical; + [self.stackView addArrangedSubview:self.titleLabel]; + [self.stackView addArrangedSubview:self.imageView]; + break; + } + case JXCategoryTitleImageType_RightImage: { + self.stackView.axis = UILayoutConstraintAxisHorizontal; + [self.stackView addArrangedSubview:self.titleLabel]; + [self.stackView addArrangedSubview:self.imageView]; + break; + } + case JXCategoryTitleImageType_OnlyImage: { + self.titleLabel.hidden = YES; + [self.stackView addArrangedSubview:self.imageView]; + break; + } + case JXCategoryTitleImageType_OnlyTitle: { + self.imageView.hidden = YES; + [self.stackView addArrangedSubview:self.titleLabel]; + break; + } + } + + //因为`- (void)reloadData:(JXCategoryBaseCellModel *)cellModel`方法会回调多次,尤其是左右滚动的时候会调用无数次,如果每次都触发图片加载,会非常消耗性能。所以只会在图片发生了变化的时候,才进行图片加载。 + if (myCellModel.loadImageBlock != nil) { + id currentImageInfo = myCellModel.imageInfo; + if (myCellModel.isSelected) { + currentImageInfo = myCellModel.selectedImageInfo; + } + if (currentImageInfo && ![currentImageInfo isEqual:self.currentImageInfo]) { + self.currentImageInfo = currentImageInfo; + if (myCellModel.loadImageBlock) { + myCellModel.loadImageBlock(self.imageView, currentImageInfo); + } + } + }else { + NSString *currentImageName; + NSURL *currentImageURL; + if (myCellModel.imageName) { + currentImageName = myCellModel.imageName; + } else if (myCellModel.imageURL) { + currentImageURL = myCellModel.imageURL; + } + if (myCellModel.isSelected) { + if (myCellModel.selectedImageName) { + currentImageName = myCellModel.selectedImageName; + } else if (myCellModel.selectedImageURL) { + currentImageURL = myCellModel.selectedImageURL; + } + } + if (currentImageName && ![currentImageName isEqualToString:self.currentImageName]) { + self.currentImageName = currentImageName; + self.imageView.image = [UIImage imageNamed:currentImageName]; + } else if (currentImageURL && ![currentImageURL.absoluteString isEqualToString:self.currentImageURL.absoluteString]) { + self.currentImageURL = currentImageURL; + if (myCellModel.loadImageCallback) { + myCellModel.loadImageCallback(self.imageView, currentImageURL); + } + } + } + + if (myCellModel.isImageZoomEnabled) { + self.imageView.transform = CGAffineTransformMakeScale(myCellModel.imageZoomScale, myCellModel.imageZoomScale); + } else { + self.imageView.transform = CGAffineTransformIdentity; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.h b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.h new file mode 100644 index 0000000..bd0111a --- /dev/null +++ b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.h @@ -0,0 +1,43 @@ +// +// JXCategoryTitleImageCellModel.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/8. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCellModel.h" + +typedef NS_ENUM(NSUInteger, JXCategoryTitleImageType) { + JXCategoryTitleImageType_TopImage = 0, + JXCategoryTitleImageType_LeftImage, + JXCategoryTitleImageType_BottomImage, + JXCategoryTitleImageType_RightImage, + JXCategoryTitleImageType_OnlyImage, + JXCategoryTitleImageType_OnlyTitle, +}; + +@interface JXCategoryTitleImageCellModel : JXCategoryTitleCellModel + +@property (nonatomic, assign) JXCategoryTitleImageType imageType; + +@property (nonatomic, strong) id imageInfo; +@property (nonatomic, strong) id selectedImageInfo; +@property (nonatomic, copy) void(^loadImageBlock)(UIImageView *imageView, id info); + +@property (nonatomic, assign) CGSize imageSize; //默认CGSizeMake(20, 20) + +@property (nonatomic, assign) CGFloat titleImageSpacing; //titleLabel和ImageView的间距,默认5 + +@property (nonatomic, assign, getter=isImageZoomEnabled) BOOL imageZoomEnabled; + +@property (nonatomic, assign) CGFloat imageZoomScale; + +/// 以下属性将会被弃用 +@property (nonatomic, copy) NSString *imageName; //加载bundle内的图片 +@property (nonatomic, strong) NSURL *imageURL; //图片URL +@property (nonatomic, copy) NSString *selectedImageName; +@property (nonatomic, strong) NSURL *selectedImageURL; +@property (nonatomic, copy) void(^loadImageCallback)(UIImageView *imageView, NSURL *imageURL); + +@end diff --git a/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.m b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.m new file mode 100644 index 0000000..ecf3539 --- /dev/null +++ b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryTitleImageCellModel.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/8. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleImageCellModel.h" + +@implementation JXCategoryTitleImageCellModel + +@end diff --git a/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.h b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.h new file mode 100644 index 0000000..9a48f43 --- /dev/null +++ b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.h @@ -0,0 +1,42 @@ +// +// JXCategoryTitleImageView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/8. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleView.h" +#import "JXCategoryTitleImageCell.h" +#import "JXCategoryTitleImageCellModel.h" + +@interface JXCategoryTitleImageView : JXCategoryTitleView + +//imageInfo数组可以传入imageName字符串或者image的URL地址等,然后会通过loadImageBlock透传回来,把imageView对于图片的加载过程完全交给使用者决定。 +@property (nonatomic, strong) NSArray *imageInfoArray; +@property (nonatomic, strong) NSArray *selectedImageInfoArray; +@property (nonatomic, copy) void(^loadImageBlock)(UIImageView *imageView, id info); +//图片尺寸。默认CGSizeMake(20, 20) +@property (nonatomic, assign) CGSize imageSize; +//titleLabel和ImageView的间距,默认5 +@property (nonatomic, assign) CGFloat titleImageSpacing; +//图片是否缩放。默认为NO +@property (nonatomic, assign, getter=isImageZoomEnabled) BOOL imageZoomEnabled; +//图片缩放的最大scale。默认1.2,imageZoomEnabled为YES才生效 +@property (nonatomic, assign) CGFloat imageZoomScale; +//默认@[JXCategoryTitleImageType_LeftImage...] +@property (nonatomic, strong) NSArray *imageTypes; + +//下面的属性将会被弃用,请使用`imageInfoArray`、`selectedImageInfoArray`、`loadImageBlock`属性完成需求。 +//普通状态下的imageNames,通过[UIImage imageNamed:]方法加载 +@property (nonatomic, strong) NSArray *imageNames; +//选中状态下的imageNames,通过[UIImage imageNamed:]方法加载。可选 +@property (nonatomic, strong) NSArray *selectedImageNames; +//普通状态下的imageURLs,通过loadImageCallback回调加载 +@property (nonatomic, strong) NSArray *imageURLs; +//选中状态下的selectedImageURLs,通过loadImageCallback回调加载 +@property (nonatomic, strong) NSArray *selectedImageURLs; +//使用imageURL从远端下载图片进行加载,建议使用SDWebImage等第三方库进行下载。 +@property (nonatomic, copy) void(^loadImageCallback)(UIImageView *imageView, NSURL *imageURL); + +@end diff --git a/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.m b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.m new file mode 100644 index 0000000..ad2f560 --- /dev/null +++ b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.m @@ -0,0 +1,126 @@ +// +// JXCategoryTitleImageView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/8. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleImageView.h" +#import "JXCategoryTitleImageCell.h" +#import "JXCategoryTitleImageCellModel.h" +#import "JXCategoryFactory.h" + +@implementation JXCategoryTitleImageView + +- (void)dealloc { + self.loadImageBlock = nil; + self.loadImageCallback = nil; +} + +- (void)initializeData { + [super initializeData]; + + _imageSize = CGSizeMake(20, 20); + _titleImageSpacing = 5; + _imageZoomEnabled = NO; + _imageZoomScale = 1.2; +} + +- (Class)preferredCellClass { + return [JXCategoryTitleImageCell class]; +} + +- (void)refreshDataSource { + NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:self.titles.count]; + for (int i = 0; i < self.titles.count; i++) { + JXCategoryTitleImageCellModel *cellModel = [[JXCategoryTitleImageCellModel alloc] init]; + [tempArray addObject:cellModel]; + } + self.dataSource = [NSArray arrayWithArray:tempArray]; + + if (!self.imageTypes || (self.imageTypes.count == 0)) { + NSMutableArray *types = [NSMutableArray arrayWithCapacity:self.titles.count]; + for (int i = 0; i< self.titles.count; i++) { + [types addObject:@(JXCategoryTitleImageType_LeftImage)]; + } + self.imageTypes = [NSArray arrayWithArray:types]; + } +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + [super refreshCellModel:cellModel index:index]; + + JXCategoryTitleImageCellModel *myCellModel = (JXCategoryTitleImageCellModel *)cellModel; + myCellModel.loadImageBlock = self.loadImageBlock; + myCellModel.loadImageCallback = self.loadImageCallback; + myCellModel.imageType = [self.imageTypes[index] integerValue]; + myCellModel.imageSize = self.imageSize; + myCellModel.titleImageSpacing = self.titleImageSpacing; + if (self.imageInfoArray && self.imageInfoArray.count != 0) { + myCellModel.imageInfo = self.imageInfoArray[index]; + }else if (self.imageNames && self.imageNames.count != 0) { + myCellModel.imageName = self.imageNames[index]; + }else if (self.imageURLs && self.imageURLs.count != 0) { + myCellModel.imageURL = self.imageURLs[index]; + } + if (self.selectedImageInfoArray && self.selectedImageInfoArray.count != 0) { + myCellModel.selectedImageInfo = self.selectedImageInfoArray[index]; + }else if (self.selectedImageNames && self.selectedImageNames.count != 0) { + myCellModel.selectedImageName = self.selectedImageNames[index]; + }else if (self.selectedImageURLs && self.selectedImageURLs.count != 0) { + myCellModel.selectedImageURL = self.selectedImageURLs[index]; + } + myCellModel.imageZoomEnabled = self.imageZoomEnabled; + myCellModel.imageZoomScale = ((index == self.selectedIndex) ? self.imageZoomScale : 1.0); +} + +- (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel { + [super refreshSelectedCellModel:selectedCellModel unselectedCellModel:unselectedCellModel]; + + JXCategoryTitleImageCellModel *myUnselectedCellModel = (JXCategoryTitleImageCellModel *)unselectedCellModel; + myUnselectedCellModel.imageZoomScale = 1.0; + + JXCategoryTitleImageCellModel *myselectedCellModel = (JXCategoryTitleImageCellModel *)selectedCellModel; + myselectedCellModel.imageZoomScale = self.imageZoomScale; +} + +- (void)refreshLeftCellModel:(JXCategoryBaseCellModel *)leftCellModel rightCellModel:(JXCategoryBaseCellModel *)rightCellModel ratio:(CGFloat)ratio { + [super refreshLeftCellModel:leftCellModel rightCellModel:rightCellModel ratio:ratio]; + + JXCategoryTitleImageCellModel *leftModel = (JXCategoryTitleImageCellModel *)leftCellModel; + JXCategoryTitleImageCellModel *rightModel = (JXCategoryTitleImageCellModel *)rightCellModel; + + if (self.isImageZoomEnabled) { + leftModel.imageZoomScale = [JXCategoryFactory interpolationFrom:self.imageZoomScale to:1.0 percent:ratio]; + rightModel.imageZoomScale = [JXCategoryFactory interpolationFrom:1.0 to:self.imageZoomScale percent:ratio]; + } +} + +- (CGFloat)preferredCellWidthAtIndex:(NSInteger)index { + if (self.cellWidth == JXCategoryViewAutomaticDimension) { + CGFloat titleWidth = [super preferredCellWidthAtIndex:index]; + JXCategoryTitleImageType type = [self.imageTypes[index] integerValue]; + CGFloat cellWidth = 0; + switch (type) { + case JXCategoryTitleImageType_OnlyTitle: + cellWidth = titleWidth; + break; + case JXCategoryTitleImageType_OnlyImage: + cellWidth = self.imageSize.width; + break; + case JXCategoryTitleImageType_LeftImage: + case JXCategoryTitleImageType_RightImage: + cellWidth = titleWidth + self.titleImageSpacing + self.imageSize.width; + break; + case JXCategoryTitleImageType_TopImage: + case JXCategoryTitleImageType_BottomImage: + cellWidth = MAX(titleWidth, self.imageSize.width); + break; + } + return cellWidth; + } + return self.cellWidth; +} + +@end diff --git a/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.h b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.h new file mode 100644 index 0000000..804a6fb --- /dev/null +++ b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.h @@ -0,0 +1,17 @@ +// +// JXCategoryTitleVerticalZoomCell.h +// JXCategoryView +// +// Created by jiaxin on 2019/2/14. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCell.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JXCategoryTitleVerticalZoomCell : JXCategoryTitleCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.m b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.m new file mode 100644 index 0000000..3d13438 --- /dev/null +++ b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.m @@ -0,0 +1,45 @@ +// +// JXCategoryTitleVerticalZoomCell.m +// JXCategoryView +// +// Created by jiaxin on 2019/2/14. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleVerticalZoomCell.h" +#import "JXCategoryTitleVerticalZoomCellModel.h" + +@implementation JXCategoryTitleVerticalZoomCell + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryTitleVerticalZoomCellModel *myCellModel = (JXCategoryTitleVerticalZoomCellModel *)cellModel; + + if (myCellModel.isTitleLabelZoomEnabled) { + //先把font设置为缩放的最大值,再缩小到最小值,最后根据当前的titleLabelZoomScale值,进行缩放更新。这样就能避免transform从小到大时字体模糊 + UIFont *maxScaleFont = [UIFont fontWithDescriptor:myCellModel.titleFont.fontDescriptor size:myCellModel.titleFont.pointSize*myCellModel.maxVerticalFontScale]; + CGFloat baseScale = myCellModel.titleFont.lineHeight/maxScaleFont.lineHeight; + if (myCellModel.isSelectedAnimationEnabled && [self checkCanStartSelectedAnimation:myCellModel]) { + JXCategoryCellSelectedAnimationBlock block = [self preferredTitleZoomAnimationBlock:myCellModel baseScale:baseScale]; + [self addSelectedAnimationBlock:block]; + } else { + self.titleLabel.font = maxScaleFont; + self.maskTitleLabel.font = maxScaleFont; + CGAffineTransform currentTransform = CGAffineTransformMakeScale(baseScale*myCellModel.titleLabelCurrentZoomScale, baseScale*myCellModel.titleLabelCurrentZoomScale); + self.titleLabel.transform = currentTransform; + self.maskTitleLabel.transform = currentTransform; + } + } else { + if (myCellModel.isSelected) { + self.titleLabel.font = myCellModel.titleSelectedFont; + self.maskTitleLabel.font = myCellModel.titleSelectedFont; + }else { + self.titleLabel.font = myCellModel.titleFont; + self.maskTitleLabel.font = myCellModel.titleFont; + } + } + + [self.titleLabel sizeToFit]; +} +@end diff --git a/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.h b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.h new file mode 100644 index 0000000..3c7ea4b --- /dev/null +++ b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.h @@ -0,0 +1,19 @@ +// +// JXCategoryTitleVerticalZoomCellModel.h +// JXCategoryView +// +// Created by jiaxin on 2019/2/14. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCellModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JXCategoryTitleVerticalZoomCellModel : JXCategoryTitleCellModel + +@property (nonatomic, assign) CGFloat maxVerticalFontScale; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.m b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.m new file mode 100644 index 0000000..3bf0ba0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryTitleVerticalZoomCellModel.m +// JXCategoryView +// +// Created by jiaxin on 2019/2/14. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleVerticalZoomCellModel.h" + +@implementation JXCategoryTitleVerticalZoomCellModel + +@end diff --git a/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.h b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.h new file mode 100644 index 0000000..e3eb813 --- /dev/null +++ b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.h @@ -0,0 +1,34 @@ +// +// JXCategoryTitleVerticalZoomView.h +// JXCategoryView +// +// Created by jiaxin on 2019/2/14. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleView.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + 垂直方向的缩放值范围:minVerticalFontScale~maxVerticalFontScale; + 垂直方向cellSpacing范围:minVerticalCellSpacing~maxVerticalCellSpacing,用于达到缩小时cell更加紧凑 + 根据UI设计师给你的参数,去多次尝试设置上面的值来达到同样的效果。多尝试几次就知道每个属性设置之后的效果。 + */ +@interface JXCategoryTitleVerticalZoomView : JXCategoryTitleView + +@property (nonatomic, assign) CGFloat maxVerticalFontScale; //垂直方向最大的缩放值 +@property (nonatomic, assign) CGFloat minVerticalFontScale; //垂直方向最小的缩放值 +@property (nonatomic, assign) CGFloat maxVerticalCellSpacing; //垂直方向最大的cellSpacing +@property (nonatomic, assign) CGFloat minVerticalCellSpacing; //垂直方向最小的cellSpacing + +/** + 当前列表滚动时,根据当前垂直方向categoryView高度变化的百分比,刷新布局 + + @param percent 当前垂直方向categoryView高度变化百分比 + */ +- (void)listDidScrollWithVerticalHeightPercent:(CGFloat)percent; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.m b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.m new file mode 100644 index 0000000..b8fe745 --- /dev/null +++ b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.m @@ -0,0 +1,94 @@ +// +// JXCategoryTitleVerticalZoomView.m +// JXCategoryView +// +// Created by jiaxin on 2019/2/14. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleVerticalZoomView.h" +#import "JXCategoryTitleVerticalZoomCellModel.h" +#import "JXCategoryTitleVerticalZoomCell.h" +#import "JXCategoryFactory.h" + +@interface JXCategoryTitleVerticalZoomView () +@property (nonatomic, assign) CGFloat currentVerticalScale; //当前垂直方向的缩放基准值 +@end + +@implementation JXCategoryTitleVerticalZoomView + +- (void)initializeData { + [super initializeData]; + + _maxVerticalFontScale = 2; + _minVerticalFontScale = 1.3; + _currentVerticalScale = _maxVerticalFontScale; + self.cellWidthZoomEnabled = YES; + self.cellWidthZoomScale = _maxVerticalFontScale; + self.contentEdgeInsetLeft = 15; + self.titleLabelZoomScale = _currentVerticalScale; + self.titleLabelZoomEnabled = YES; + self.selectedAnimationEnabled = YES; + _maxVerticalCellSpacing = 20; + _minVerticalCellSpacing = 10; + self.cellSpacing = _maxVerticalCellSpacing; +} + +- (void)listDidScrollWithVerticalHeightPercent:(CGFloat)percent { + CGFloat currentScale = [JXCategoryFactory interpolationFrom:self.minVerticalFontScale to:self.maxVerticalFontScale percent:percent]; + BOOL shouldReloadData = NO; + if (self.currentVerticalScale != currentScale) { + //有变化才允许reloadData + shouldReloadData = YES; + } + self.currentVerticalScale = currentScale; + self.cellWidthZoomScale = currentScale; + self.cellSpacing = [JXCategoryFactory interpolationFrom:self.minVerticalCellSpacing to:self.maxVerticalCellSpacing percent:percent]; + if (shouldReloadData) { + [self refreshDataSource]; + [self refreshState]; + [self.collectionView.collectionViewLayout invalidateLayout]; + [self.collectionView reloadData]; + } +} + +- (void)setCurrentVerticalScale:(CGFloat)currentVerticalScale { + _currentVerticalScale = currentVerticalScale; + + self.titleLabelZoomScale = currentVerticalScale; +} + +- (void)setMaxVerticalCellSpacing:(CGFloat)maxVerticalCellSpacing { + _maxVerticalCellSpacing = maxVerticalCellSpacing; + + self.cellSpacing = maxVerticalCellSpacing; +} + +- (void)setMaxVerticalFontScale:(CGFloat)maxVerticalFontScale { + _maxVerticalFontScale = maxVerticalFontScale; + + self.titleLabelZoomScale = maxVerticalFontScale; + self.cellWidthZoomScale = maxVerticalFontScale; +} + +- (Class)preferredCellClass { + return [JXCategoryTitleVerticalZoomCell class]; +} + +- (void)refreshDataSource { + NSMutableArray *tempArray = [NSMutableArray array]; + for (int i = 0; i < self.titles.count; i++) { + JXCategoryTitleVerticalZoomCellModel *cellModel = [[JXCategoryTitleVerticalZoomCellModel alloc] init]; + [tempArray addObject:cellModel]; + } + self.dataSource = tempArray; +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + [super refreshCellModel:cellModel index:index]; + + JXCategoryTitleVerticalZoomCellModel *model = (JXCategoryTitleVerticalZoomCellModel *)cellModel; + model.maxVerticalFontScale = self.maxVerticalFontScale; +} + +@end diff --git a/Pods/JXPagingView/LICENSE b/Pods/JXPagingView/LICENSE new file mode 100644 index 0000000..0fdb1e7 --- /dev/null +++ b/Pods/JXPagingView/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 暴走的鑫鑫 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Pods/JXPagingView/README.md b/Pods/JXPagingView/README.md new file mode 100644 index 0000000..b8f2efd --- /dev/null +++ b/Pods/JXPagingView/README.md @@ -0,0 +1,294 @@ +# JXPagingView + +类似微博主页、简书主页、QQ联系人页面等效果。多页面嵌套,既可以上下滑动,也可以左右滑动切换页面。支持HeaderView悬浮、支持下拉刷新、上拉加载更多。 + +## 功能特点 + +- 支持OC与Swift; +- 支持列表懒加载,等到列表真正显示的时候才加载,而不是一次性加载所有列表; +- 支持首页下拉刷新、列表视图下拉刷新、列表视图上拉加载更多; +- 支持悬浮SectionHeader的垂直位置调整; +- 支持从顶部用力往上滚动,下面的列表会跟着滚动,而不会突然卡主,需要使用`JXPagerSmoothView`类; +- 列表封装简洁,只要遵从`JXPagingViewListViewDelegate`协议即可。UIView、UIViewController等都可以; +- 使用JXCategoryView/JXSegmentedView分类控制器,几乎支持所有主流效果、高度自定义、可灵活扩展; +- 支持横竖屏切换; +- 支持点击状态栏滚动当前列表到顶部; +- 支持列表显示和消失的生命周期方法; +- isListHorizontalScrollEnabled属性控制列表是否可以左右滑动,默认YES; +- 支持`FDFullscreenPopGesture`等全屏手势兼容处理; + +## 预览 + +| 效果 | 预览图 | +|-------|-------| +| **头图缩放**
参考[ZoomViewController](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagerViewExample-OC/JXPagerViewExample-OC/Example/Zoom/ZoomViewController.m)类 | ![Zoom](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/Zoom.gif) | +| **主页下拉刷新&列表上拉加载更多**
参考[RefreshViewController](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagerViewExample-OC/JXPagerViewExample-OC/Example/Refresh/RefreshViewController.m)类 | ![Refresh](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/Refresh.gif) | +| **列表下拉刷新**
参考[ListRefreshViewController](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagerViewExample-OC/JXPagerViewExample-OC/Example/Refresh/ListRefreshViewController.m)类 | ![Refresh](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/ListRefresh.gif) | +| **悬浮sectionHeader位置调整** | ![Refresh](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/PinSectionHeaderPosition.gif) | +| **导航栏隐藏**
参考[NaviBarHiddenViewController](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagerViewExample-OC/JXPagerViewExample-OC/Example/NavigationBarHidden/NaviBarHiddenViewController.m)类 | ![Refresh](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/NaviHidden.gif) | +| **CollectionView列表示例**
参考[CollectionViewViewController.swift](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagingViewExample/JXPagingViewExample/Example/CollectionView/CollectionViewViewController.swift)类
只有swift的demo工程有该示例 | ![Refresh](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/CollectionViewList.gif) | +| **HeaderView更新高度示例**
参考[HeightChangeAnimationViewController.swift](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagingViewExample/JXPagingViewExample/Example/HeightChange/HeightChangeAnimationViewController.swift)类
只有swift demo工程才有该示例 | ![Refresh](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/HeaderViewHeightChange.gif) | +| **PagingView嵌套CategoryView**
参考[NestViewController](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagerViewExample-OC/JXPagerViewExample-OC/Example/Nest/NestViewController.m)类
只有 **OC!OC!OC!** 的demo工程才有该示例
操作比较特殊,如果需要此效果,
请认真参考源码,有问题多试试
参考NestViewController.h类 | ![Nest](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/Nest.gif) | +| **CategoryView嵌套PagingView**
参考[NestViewController.swift](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagingViewExample/JXPagingViewExample/Example/CategoryNestPaging/NestViewController.swift)类
只有 **Swift!Swift!Swift!** 的demo工程才有该示例
操作比较特殊,如果需要此效果,
请认真参考源码,有问题多试试
参考NestViewController.swift类 | ![Nest](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/CategoryNestPaging.gif) | +| **点击状态栏** | ![Zoom](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/StatusBarClicked.gif) | +| **横竖屏旋转** | ![Zoom](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/ScreenRotate.gif) | +| **JXPageListView**
顶部需要自定义cell的场景,类似于电商APP首页,滑动到列表最底部才是分类控制器
该效果是另一个库,点击查看[JXPageListView](https://github.com/pujiaxin33/JXPageListView)
该效果是另一个库,点击查看[JXPageListView](https://github.com/pujiaxin33/JXPageListView)
该效果是另一个库,点击查看[JXPageListView](https://github.com/pujiaxin33/JXPageListView) | ![list](https://github.com/pujiaxin33/JXPageListView/blob/master/JXPageListView/Gif/headerLoading.gif) | +| **JXPagerSmoothView**
类似淘宝、转转首页
从顶部用力往上滚动,下面的列表会继续滚动 | ![smooth](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/smooth.gif) | + +## 安装 + +### 手动 + +**Swift版本:** Clone代码,拖入JXPagingView-Swift文件夹,使用`JXPagingView`类; + +**OC版本:** Clone代码,拖入JXPagerView文件夹,使用`JXPagerView`类; + +### CocoaPods + +- **Swift版本** + +支持swift版本:5.0+ + +```ruby +target '' do + pod 'JXPagingView/Paging' +end +``` + +- **OC版本** +```ruby +target '' do + pod 'JXPagingView/Pager' +end +``` + +Swift与OC的仓库地址不一样,请注意选择! + +先`pod repo update`然后再`pod install` + + +## 使用 + +swift版本使用类似,只是类名及相关API更改为`JXPagingView`,具体细节请查看Swfit工程。 + +### 1、初始化`JXCategoryTitleView`和`JXPagerView` + +```Objective-C +self.categoryView = [[JXCategoryTitleView alloc] initWithFrame:frame]; +//配置categoryView,细节参考源码 + +self.pagerView = [[JXPagerView alloc] initWithDelegate:self]; +[self.view addSubview:self.pagerView]; + +//⚠️⚠️⚠️将pagerView的listContainerView和categoryView.listContainer进行关联,这样列表就可以和categoryView联动了。⚠️⚠️⚠️ +self.categoryView.listContainer = (id)self.pagerView.listContainerView; +``` + +**Swift版本列表关联代码** +```Swift +//给JXPagingListContainerView添加extension,表示遵从JXSegmentedViewListContainer的协议 +extension JXPagingListContainerView: JXSegmentedViewListContainer {} +//⚠️⚠️⚠️将pagingView的listContainerView和segmentedView.listContainer进行关联,这样列表就可以和categoryView联动了。⚠️⚠️⚠️ +segmentedView.listContainer = pagingView.listContainerView +``` + +### 2、实现`JXPagerViewDelegate`协议 + +```Objective-C +/** + 返回tableHeaderView的高度,因为内部需要比对判断,只能是整型数 + */ +- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { + return JXTableHeaderViewHeight; +} + +/** + 返回tableHeaderView + */ +- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { + return self.userHeaderView; +} + + +/** + 返回悬浮HeaderView的高度,因为内部需要比对判断,只能是整型数 + */ +- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return JXheightForHeaderInSection; +} + + +/** + 返回悬浮HeaderView + */ +- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return self.categoryView; +} + +/** + 返回列表的数量 + */ +- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView { + //和categoryView的item数量一致 + return self.titles.count; +} + +/** + 根据index初始化一个对应列表实例。注意:一定要是新生成的实例!!! + 只要遵循JXPagerViewListViewDelegate即可,无论你返回的是UIView还是UIViewController都可以。 + */ +- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { + TestListBaseView *listView = [[TestListBaseView alloc] init]; + if (index == 0) { + listView.dataSource = @[@"橡胶火箭", @"橡胶火箭炮", @"橡胶机关枪"...].mutableCopy; + }else if (index == 1) { + listView.dataSource = @[@"吃烤肉", @"吃鸡腿肉", @"吃牛肉", @"各种肉"].mutableCopy; + }else { + listView.dataSource = @[@"【剑士】罗罗诺亚·索隆", @"【航海士】娜美", @"【狙击手】乌索普"...].mutableCopy; + } + [listView beginFirstRefresh]; + return listView; +} +``` + +### 3、实现`JXPagerViewListViewDelegate`协议 + +列表可以是任意类,UIView、UIViewController等等都可以,只要实现了`JXPagerViewListViewDelegate`协议就行。 + +⚠️⚠️⚠️一定要保证`scrollCallback`的正确回调,许多朋友都容易疏忽这一点,导致异常,务必重点注意! + +下面的使用代码参考的是`TestListBaseView`类 + +```Objective-C +/** + 返回listView。如果是vc包裹的就是vc.view;如果是自定义view包裹的,就是自定义view自己。 + */ +- (UIView *)listView { + return self; +} + +/** + 返回listView内部持有的UIScrollView或UITableView或UICollectionView + 主要用于mainTableView已经显示了header,listView的contentOffset需要重置时,内部需要访问到外部传入进来的listView内的scrollView + */ +- (UIScrollView *)listScrollView { + return self.tableView; +} + + +/** + 当listView内部持有的UIScrollView或UITableView或UICollectionView的代理方法`scrollViewDidScroll`回调时,需要调用该代理方法传入的callback + */ +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { + self.scrollCallback = callback; +} +``` + +### 4、列表回调处理 + +`TestListBaseView`在其`tableView`的滚动回调中,通过调用上面持有的scrollCallback,把列表的滚动事件回调给JXPagerView内部。 +```Objective-C +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + !self.scrollCallback ?: self.scrollCallback(scrollView); +} +``` + +## 实现原理 + +[实现原理](https://github.com/pujiaxin33/JXPagingView/blob/master/Document/JXPagingView%E5%8E%9F%E7%90%86.md) + +## `JXPagerSmoothView` + +如果你需要类似于**淘宝**、**转转**首页从顶部header用力往上滚动之后,下面的列表会跟着滚动的效果。因为`JXPagerView`的实现原理限制,当用户从顶部header的位置用力往上滚动,`JXPagerView`会在`JXCategoryView`刚好在顶部的时候突然停住。这个时候就需要使用`JXPagerSmoothView`,swift版本叫`JXPagingSmoothView`。 + +因为与`JXPagerView`的原理完全不同,所以各自会有一些特性的区别,但是从使用体验来说,是完全一致的。具体使用细节请参考demo示例。 + +实现原理参考[JXPagerSmoothView文章解析](https://juejin.im/post/5ddb2fe4f265da7def5424c7) + + +## 特殊说明 + +### JXCategoryView、JXSegmentedView +悬浮的HeaderView,用的是我写的:[OC版本-JXCategoryView](https://github.com/pujiaxin33/JXCategoryView) 、[Swift版本-JXSegmentedView](https://github.com/pujiaxin33/JXSegmentedView)。几乎实现了所有主流效果,而且非常容易自定义扩展,强烈推荐阅读。 + + +### 头图缩放说明 +头图缩放原理,参考这个库:[JXTableViewZoomHeaderImageView](https://github.com/pujiaxin33/JXTableViewZoomHeaderImageView) + +### 列表下拉刷新说明 + +需要使用`JXPagerListRefreshView`类(是`JXPagerView`的子类) + +### JXPagerListContainerType说明 + +UIScrollView:优势:没有其他副作用。劣势:实时的视图内存占用相对大一点,因为所有加载之后的列表视图都在视图层级里面。 +UICollectionView:优势:因为列表被添加到cell上,实时的视图内存占用更少,适合内存要求特别高的场景。劣势:因为cell重用机制的问题,导致列表被移除屏幕外之后,会被放入缓存区,而不存在于视图层级中。如果刚好你的列表使用了下拉刷新视图,在快速切换过程中,就会导致下拉刷新回调不成功的问题。(使用MJRefresh会出现此问题)一句话概括:使用CollectionView的时候,就不要让列表使用下拉刷新加载。 + +### 关于下方列表视图的代理方法`- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`有时候需要点击两次才回调 + +出现步骤:当手指放在下方列表视图往下拉,直到TableHeaderView完全显示。 + +原因:经过上面的步骤之后,手指已经离开屏幕且列表视图已经完全静止,UIScrollView的isDragging属性却依然是true。就导致了后续的第一次点击,让系统认为当前UIScrollView依然在滚动,该点击就让UIScrollView停止下来,没有继续转发给UITableView,就没有转化成didSelectRow事件。 + +解决方案:经过N种尝试之后,还是没有回避掉系统的`isDragging`异常为true的bug。大家可以在自定义cell最下方放置一个与cell同大小的button,把button的touchUpInside事件当做`didSelectRow`的回调。因为UIButton在响应链中的优先级要高于UIGestureRecognizer。 + +代码:请参考`TestTableViewCell`类的配置。 + +### 指定默认选中index + +默认显示index=2的列表,代码如下: +``` +self.pagerView.defaultSelectedIndex = 2; +self.categoryView.defaultSelectedIndex = 2; +``` + +### 顶部轮播图手势处理 + +如果TableHeaderView添加了轮播图,获取其他可以横向滚动的UIScrollView。如果不处理,就会出现左右滚动轮播图的时候又可以触发整个页面的上下滚动。为了规避该问题,请参考示例仓库中`BannerViewController`类的处理方法。即可同一时间只允许左右滚动或者上下滚动。 + +### 关于列表用UIViewController封装且要支持横竖屏的tips + +在列表UIViewController类里面一定要加上下面这段代码:(不要问我为什么,我也不知道,谁知道系统内部是怎么操作的,反正加上就没毛病了) +``` +- (void)loadView { + self.view = [[UIView alloc] init]; +} +``` + +### `JXPagerSmoothView` header有UITextField或者`UITextView` +详情参考OC版本示例【滚动延续 Header有输入框】 + +列表自定义子类化`UITableView`或者`UICollectionView`,然后重载`scrollRectToVisible`方法,示例代码如下。 +```Object-C +@implementation TestTableView +- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated { + [self setContentOffset:CGPointMake(self.contentOffset.x, rect.origin.y) animated:animated]; +} +@end +``` + +### `FDFullscreenPopGesture`等全屏手势兼容处理 + +[全屏手势兼容处理文档,点击查看 ❗️❗️❗️](https://github.com/pujiaxin33/JXPagingView/blob/master/Document/%E5%85%A8%E5%B1%8F%E6%89%8B%E5%8A%BF%E5%A4%84%E7%90%86.md) + + +## 迁移指南 +- **0.0.9版本**:将下面两个API的返回值修改为了NSUInteger(swift版本为Int),之前版本是CGFloat,升级为0.0.9及以上的时候,记得修改一下使用地方的返回值类型,不然会引起crash。 + - `- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView` + - `- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView` +- **1.0.0版本**: + 删除代理方法`- (NSArray > *)listViewsInPagerView:(JXPagerView *)pagerView;`,请参考示例使用下面两个代理方法: + - `- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView;` + - `- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index;` +- **2.0.0版本**:`JXPagerListContainerView`进行了重构,列表拥有了完整的生命周期方法。列表是`UIViewController`类,`viewWillAppear`等生命周期方法将会正确触发。 +- + - 删除了collectionView,用`scrollView`属性替换。 + - 和`CategoryView`的联动绑定代码更新为`self.categoryView.listContainer = (id)self.pagerView.listContainerView;`。 + - `JXPagerView`新增`- (instancetype)initWithDelegate:(id)delegate listContainerType:(JXPagerListContainerType)type`初始化方法,可以指定列表容器为`UIScrollView`或者`UICollectionView`; + + +## 补充 + +有不明白的地方,建议多看下源码。再有疑问的,欢迎提Issue交流🤝 + + diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.h b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.h new file mode 100644 index 0000000..6287361 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.h @@ -0,0 +1,128 @@ +// +// JXCategoryListScrollView.h +// JXCategoryView +// +// Created by jiaxin on 2018/9/12. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +@class JXPagerListContainerView; +@class JXPagerListContainerScrollView; + +@protocol JXPagerViewListViewDelegate + +/** + 返回listView。如果是vc包裹的就是vc.view;如果是自定义view包裹的,就是自定义view自己。 + + @return UIView + */ +- (UIView *)listView; + +/** + 返回listView内部持有的UIScrollView或UITableView或UICollectionView + 主要用于mainTableView已经显示了header,listView的contentOffset需要重置时,内部需要访问到外部传入进来的listView内的scrollView + + @return listView内部持有的UIScrollView或UITableView或UICollectionView + */ +- (UIScrollView *)listScrollView; + +/** + 当listView内部持有的UIScrollView或UITableView或UICollectionView的代理方法`scrollViewDidScroll`回调时,需要调用该代理方法传入的callback + + @param callback `scrollViewDidScroll`回调时调用的callback + */ +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *scrollView))callback; + +@optional + +- (void)listScrollViewWillResetContentOffset; +- (void)listWillAppear; +- (void)listDidAppear; +- (void)listWillDisappear; +- (void)listDidDisappear; + +@end + +/** + 列表容器视图的类型 + + - ScrollView: UIScrollView。优势:没有其他副作用。劣势:实时的视图内存占用相对大一点,因为所有加载之后的列表视图都在视图层级里面。 + - CollectionView: 使用UICollectionView。优势:因为列表被添加到cell上,实时的视图内存占用更少,适合内存要求特别高的场景。劣势:因为cell重用机制的问题,导致列表被移除屏幕外之后,会被放入缓存区,而不存在于视图层级中。如果刚好你的列表使用了下拉刷新视图,在快速切换过程中,就会导致下拉刷新回调不成功的问题。一句话概括:使用CollectionView的时候,就不要让列表使用下拉刷新加载。 + */ +typedef NS_ENUM(NSUInteger, JXPagerListContainerType) { + JXPagerListContainerType_ScrollView, + JXPagerListContainerType_CollectionView, +}; + +@protocol JXPagerListContainerViewDelegate +/** + 返回list的数量 + + @param listContainerView 列表的容器视图 + @return list的数量 + */ +- (NSInteger)numberOfListsInlistContainerView:(JXPagerListContainerView *)listContainerView; + +/** + 根据index返回一个对应列表实例,需要是遵从`JXPagerViewListViewDelegate`协议的对象。 + 你可以代理方法调用的时候初始化对应列表,达到懒加载的效果。这也是默认推荐的初始化列表方法。你也可以提前创建好列表,等该代理方法回调的时候再返回也可以,达到预加载的效果。 + 如果列表是用自定义UIView封装的,就让自定义UIView遵从`JXPagerViewListViewDelegate`协议,该方法返回自定义UIView即可。 + 如果列表是用自定义UIViewController封装的,就让自定义UIViewController遵从`JXPagerViewListViewDelegate`协议,该方法返回自定义UIViewController即可。 + + @param listContainerView 列表的容器视图 + @param index 目标下标 + @return 遵从JXPagerViewListViewDelegate协议的list实例 + */ +- (id)listContainerView:(JXPagerListContainerView *)listContainerView initListForIndex:(NSInteger)index; + +@optional +/** + 返回自定义UIScrollView或UICollectionView的Class + 某些特殊情况需要自己处理UIScrollView内部逻辑。比如项目用了FDFullscreenPopGesture,需要处理手势相关代理。 + + @param listContainerView JXPagerListContainerView + @return 自定义UIScrollView实例 + */ +- (Class)scrollViewClassInlistContainerView:(JXPagerListContainerView *)listContainerView; + +/** + 控制能否初始化对应index的列表。有些业务需求,需要在某些情况才允许初始化某些列表,通过通过该代理实现控制。 + */ +- (BOOL)listContainerView:(JXPagerListContainerView *)listContainerView canInitListAtIndex:(NSInteger)index; +- (void)listContainerViewDidScroll:(UIScrollView *)scrollView; +- (void)listContainerViewWillBeginDragging:(JXPagerListContainerView *)listContainerView; +- (void)listContainerViewWDidEndScroll:(JXPagerListContainerView *)listContainerView; +- (void)listContainerView:(JXPagerListContainerView *)listContainerView listDidAppearAtIndex:(NSInteger)index; + +@end + +@interface JXPagerListContainerView : UIView + +@property (nonatomic, assign, readonly) JXPagerListContainerType containerType; +@property (nonatomic, strong, readonly) UIScrollView *scrollView; +@property (nonatomic, strong, readonly) NSDictionary > *validListDict; //已经加载过的列表字典。key是index,value是对应的列表 +@property (nonatomic, strong) UIColor *listCellBackgroundColor; //默认:[UIColor whiteColor] +/** + 滚动切换的时候,滚动距离超过一页的多少百分比,就触发列表的初始化。默认0.01(即列表显示了一点就触发加载)。范围0~1,开区间不包括0和1 + */ +@property (nonatomic, assign) CGFloat initListPercent; +///当使用Category嵌套Paging的时候,需要设置为YES,默认为NO; +@property (nonatomic, assign, getter=isCategoryNestPagingEnabled) BOOL categoryNestPagingEnabled; +@property (nonatomic, assign, readonly) NSInteger currentIndex; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; +- (instancetype)initWithType:(JXPagerListContainerType)type delegate:(id)delegate NS_DESIGNATED_INITIALIZER; + +@end + +@interface JXPagerListContainerView (ListContainer) +- (void)setDefaultSelectedIndex:(NSInteger)index; +- (UIScrollView *)contentScrollView; +- (void)reloadData; +- (void)scrollingFromLeftIndex:(NSInteger)leftIndex toRightIndex:(NSInteger)rightIndex ratio:(CGFloat)ratio selectedIndex:(NSInteger)selectedIndex; +- (void)didClickSelectedItemAtIndex:(NSInteger)index; +@end + diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.m b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.m new file mode 100644 index 0000000..14358b7 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.m @@ -0,0 +1,597 @@ +// +// JXPagerListContainerView.m +// JXCategoryView +// +// Created by jiaxin on 2018/9/12. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXPagerListContainerView.h" +#import + +@interface JXPagerListContainerScrollView: UIScrollView +@property (nonatomic, assign, getter=isCategoryNestPagingEnabled) BOOL categoryNestPagingEnabled; +@end +@implementation JXPagerListContainerScrollView +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { + if (self.isCategoryNestPagingEnabled) { + if ([gestureRecognizer isMemberOfClass:NSClassFromString(@"UIScrollViewPanGestureRecognizer")]) { + CGFloat velocityX = [(UIPanGestureRecognizer *)gestureRecognizer velocityInView:gestureRecognizer.view].x; + //x大于0就是往右滑 + if (velocityX > 0) { + if (self.contentOffset.x == 0) { + return NO; + } + }else if (velocityX < 0) { + //x小于0就是往左滑 + if (self.contentOffset.x + self.bounds.size.width == self.contentSize.width) { + return NO; + } + } + } + } + return YES; +} +@end + +@interface JXPagerListContainerCollectionView: UICollectionView +@property (nonatomic, assign, getter=isCategoryNestPagingEnabled) BOOL categoryNestPagingEnabled; +@end +@implementation JXPagerListContainerCollectionView +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { + if (self.isCategoryNestPagingEnabled) { + if ([gestureRecognizer isMemberOfClass:NSClassFromString(@"UIScrollViewPanGestureRecognizer")]) { + CGFloat velocityX = [(UIPanGestureRecognizer *)gestureRecognizer velocityInView:gestureRecognizer.view].x; + //x大于0就是往右滑 + if (velocityX > 0) { + if (self.contentOffset.x == 0) { + return NO; + } + }else if (velocityX < 0) { + //x小于0就是往左滑 + if (self.contentOffset.x + self.bounds.size.width == self.contentSize.width) { + return NO; + } + } + } + } + return YES; +} +@end + +@interface JXPagerListContainerViewController : UIViewController +@property (copy) void(^viewWillAppearBlock)(void); +@property (copy) void(^viewDidAppearBlock)(void); +@property (copy) void(^viewWillDisappearBlock)(void); +@property (copy) void(^viewDidDisappearBlock)(void); +@end + +@implementation JXPagerListContainerViewController +- (void)dealloc +{ + self.viewWillAppearBlock = nil; + self.viewDidAppearBlock = nil; + self.viewWillDisappearBlock = nil; + self.viewDidDisappearBlock = nil; +} +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + self.viewWillAppearBlock(); +} +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + self.viewDidAppearBlock(); +} +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + self.viewWillDisappearBlock(); +} +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + self.viewDidDisappearBlock(); +} +- (BOOL)shouldAutomaticallyForwardAppearanceMethods { return NO; } +@end + +@interface JXPagerListContainerView () +@property (nonatomic, weak) id delegate; +@property (nonatomic, strong) UIScrollView *scrollView; +@property (nonatomic, assign) NSInteger currentIndex; +@property (nonatomic, strong) NSMutableDictionary > *validListDict; +@property (nonatomic, assign) NSInteger willAppearIndex; +@property (nonatomic, assign) NSInteger willDisappearIndex; +@property (nonatomic, strong) UICollectionView *collectionView; +@property (nonatomic, strong) JXPagerListContainerViewController *containerVC; +@end + +@implementation JXPagerListContainerView + +- (instancetype)initWithType:(JXPagerListContainerType)type delegate:(id)delegate{ + self = [super initWithFrame:CGRectZero]; + if (self) { + _containerType = type; + _delegate = delegate; + _validListDict = [NSMutableDictionary dictionary]; + _willAppearIndex = -1; + _willDisappearIndex = -1; + _initListPercent = 0.01; + [self initializeViews]; + } + return self; +} + +- (void)initializeViews { + _listCellBackgroundColor = [UIColor whiteColor]; + _containerVC = [[JXPagerListContainerViewController alloc] init]; + self.containerVC.view.backgroundColor = [UIColor clearColor]; + [self addSubview:self.containerVC.view]; + __weak typeof(self) weakSelf = self; + self.containerVC.viewWillAppearBlock = ^{ + [weakSelf listWillAppear:weakSelf.currentIndex]; + }; + self.containerVC.viewDidAppearBlock = ^{ + [weakSelf listDidAppear:weakSelf.currentIndex]; + }; + self.containerVC.viewWillDisappearBlock = ^{ + [weakSelf listWillDisappear:weakSelf.currentIndex]; + }; + self.containerVC.viewDidDisappearBlock = ^{ + [weakSelf listDidDisappear:weakSelf.currentIndex]; + }; + if (self.containerType == JXPagerListContainerType_ScrollView) { + if (self.delegate && + [self.delegate respondsToSelector:@selector(scrollViewClassInlistContainerView:)] && + [[self.delegate scrollViewClassInlistContainerView:self] isKindOfClass:object_getClass([UIScrollView class])]) { + _scrollView = (UIScrollView *)[[[self.delegate scrollViewClassInlistContainerView:self] alloc] init]; + }else { + _scrollView = [[JXPagerListContainerScrollView alloc] init]; + } + self.scrollView.backgroundColor = [UIColor clearColor]; + self.scrollView.delegate = self; + self.scrollView.pagingEnabled = YES; + self.scrollView.showsHorizontalScrollIndicator = NO; + self.scrollView.showsVerticalScrollIndicator = NO; + self.scrollView.scrollsToTop = NO; + self.scrollView.bounces = NO; + if (@available(iOS 11.0, *)) { + self.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [self.containerVC.view addSubview:self.scrollView]; + }else { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 0; + layout.minimumInteritemSpacing = 0; + if (self.delegate && + [self.delegate respondsToSelector:@selector(scrollViewClassInlistContainerView:)] && + [[self.delegate scrollViewClassInlistContainerView:self] isKindOfClass:object_getClass([UICollectionView class])]) { + _collectionView = (UICollectionView *)[[[self.delegate scrollViewClassInlistContainerView:self] alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + }else { + _collectionView = [[JXPagerListContainerCollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + } + self.collectionView.backgroundColor = [UIColor clearColor]; + self.collectionView.pagingEnabled = YES; + self.collectionView.showsHorizontalScrollIndicator = NO; + self.collectionView.showsVerticalScrollIndicator = NO; + self.collectionView.scrollsToTop = NO; + self.collectionView.bounces = NO; + self.collectionView.dataSource = self; + self.collectionView.delegate = self; + [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"]; + if (@available(iOS 10.0, *)) { + self.collectionView.prefetchingEnabled = NO; + } + if (@available(iOS 11.0, *)) { + self.collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [self.containerVC.view addSubview:self.collectionView]; + //让外部统一访问scrollView + _scrollView = _collectionView; + } +} + +- (void)willMoveToSuperview:(UIView *)newSuperview { + [super willMoveToSuperview:newSuperview]; + + UIResponder *next = newSuperview; + while (next != nil) { + if ([next isKindOfClass:[UIViewController class]]) { + [((UIViewController *)next) addChildViewController:self.containerVC]; + break; + } + next = next.nextResponder; + } +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + self.containerVC.view.frame = self.bounds; + if (self.containerType == JXPagerListContainerType_ScrollView) { + if (CGRectEqualToRect(self.scrollView.frame, CGRectZero) || !CGSizeEqualToSize(self.scrollView.bounds.size, self.bounds.size)) { + self.scrollView.frame = self.bounds; + self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width*[self.delegate numberOfListsInlistContainerView:self], self.scrollView.bounds.size.height); + [_validListDict enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull index, id _Nonnull list, BOOL * _Nonnull stop) { + [list listView].frame = CGRectMake(index.intValue*self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height); + }]; + self.scrollView.contentOffset = CGPointMake(self.currentIndex*self.scrollView.bounds.size.width, 0); + }else { + self.scrollView.frame = self.bounds; + self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width*[self.delegate numberOfListsInlistContainerView:self], self.scrollView.bounds.size.height); + } + }else { + if (CGRectEqualToRect(self.collectionView.frame, CGRectZero) || !CGSizeEqualToSize(self.collectionView.bounds.size, self.bounds.size)) { + self.collectionView.frame = self.bounds; + [self.collectionView.collectionViewLayout invalidateLayout]; + [self.collectionView reloadData]; + [self.collectionView setContentOffset:CGPointMake(self.collectionView.bounds.size.width*self.currentIndex, 0) animated:NO]; + }else { + self.collectionView.frame = self.bounds; + } + } +} + + +- (void)setinitListPercent:(CGFloat)initListPercent { + _initListPercent = initListPercent; + if (initListPercent <= 0 || initListPercent >= 1) { + NSAssert(NO, @"initListPercent值范围为开区间(0,1),即不包括0和1"); + } +} + +- (void)setCategoryNestPagingEnabled:(BOOL)categoryNestPagingEnabled { + _categoryNestPagingEnabled = categoryNestPagingEnabled; + if ([self.scrollView isKindOfClass:[JXPagerListContainerScrollView class]]) { + ((JXPagerListContainerScrollView *)self.scrollView).categoryNestPagingEnabled = categoryNestPagingEnabled; + }else if ([self.scrollView isKindOfClass:[JXPagerListContainerCollectionView class]]) { + ((JXPagerListContainerCollectionView *)self.scrollView).categoryNestPagingEnabled = categoryNestPagingEnabled; + } +} + +#pragma mark - UICollectionViewDelegate, UICollectionViewDataSource + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return [self.delegate numberOfListsInlistContainerView:self]; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath]; + cell.contentView.backgroundColor = self.listCellBackgroundColor; + for (UIView *subview in cell.contentView.subviews) { + [subview removeFromSuperview]; + } + id list = _validListDict[@(indexPath.item)]; + if (list != nil) { + //fixme:如果list是UIViewController,如果这里的frame修改是`[list listView].frame = cell.bounds;`。那么就必须给list vc添加如下代码: + //- (void)loadView { + // self.view = [[UIView alloc] init]; + //} + //所以,总感觉是把UIViewController当做普通view使用,导致了系统内部的bug。所以,缓兵之计就是用下面的方法,暂时解决问题。 + if ([list isKindOfClass:[UIViewController class]]) { + [list listView].frame = cell.contentView.bounds; + } else { + [list listView].frame = cell.bounds; + } + [cell.contentView addSubview:[list listView]]; + } + return cell; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return self.bounds.size; +} + +#pragma mark - UIScrollViewDelegate + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewDidScroll:)]) { + [self.delegate listContainerViewDidScroll:scrollView]; + } + if (!scrollView.isDragging && !scrollView.isTracking && !scrollView.isDecelerating) { + return; + } + CGFloat ratio = scrollView.contentOffset.x/scrollView.bounds.size.width; + NSInteger maxCount = round(scrollView.contentSize.width/scrollView.bounds.size.width); + NSInteger leftIndex = floorf(ratio); + leftIndex = MAX(0, MIN(maxCount - 1, leftIndex)); + NSInteger rightIndex = leftIndex + 1; + if (ratio < 0 || rightIndex >= maxCount) { + [self listDidAppearOrDisappear:scrollView]; + return; + } + CGFloat remainderRatio = ratio - leftIndex; + if (rightIndex == self.currentIndex) { + //当前选中的在右边,用户正在从右边往左边滑动 + if (self.validListDict[@(leftIndex)] == nil && remainderRatio < (1 - self.initListPercent)) { + [self initListIfNeededAtIndex:leftIndex]; + }else if (self.validListDict[@(leftIndex)] != nil) { + if (self.willAppearIndex == -1) { + self.willAppearIndex = leftIndex; + [self listWillAppear:self.willAppearIndex]; + } + } + if (self.willDisappearIndex == -1) { + self.willDisappearIndex = rightIndex; + [self listWillDisappear:self.willDisappearIndex]; + } + }else { + //当前选中的在左边,用户正在从左边往右边滑动 + if (self.validListDict[@(rightIndex)] == nil && remainderRatio > self.initListPercent) { + [self initListIfNeededAtIndex:rightIndex]; + }else if (self.validListDict[@(rightIndex)] != nil) { + if (self.willAppearIndex == -1) { + self.willAppearIndex = rightIndex; + [self listWillAppear:self.willAppearIndex]; + } + } + if (self.willDisappearIndex == -1) { + self.willDisappearIndex = leftIndex; + [self listWillDisappear:self.willDisappearIndex]; + } + } + [self listDidAppearOrDisappear:scrollView]; +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + if (self.willDisappearIndex != -1) { + [self listWillAppear:self.willDisappearIndex]; + [self listWillDisappear:self.willAppearIndex]; + [self listDidAppear:self.willDisappearIndex]; + [self listDidDisappear:self.willAppearIndex]; + self.willDisappearIndex = -1; + self.willAppearIndex = -1; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewWDidEndScroll:)]) { + [self.delegate listContainerViewWDidEndScroll:self]; + } +} + +- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewWillBeginDragging:)]) { + [self.delegate listContainerViewWillBeginDragging:self]; + } +} + +- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { + if (!decelerate) { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewWDidEndScroll:)]) { + [self.delegate listContainerViewWDidEndScroll:self]; + } + } +} + +- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewWDidEndScroll:)]) { + [self.delegate listContainerViewWDidEndScroll:self]; + } +} + +#pragma mark - JXCategoryViewListContainer + +- (UIScrollView *)contentScrollView { + return self.scrollView; +} + +- (void)setDefaultSelectedIndex:(NSInteger)index { + self.currentIndex = index; +} + +- (void)scrollingFromLeftIndex:(NSInteger)leftIndex toRightIndex:(NSInteger)rightIndex ratio:(CGFloat)ratio selectedIndex:(NSInteger)selectedIndex { +} + +- (void)didClickSelectedItemAtIndex:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + self.willAppearIndex = -1; + self.willDisappearIndex = -1; + if (self.currentIndex != index) { + [self listWillDisappear:self.currentIndex]; + [self listDidDisappear:self.currentIndex]; + [self listWillAppear:index]; + [self listDidAppear:index]; + } +} + +- (void)reloadData { + for (id list in _validListDict.allValues) { + [[list listView] removeFromSuperview]; + if ([list isKindOfClass:[UIViewController class]]) { + [(UIViewController *)list removeFromParentViewController]; + } + } + [_validListDict removeAllObjects]; + + if (self.containerType == JXPagerListContainerType_ScrollView) { + self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width*[self.delegate numberOfListsInlistContainerView:self], self.scrollView.bounds.size.height); + }else { + [self.collectionView reloadData]; + } + [self listWillAppear:self.currentIndex]; + [self listDidAppear:self.currentIndex]; +} + +#pragma mark - Private + +- (void)initListIfNeededAtIndex:(NSInteger)index { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerView:canInitListAtIndex:)]) { + BOOL canInitList = [self.delegate listContainerView:self canInitListAtIndex:index]; + if (!canInitList) { + return; + } + } + id list = _validListDict[@(index)]; + if (list != nil) { + //列表已经创建好了 + return; + } + list = [self.delegate listContainerView:self initListForIndex:index]; + if ([list isKindOfClass:[UIViewController class]]) { + [self.containerVC addChildViewController:(UIViewController *)list]; + } + _validListDict[@(index)] = list; + + switch (self.containerType) { + case JXPagerListContainerType_ScrollView: { + [list listView].frame = CGRectMake(index*self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height); + [self.scrollView addSubview:[list listView]]; + break; + } + case JXPagerListContainerType_CollectionView: { + UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; + if (cell != nil) { + for (UIView *subview in cell.contentView.subviews) { + [subview removeFromSuperview]; + } + [list listView].frame = cell.contentView.bounds; + [cell.contentView addSubview:[list listView]]; + } + break; + } + + } +} + +- (void)listWillAppear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + id list = _validListDict[@(index)]; + if (list != nil) { + if (list && [list respondsToSelector:@selector(listWillAppear)]) { + [list listWillAppear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC beginAppearanceTransition:YES animated:NO]; + } + }else { + //当前列表未被创建(页面初始化或通过点击触发的listWillAppear) + BOOL canInitList = YES; + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerView:canInitListAtIndex:)]) { + canInitList = [self.delegate listContainerView:self canInitListAtIndex:index]; + } + if (canInitList) { + id list = _validListDict[@(index)]; + if (list == nil) { + list = [self.delegate listContainerView:self initListForIndex:index]; + if ([list isKindOfClass:[UIViewController class]]) { + [self.containerVC addChildViewController:(UIViewController *)list]; + } + _validListDict[@(index)] = list; + } + if (self.containerType == JXPagerListContainerType_ScrollView) { + if ([list listView].superview == nil) { + [list listView].frame = CGRectMake(index*self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height); + [self.scrollView addSubview:[list listView]]; + + if (list && [list respondsToSelector:@selector(listWillAppear)]) { + [list listWillAppear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC beginAppearanceTransition:YES animated:NO]; + } + } + }else { + UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; + for (UIView *subview in cell.contentView.subviews) { + [subview removeFromSuperview]; + } + [list listView].frame = cell.contentView.bounds; + [cell.contentView addSubview:[list listView]]; + + if (list && [list respondsToSelector:@selector(listWillAppear)]) { + [list listWillAppear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC beginAppearanceTransition:YES animated:NO]; + } + } + } + } +} + +- (void)listDidAppear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + self.currentIndex = index; + id list = _validListDict[@(index)]; + if (list && [list respondsToSelector:@selector(listDidAppear)]) { + [list listDidAppear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC endAppearanceTransition]; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerView:listDidAppearAtIndex:)]) { + [self.delegate listContainerView:self listDidAppearAtIndex:index]; + } +} + +- (void)listWillDisappear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + id list = _validListDict[@(index)]; + if (list && [list respondsToSelector:@selector(listWillDisappear)]) { + [list listWillDisappear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC beginAppearanceTransition:NO animated:NO]; + } +} + +- (void)listDidDisappear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + id list = _validListDict[@(index)]; + if (list && [list respondsToSelector:@selector(listDidDisappear)]) { + [list listDidDisappear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC endAppearanceTransition]; + } +} + +- (BOOL)checkIndexValid:(NSInteger)index { + NSUInteger count = [self.delegate numberOfListsInlistContainerView:self]; + if (count <= 0 || index >= count) { + return NO; + } + return YES; +} + +- (void)listDidAppearOrDisappear:(UIScrollView *)scrollView { + CGFloat currentIndexPercent = scrollView.contentOffset.x/scrollView.bounds.size.width; + if (self.willAppearIndex != -1 || self.willDisappearIndex != -1) { + NSInteger disappearIndex = self.willDisappearIndex; + NSInteger appearIndex = self.willAppearIndex; + if (self.willAppearIndex > self.willDisappearIndex) { + //将要出现的列表在右边 + if (currentIndexPercent >= self.willAppearIndex) { + self.willDisappearIndex = -1; + self.willAppearIndex = -1; + [self listDidDisappear:disappearIndex]; + [self listDidAppear:appearIndex]; + } + }else { + //将要出现的列表在左边 + if (currentIndexPercent <= self.willAppearIndex) { + self.willDisappearIndex = -1; + self.willAppearIndex = -1; + [self listDidDisappear:disappearIndex]; + [self listDidAppear:appearIndex]; + } + } + } +} + +@end + + diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.h b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.h new file mode 100644 index 0000000..e347531 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.h @@ -0,0 +1,14 @@ +// +// JXPagingListRefreshView.h +// JXPagingView +// +// Created by jiaxin on 2018/8/28. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXPagerView.h" + +@interface JXPagerListRefreshView : JXPagerView + +@end diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.m b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.m new file mode 100644 index 0000000..c5b371c --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.m @@ -0,0 +1,109 @@ +// +// JXPagerListRefreshView.m +// JXPagerView +// +// Created by jiaxin on 2018/8/28. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXPagerListRefreshView.h" + +@interface JXPagerListRefreshView() +@property (nonatomic, assign) CGFloat lastScrollingListViewContentOffsetY; +@end + +@implementation JXPagerListRefreshView + +- (instancetype)initWithDelegate:(id)delegate listContainerType:(JXPagerListContainerType)type { + self = [super initWithDelegate:delegate listContainerType:type]; + if (self) { + self.mainTableView.bounces = NO; + } + return self; +} + +- (void)preferredProcessListViewDidScroll:(UIScrollView *)scrollView { + BOOL shouldProcess = YES; + if (self.currentScrollingListView.contentOffset.y > self.lastScrollingListViewContentOffsetY) { + //往上滚动 + }else { + //往下滚动 + if (self.mainTableView.contentOffset.y == 0) { + shouldProcess = NO; + }else { + if (self.mainTableView.contentOffset.y < self.mainTableViewMaxContentOffsetY) { + //mainTableView的header还没有消失,让listScrollView一直为0 + if (self.currentList && [self.currentList respondsToSelector:@selector(listScrollViewWillResetContentOffset)]) { + [self.currentList listScrollViewWillResetContentOffset]; + } + [self setListScrollViewToMinContentOffsetY:self.currentScrollingListView]; + if (self.automaticallyDisplayListVerticalScrollIndicator) { + self.currentScrollingListView.showsVerticalScrollIndicator = NO; + } + } + } + } + if (shouldProcess) { + if (self.mainTableView.contentOffset.y < self.mainTableViewMaxContentOffsetY) { + //处于下拉刷新的状态,scrollView.contentOffset.y为负数,就重置为0 + if (self.currentScrollingListView.contentOffset.y > [self minContentOffsetYInListScrollView:self.currentScrollingListView]) { + //mainTableView的header还没有消失,让listScrollView一直为0 + if (self.currentList && [self.currentList respondsToSelector:@selector(listScrollViewWillResetContentOffset)]) { + [self.currentList listScrollViewWillResetContentOffset]; + } + [self setListScrollViewToMinContentOffsetY:self.currentScrollingListView]; + if (self.automaticallyDisplayListVerticalScrollIndicator) { + self.currentScrollingListView.showsVerticalScrollIndicator = NO; + } + } + } else { + //mainTableView的header刚好消失,固定mainTableView的位置,显示listScrollView的滚动条 + self.mainTableView.contentOffset = CGPointMake(0, self.mainTableViewMaxContentOffsetY); + if (self.automaticallyDisplayListVerticalScrollIndicator) { + self.currentScrollingListView.showsVerticalScrollIndicator = YES; + } + } + } + self.lastScrollingListViewContentOffsetY = self.currentScrollingListView.contentOffset.y; +} + +- (void)preferredProcessMainTableViewDidScroll:(UIScrollView *)scrollView { + if (self.pinSectionHeaderVerticalOffset != 0) { + if (!(self.currentScrollingListView != nil && self.currentScrollingListView.contentOffset.y > [self minContentOffsetYInListScrollView:self.currentScrollingListView])) { + //没有处于滚动某一个listView的状态 + if (scrollView.contentOffset.y <= 0) { + self.mainTableView.bounces = NO; + self.mainTableView.contentOffset = CGPointZero; + return; + }else { + self.mainTableView.bounces = YES; + } + } + } + if (self.currentScrollingListView != nil && self.currentScrollingListView.contentOffset.y > [self minContentOffsetYInListScrollView:self.currentScrollingListView]) { + //mainTableView的header已经滚动不见,开始滚动某一个listView,那么固定mainTableView的contentOffset,让其不动 + [self setMainTableViewToMaxContentOffsetY]; + } + + if (scrollView.contentOffset.y < self.mainTableViewMaxContentOffsetY) { + //mainTableView已经显示了header,listView的contentOffset需要重置 + for (id list in self.validListDict.allValues) { + //正在下拉刷新时,不需要重置 + UIScrollView *listScrollView = [list listScrollView]; + if (listScrollView.contentOffset.y > 0) { + if ([list respondsToSelector:@selector(listScrollViewWillResetContentOffset)]) { + [list listScrollViewWillResetContentOffset]; + } + [self setListScrollViewToMinContentOffsetY:listScrollView]; + } + } + } + + if (scrollView.contentOffset.y > self.mainTableViewMaxContentOffsetY && self.currentScrollingListView.contentOffset.y == [self minContentOffsetYInListScrollView:self.currentScrollingListView]) { + //当往上滚动mainTableView的headerView时,滚动到底时,修复listView往上小幅度滚动 + [self setMainTableViewToMaxContentOffsetY]; + } +} + + +@end diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.h b/Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.h new file mode 100644 index 0000000..baf5cf4 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.h @@ -0,0 +1,19 @@ +// +// JXPagingMainTableView.h +// JXPagingView +// +// Created by jiaxin on 2018/8/27. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import + +@protocol JXPagerMainTableViewGestureDelegate + +- (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; + +@end + +@interface JXPagerMainTableView : UITableView +@property (nonatomic, weak) id gestureDelegate; +@end diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.m b/Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.m new file mode 100644 index 0000000..8cd9fe6 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.m @@ -0,0 +1,25 @@ +// +// JXPagerMainTableView.m +// JXPagerView +// +// Created by jiaxin on 2018/8/27. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXPagerMainTableView.h" + +@interface JXPagerMainTableView () + +@end + +@implementation JXPagerMainTableView + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + if (self.gestureDelegate && [self.gestureDelegate respondsToSelector:@selector(mainTableViewGestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:)]) { + return [self.gestureDelegate mainTableViewGestureRecognizer:gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer]; + }else { + return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]; + } +} + +@end diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.h b/Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.h new file mode 100644 index 0000000..246b8e5 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.h @@ -0,0 +1,91 @@ +// +// JXPagerSmoothView.h +// JXPagerViewExample-OC +// +// Created by jiaxin on 2019/11/15. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import + +@class JXPagerSmoothView; + +@protocol JXPagerSmoothViewListViewDelegate +/** +返回listView。如果是vc包裹的就是vc.view;如果是自定义view包裹的,就是自定义view自己。 +*/ +- (UIView *)listView; +/** + 返回JXPagerSmoothViewListViewDelegate内部持有的UIScrollView或UITableView或UICollectionView + */ +- (UIScrollView *)listScrollView; + +@optional +- (void)listDidAppear; +- (void)listDidDisappear; + +@end + +@protocol JXPagerSmoothViewDataSource + +/** + 返回页面header的高度 + */ +- (CGFloat)heightForPagerHeaderInPagerView:(JXPagerSmoothView *)pagerView; + +/** + 返回页面header视图 + */ +- (UIView *)viewForPagerHeaderInPagerView:(JXPagerSmoothView *)pagerView; + +/** + 返回悬浮视图的高度 + */ +- (CGFloat)heightForPinHeaderInPagerView:(JXPagerSmoothView *)pagerView; + +/** + 返回悬浮视图 + */ +- (UIView *)viewForPinHeaderInPagerView:(JXPagerSmoothView *)pagerView; + +/** + 返回列表的数量 + */ +- (NSInteger)numberOfListsInPagerView:(JXPagerSmoothView *)pagerView; + +/** + 根据index初始化一个对应列表实例,需要是遵从`JXPagerSmoothViewListViewDelegate`协议的对象。 + 如果列表是用自定义UIView封装的,就让自定义UIView遵从`JXPagerSmoothViewListViewDelegate`协议,该方法返回自定义UIView即可。 + 如果列表是用自定义UIViewController封装的,就让自定义UIViewController遵从`JXPagerSmoothViewListViewDelegate`协议,该方法返回自定义UIViewController即可。 + + @param pagerView pagerView description + @param index index description + @return 新生成的列表实例 + */ +- (id)pagerView:(JXPagerSmoothView *)pagerView initListAtIndex:(NSInteger)index; + +@end + +@protocol JXPagerSmoothViewDelegate +- (void)pagerSmoothViewDidScroll:(UIScrollView *)scrollView; +@end + +@interface JXPagerSmoothView : UIView + +/** + 当前已经加载过的列表:key就是@(index)值,value是对应的列表。 + */ +@property (nonatomic, strong, readonly) NSDictionary > *listDict; +@property (nonatomic, strong, readonly) UICollectionView *listCollectionView; +@property (nonatomic, assign) NSInteger defaultSelectedIndex; +@property (nonatomic, weak) id delegate; + +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; + +- (void)reloadData; + +@end + diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.m b/Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.m new file mode 100644 index 0000000..69856c0 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.m @@ -0,0 +1,361 @@ +// +// JXPagerSmoothView.m +// JXPagerViewExample-OC +// +// Created by jiaxin on 2019/11/15. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXPagerSmoothView.h" + +static NSString *JXPagerSmoothViewCollectionViewCellIdentifier = @"cell"; + +@interface JXPagerSmoothCollectionView : UICollectionView +@property (nonatomic, strong) UIView *pagerHeaderContainerView; +@end +@implementation JXPagerSmoothCollectionView +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { + CGPoint point = [touch locationInView:self.pagerHeaderContainerView]; + if (CGRectContainsPoint(self.pagerHeaderContainerView.bounds, point)) { + return NO; + } + return YES; +} +@end + +@interface JXPagerSmoothView () + +@property (nonatomic, weak) id dataSource; +@property (nonatomic, strong) JXPagerSmoothCollectionView *listCollectionView; +@property (nonatomic, strong) NSMutableDictionary > *listDict; +@property (nonatomic, strong) NSMutableDictionary *listHeaderDict; +@property (nonatomic, assign, getter=isSyncListContentOffsetEnabled) BOOL syncListContentOffsetEnabled; +@property (nonatomic, strong) UIView *pagerHeaderContainerView; +@property (nonatomic, assign) CGFloat currentPagerHeaderContainerViewY; +@property (nonatomic, assign) NSInteger currentIndex; +@property (nonatomic, strong) UIScrollView *currentListScrollView; +@property (nonatomic, assign) CGFloat heightForPagerHeader; +@property (nonatomic, assign) CGFloat heightForPinHeader; +@property (nonatomic, assign) CGFloat heightForPagerHeaderContainerView; +@property (nonatomic, assign) CGFloat currentListInitializeContentOffsetY; +@property (nonatomic, strong) UIScrollView *singleScrollView; +@end + +@implementation JXPagerSmoothView + +- (void)dealloc +{ + for (id list in self.listDict.allValues) { + [[list listScrollView] removeObserver:self forKeyPath:@"contentOffset"]; + [[list listScrollView] removeObserver:self forKeyPath:@"contentSize"]; + } +} + +- (instancetype)initWithDataSource:(id)dataSource +{ + self = [super initWithFrame:CGRectZero]; + if (self) { + _dataSource = dataSource; + _listDict = [NSMutableDictionary dictionary]; + _listHeaderDict = [NSMutableDictionary dictionary]; + [self initializeViews]; + } + return self; +} + +- (void)initializeViews { + self.pagerHeaderContainerView = [[UIView alloc] init]; + + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 0; + layout.minimumInteritemSpacing = 0; + _listCollectionView = [[JXPagerSmoothCollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + self.listCollectionView.dataSource = self; + self.listCollectionView.delegate = self; + self.listCollectionView.pagingEnabled = YES; + self.listCollectionView.bounces = NO; + self.listCollectionView.showsHorizontalScrollIndicator = NO; + self.listCollectionView.scrollsToTop = NO; + [self.listCollectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:JXPagerSmoothViewCollectionViewCellIdentifier]; + if (@available(iOS 10.0, *)) { + self.listCollectionView.prefetchingEnabled = NO; + } + if (@available(iOS 11.0, *)) { + self.listCollectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + _listCollectionView.pagerHeaderContainerView = self.pagerHeaderContainerView; + [self addSubview:self.listCollectionView]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + self.listCollectionView.frame = self.bounds; + if (CGRectEqualToRect(self.pagerHeaderContainerView.frame, CGRectZero)) { + [self reloadData]; + } + if (self.singleScrollView != nil) { + self.singleScrollView.frame = self.bounds; + } +} + +- (void)reloadData { + self.currentListScrollView = nil; + self.currentIndex = self.defaultSelectedIndex; + self.currentPagerHeaderContainerViewY = 0; + self.syncListContentOffsetEnabled = NO; + + [self.listHeaderDict removeAllObjects]; + for (id list in self.listDict.allValues) { + [[list listScrollView] removeObserver:self forKeyPath:@"contentOffset"]; + [[list listScrollView] removeObserver:self forKeyPath:@"contentSize"]; + [[list listView] removeFromSuperview]; + } + [_listDict removeAllObjects]; + + self.heightForPagerHeader = [self.dataSource heightForPagerHeaderInPagerView:self]; + self.heightForPinHeader = [self.dataSource heightForPinHeaderInPagerView:self]; + self.heightForPagerHeaderContainerView = self.heightForPagerHeader + self.heightForPinHeader; + + UIView *pagerHeader = [self.dataSource viewForPagerHeaderInPagerView:self]; + UIView *pinHeader = [self.dataSource viewForPinHeaderInPagerView:self]; + [self.pagerHeaderContainerView addSubview:pagerHeader]; + [self.pagerHeaderContainerView addSubview:pinHeader]; + + self.pagerHeaderContainerView.frame = CGRectMake(0, 0, self.bounds.size.width, self.heightForPagerHeaderContainerView); + pagerHeader.frame = CGRectMake(0, 0, self.bounds.size.width, self.heightForPagerHeader); + pinHeader.frame = CGRectMake(0, self.heightForPagerHeader, self.bounds.size.width, self.heightForPinHeader); + [self.listCollectionView setContentOffset:CGPointMake(self.listCollectionView.bounds.size.width*self.defaultSelectedIndex, 0) animated:NO]; + [self.listCollectionView reloadData]; + + if ([self.dataSource numberOfListsInPagerView:self] == 0) { + self.singleScrollView = [[UIScrollView alloc] init]; + [self addSubview:self.singleScrollView]; + [self.singleScrollView addSubview:pagerHeader]; + self.singleScrollView.contentSize = CGSizeMake(self.bounds.size.width, self.heightForPagerHeader); + }else if (self.singleScrollView != nil) { + [self.singleScrollView removeFromSuperview]; + self.singleScrollView = nil; + } +} + +#pragma mark - UICollectionViewDataSource & UICollectionViewDelegateFlowLayout + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return self.bounds.size; +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return [self.dataSource numberOfListsInPagerView:self]; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:JXPagerSmoothViewCollectionViewCellIdentifier forIndexPath:indexPath]; + id list = self.listDict[@(indexPath.item)]; + if (list == nil) { + list = [self.dataSource pagerView:self initListAtIndex:indexPath.item]; + _listDict[@(indexPath.item)] = list; + [[list listView] setNeedsLayout]; + [[list listView] layoutIfNeeded]; + UIScrollView *listScrollView = [list listScrollView]; + if ([listScrollView isKindOfClass:[UITableView class]]) { + ((UITableView *)listScrollView).estimatedRowHeight = 0; + ((UITableView *)listScrollView).estimatedSectionFooterHeight = 0; + ((UITableView *)listScrollView).estimatedSectionHeaderHeight = 0; + } + if (@available(iOS 11.0, *)) { + listScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + listScrollView.contentInset = UIEdgeInsetsMake(self.heightForPagerHeaderContainerView, 0, 0, 0); + self.currentListInitializeContentOffsetY = -listScrollView.contentInset.top + MIN(-self.currentPagerHeaderContainerViewY, self.heightForPagerHeader); + listScrollView.contentOffset = CGPointMake(0, self.currentListInitializeContentOffsetY); + UIView *listHeader = [[UIView alloc] initWithFrame:CGRectMake(0, -self.heightForPagerHeaderContainerView, self.bounds.size.width, self.heightForPagerHeaderContainerView)]; + [listScrollView addSubview:listHeader]; + if (self.pagerHeaderContainerView.superview == nil) { + [listHeader addSubview:self.pagerHeaderContainerView]; + } + self.listHeaderDict[@(indexPath.item)] = listHeader; + [listScrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil]; + [listScrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil]; + } + for (id listItem in self.listDict.allValues) { + [listItem listScrollView].scrollsToTop = (listItem == list); + } + UIView *listView = [list listView]; + if (listView != nil && listView.superview != cell.contentView) { + for (UIView *view in cell.contentView.subviews) { + [view removeFromSuperview]; + } + listView.frame = cell.contentView.bounds; + [cell.contentView addSubview:listView]; + } + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { + [self listDidAppear:indexPath.item]; +} + +- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { + [self listDidDisappear:indexPath.item]; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerSmoothViewDidScroll:)]) { + [self.delegate pagerSmoothViewDidScroll:scrollView]; + } + CGFloat indexPercent = scrollView.contentOffset.x/scrollView.bounds.size.width; + NSInteger index = floor(indexPercent); + UIScrollView *listScrollView = [self.listDict[@(index)] listScrollView]; + if (indexPercent - index == 0 && index != self.currentIndex && !(scrollView.isDragging || scrollView.isDecelerating) && listScrollView.contentOffset.y <= -self.heightForPinHeader) { + [self horizontalScrollDidEndAtIndex:index]; + }else { + //左右滚动的时候,就把listHeaderContainerView添加到self,达到悬浮在顶部的效果 + if (self.pagerHeaderContainerView.superview != self) { + self.pagerHeaderContainerView.frame = CGRectMake(0, self.currentPagerHeaderContainerViewY, self.pagerHeaderContainerView.bounds.size.width, self.pagerHeaderContainerView.bounds.size.height); + [self addSubview:self.pagerHeaderContainerView]; + } + } + if (index != self.currentIndex) { + self.currentIndex = index; + } +} + +- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { + if (!decelerate) { + NSInteger index = scrollView.contentOffset.x/scrollView.bounds.size.width; + [self horizontalScrollDidEndAtIndex:index]; + } +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + NSInteger index = scrollView.contentOffset.x/scrollView.bounds.size.width; + [self horizontalScrollDidEndAtIndex:index]; +} + +#pragma mark - KVO + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if ([keyPath isEqualToString:@"contentOffset"]) { + UIScrollView *scrollView = (UIScrollView *)object; + if (scrollView != nil) { + [self listDidScroll:scrollView]; + } + }else if([keyPath isEqualToString:@"contentSize"]) { + UIScrollView *scrollView = (UIScrollView *)object; + if (scrollView != nil) { + CGFloat minContentSizeHeight = self.bounds.size.height - self.heightForPinHeader; + if (minContentSizeHeight > scrollView.contentSize.height) { + scrollView.contentSize = CGSizeMake(scrollView.contentSize.width, minContentSizeHeight); + //新的scrollView第一次加载的时候重置contentOffset + if (_currentListScrollView != nil && scrollView != _currentListScrollView) { + scrollView.contentOffset = CGPointMake(0, self.currentListInitializeContentOffsetY); + } + } + } + }else { + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } +} + +#pragma mark - Event + +- (void)listDidScroll:(UIScrollView *)scrollView { + if (self.listCollectionView.isDragging || self.listCollectionView.isDecelerating) { + return; + } + NSInteger listIndex = [self listIndexForListScrollView:scrollView]; + if (listIndex != self.currentIndex) { + return; + } + self.currentListScrollView = scrollView; + CGFloat contentOffsetY = scrollView.contentOffset.y + self.heightForPagerHeaderContainerView; + if (contentOffsetY < self.heightForPagerHeader) { + self.syncListContentOffsetEnabled = YES; + self.currentPagerHeaderContainerViewY = -contentOffsetY; + for (id list in self.listDict.allValues) { + if ([list listScrollView] != self.currentListScrollView) { + [[list listScrollView] setContentOffset:scrollView.contentOffset animated:NO]; + } + } + UIView *listHeader = [self listHeaderForListScrollView:scrollView]; + if (self.pagerHeaderContainerView.superview != listHeader) { + self.pagerHeaderContainerView.frame = CGRectMake(0, 0, self.pagerHeaderContainerView.bounds.size.width, self.pagerHeaderContainerView.bounds.size.height); + [listHeader addSubview:self.pagerHeaderContainerView]; + } + }else { + if (self.pagerHeaderContainerView.superview != self) { + self.pagerHeaderContainerView.frame = CGRectMake(0, -self.heightForPagerHeader, self.pagerHeaderContainerView.bounds.size.width, self.pagerHeaderContainerView.bounds.size.height); + [self addSubview:self.pagerHeaderContainerView]; + } + if (self.isSyncListContentOffsetEnabled) { + self.syncListContentOffsetEnabled = NO; + self.currentPagerHeaderContainerViewY = -self.heightForPagerHeader; + for (id list in self.listDict.allValues) { + if ([list listScrollView] != scrollView) { + [[list listScrollView] setContentOffset:CGPointMake(0, -self.heightForPinHeader) animated:NO]; + } + } + } + } +} + +#pragma mark - Private + +- (UIView *)listHeaderForListScrollView:(UIScrollView *)scrollView { + for (NSNumber *index in self.listDict) { + if ([self.listDict[index] listScrollView] == scrollView) { + return self.listHeaderDict[index]; + } + } + return nil; +} + +- (NSInteger)listIndexForListScrollView:(UIScrollView *)scrollView { + for (NSNumber *index in self.listDict) { + if ([self.listDict[index] listScrollView] == scrollView) { + return [index integerValue]; + } + } + return 0; +} + +- (void)listDidAppear:(NSInteger)index { + NSUInteger count = [self.dataSource numberOfListsInPagerView:self]; + if (count <= 0 || index >= count) { + return; + } + + id list = self.listDict[@(index)]; + if (list && [list respondsToSelector:@selector(listDidAppear)]) { + [list listDidAppear]; + } +} + +- (void)listDidDisappear:(NSInteger)index { + NSUInteger count = [self.dataSource numberOfListsInPagerView:self]; + if (count <= 0 || index >= count) { + return; + } + id list = self.listDict[@(index)]; + if (list && [list respondsToSelector:@selector(listDidDisappear)]) { + [list listDidDisappear]; + } +} + +/// 列表左右切换滚动结束之后,需要把pagerHeaderContainerView添加到当前index的列表上面 +- (void)horizontalScrollDidEndAtIndex:(NSInteger)index { + self.currentIndex = index; + UIView *listHeader = self.listHeaderDict[@(index)]; + UIScrollView *listScrollView = [self.listDict[@(index)] listScrollView]; + if (listHeader != nil && listScrollView.contentOffset.y <= -self.heightForPinHeader) { + for (id listItem in self.listDict.allValues) { + [listItem listScrollView].scrollsToTop = ([listItem listScrollView] == listScrollView); + } + self.pagerHeaderContainerView.frame = CGRectMake(0, 0, self.pagerHeaderContainerView.bounds.size.width, self.pagerHeaderContainerView.bounds.size.height); + [listHeader addSubview:self.pagerHeaderContainerView]; + } +} + +@end diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerView.h b/Pods/JXPagingView/Sources/JXPagerView/JXPagerView.h new file mode 100644 index 0000000..3dd6c6a --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerView.h @@ -0,0 +1,131 @@ +// +// JXPagerView.h +// JXPagerView +// +// Created by jiaxin on 2018/8/27. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXPagerMainTableView.h" +#import "JXPagerListContainerView.h" +@class JXPagerView; + +@protocol JXPagerViewDelegate + +/** + 返回tableHeaderView的高度,因为内部需要比对判断,只能是整型数 + */ +- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView; + +/** + 返回tableHeaderView + */ +- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView; + +/** + 返回悬浮HeaderView的高度,因为内部需要比对判断,只能是整型数 + */ +- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView; + +/** + 返回悬浮HeaderView。我用的是自己封装的JXCategoryView(Github:https://github.com/pujiaxin33/JXCategoryView),你也可以选择其他的三方库或者自己写 + */ +- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView; + +/** + 返回列表的数量 + */ +- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView; + +/** + 根据index初始化一个对应列表实例,需要是遵从`JXPagerViewListViewDelegate`协议的对象。 + 如果列表是用自定义UIView封装的,就让自定义UIView遵从`JXPagerViewListViewDelegate`协议,该方法返回自定义UIView即可。 + 如果列表是用自定义UIViewController封装的,就让自定义UIViewController遵从`JXPagerViewListViewDelegate`协议,该方法返回自定义UIViewController即可。 + 注意:一定要是新生成的实例!!! + + @param pagerView pagerView description + @param index index description + @return 新生成的列表实例 + */ +- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index; + +@optional + +/// 返回对应index的列表唯一标识 +/// @param pagerView pagerView description +/// @param index index description +- (NSString *)pagerView:(JXPagerView *)pagerView listIdentifierAtIndex:(NSInteger)index; +- (void)mainTableViewDidScroll:(UIScrollView *)scrollView __attribute__ ((deprecated)); +- (void)pagerView:(JXPagerView *)pagerView mainTableViewDidScroll:(UIScrollView *)scrollView; +- (void)pagerView:(JXPagerView *)pagerView mainTableViewWillBeginDragging:(UIScrollView *)scrollView; +- (void)pagerView:(JXPagerView *)pagerView mainTableViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; +- (void)pagerView:(JXPagerView *)pagerView mainTableViewDidEndDecelerating:(UIScrollView *)scrollView; +- (void)pagerView:(JXPagerView *)pagerView mainTableViewDidEndScrollingAnimation:(UIScrollView *)scrollView; + +/** + 返回自定义UIScrollView或UICollectionView的Class + 某些特殊情况需要自己处理列表容器内UIScrollView内部逻辑。比如项目用了FDFullscreenPopGesture,需要处理手势相关代理。 + + @param pagerView JXPagerView + @return 自定义UIScrollView实例 + */ +- (Class)scrollViewClassInlistContainerViewInPagerView:(JXPagerView *)pagerView; + +@end + +@interface JXPagerView : UIView +/** + 需要和self.categoryView.defaultSelectedIndex保持一致 + */ +@property (nonatomic, assign) NSInteger defaultSelectedIndex; +@property (nonatomic, strong, readonly) JXPagerMainTableView *mainTableView; +@property (nonatomic, strong, readonly) JXPagerListContainerView *listContainerView; +/** + 当前已经加载过可用的列表字典,key就是index值,value是对应的列表。 + */ +@property (nonatomic, strong, readonly) NSDictionary > *validListDict; +/** + 顶部固定sectionHeader的垂直偏移量。数值越大越往下沉。 + */ +@property (nonatomic, assign) NSInteger pinSectionHeaderVerticalOffset; +/** + 是否允许列表左右滑动。默认:YES + */ +@property (nonatomic, assign) BOOL isListHorizontalScrollEnabled; +/** + 是否允许当前列表自动显示或隐藏列表是垂直滚动指示器。YES:悬浮的headerView滚动到顶部开始滚动列表时,就会显示,反之隐藏。NO:内部不会处理列表的垂直滚动指示器。默认为:YES。 + */ +@property (nonatomic, assign) BOOL automaticallyDisplayListVerticalScrollIndicator; +/** + 当allowsCacheList为true时,请务必实现代理方法`- (NSString *)pagerView:(JXPagerView *)pagerView listIdentifierAtIndex:(NSInteger)index` + */ +@property (nonatomic, assign) BOOL allowsCacheList; + +- (instancetype)initWithDelegate:(id)delegate; +- (instancetype)initWithDelegate:(id)delegate listContainerType:(JXPagerListContainerType)type NS_DESIGNATED_INITIALIZER; +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; +- (void)reloadData; +- (void)resizeTableHeaderViewHeightWithAnimatable:(BOOL)animatable duration:(NSTimeInterval)duration curve:(UIViewAnimationCurve)curve; + +@end + +/** +暴露给子类使用,请勿直接使用相关属性和方法! +*/ +@interface JXPagerView (UISubclassingGet) +@property (nonatomic, strong, readonly) UIScrollView *currentScrollingListView; +@property (nonatomic, strong, readonly) id currentList; +@property (nonatomic, assign, readonly) CGFloat mainTableViewMaxContentOffsetY; +@end + +@interface JXPagerView (UISubclassingHooks) +- (void)preferredProcessListViewDidScroll:(UIScrollView *)scrollView; +- (void)preferredProcessMainTableViewDidScroll:(UIScrollView *)scrollView; +- (void)setMainTableViewToMaxContentOffsetY; +- (void)setListScrollViewToMinContentOffsetY:(UIScrollView *)scrollView; +- (CGFloat)minContentOffsetYInListScrollView:(UIScrollView *)scrollView; +@end + diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerView.m b/Pods/JXPagingView/Sources/JXPagerView/JXPagerView.m new file mode 100644 index 0000000..cb57ae7 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerView.m @@ -0,0 +1,409 @@ +// +// JXPagerView.m +// JXPagerView +// +// Created by jiaxin on 2018/8/27. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXPagerView.h" +@class JXPagerListContainerScrollView; +@class JXPagerListContainerCollectionView; + +@interface JXPagerView () +@property (nonatomic, weak) id delegate; +@property (nonatomic, strong) JXPagerMainTableView *mainTableView; +@property (nonatomic, strong) JXPagerListContainerView *listContainerView; +@property (nonatomic, strong) UIScrollView *currentScrollingListView; +@property (nonatomic, strong) id currentList; +@property (nonatomic, strong) NSMutableDictionary > *validListDict; +@property (nonatomic, strong) UIView *tableHeaderContainerView; +@property (nonatomic, strong) NSMutableDictionary> *listCache; +@end + +@implementation JXPagerView + +- (instancetype)initWithDelegate:(id)delegate { + return [self initWithDelegate:delegate listContainerType:JXPagerListContainerType_CollectionView]; +} + +- (instancetype)initWithDelegate:(id)delegate listContainerType:(JXPagerListContainerType)type { + self = [super initWithFrame:CGRectZero]; + if (self) { + _delegate = delegate; + _validListDict = [NSMutableDictionary dictionary]; + _automaticallyDisplayListVerticalScrollIndicator = YES; + _isListHorizontalScrollEnabled = YES; + + _mainTableView = [[JXPagerMainTableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + self.mainTableView.showsVerticalScrollIndicator = NO; + self.mainTableView.showsHorizontalScrollIndicator = NO; + self.mainTableView.separatorStyle = UITableViewCellSeparatorStyleNone; + self.mainTableView.scrollsToTop = NO; + self.mainTableView.dataSource = self; + self.mainTableView.delegate = self; + [self refreshTableHeaderView]; + [self.mainTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"]; + if (@available(iOS 11.0, *)) { + self.mainTableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 150000 + if (@available(iOS 15.0, *)) { + self.mainTableView.sectionHeaderTopPadding = 0; + } +#endif + [self addSubview:self.mainTableView]; + + _listContainerView = [[JXPagerListContainerView alloc] initWithType:type delegate:self]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + if (!CGRectEqualToRect(self.bounds, self.mainTableView.frame)) { + self.mainTableView.frame = self.bounds; + [self.mainTableView reloadData]; + } +} + +- (void)setDefaultSelectedIndex:(NSInteger)defaultSelectedIndex { + _defaultSelectedIndex = defaultSelectedIndex; + + self.listContainerView.defaultSelectedIndex = defaultSelectedIndex; +} + +- (void)setIsListHorizontalScrollEnabled:(BOOL)isListHorizontalScrollEnabled { + _isListHorizontalScrollEnabled = isListHorizontalScrollEnabled; + + self.listContainerView.scrollView.scrollEnabled = isListHorizontalScrollEnabled; +} + +- (void)reloadData { + self.currentList = nil; + self.currentScrollingListView = nil; + [_validListDict removeAllObjects]; + //根据新数据删除不需要的list + if (self.allowsCacheList) { + NSMutableArray *newListIdentifierArray = [NSMutableArray array]; + if (self.delegate && [self.delegate respondsToSelector:@selector(numberOfListsInPagerView:)]) { + NSInteger listCount = [self.delegate numberOfListsInPagerView:self]; + for (NSInteger index = 0; index < listCount; index ++) { + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerView:listIdentifierAtIndex:)]) { + NSString *listIdentifier = [self.delegate pagerView:self listIdentifierAtIndex:index]; + [newListIdentifierArray addObject:listIdentifier]; + } + } + } + NSArray *existedKeys = self.listCache.allKeys; + for (NSString *listIdentifier in existedKeys) { + if (![newListIdentifierArray containsObject:listIdentifier]) { + [self.listCache removeObjectForKey:listIdentifier]; + } + } + } + [self refreshTableHeaderView]; + if (self.pinSectionHeaderVerticalOffset != 0 && self.mainTableView.contentOffset.y > self.pinSectionHeaderVerticalOffset) { + self.mainTableView.contentOffset = CGPointZero; + } + [self.mainTableView reloadData]; + [self.listContainerView reloadData]; +} + +- (void)resizeTableHeaderViewHeightWithAnimatable:(BOOL)animatable duration:(NSTimeInterval)duration curve:(UIViewAnimationCurve)curve { + if (animatable) { + UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear; + switch (curve) { + case UIViewAnimationCurveEaseIn: options = UIViewAnimationOptionCurveEaseIn; break; + case UIViewAnimationCurveEaseOut: options = UIViewAnimationOptionCurveEaseOut; break; + case UIViewAnimationCurveEaseInOut: options = UIViewAnimationOptionCurveEaseInOut; break; + default: break; + } + [UIView animateWithDuration:duration delay:0 options:options animations:^{ + CGRect frame = self.tableHeaderContainerView.bounds; + frame.size.height = [self.delegate tableHeaderViewHeightInPagerView:self]; + self.tableHeaderContainerView.frame = frame; + self.mainTableView.tableHeaderView = self.tableHeaderContainerView; + [self.mainTableView setNeedsLayout]; + [self.mainTableView layoutIfNeeded]; + } completion:^(BOOL finished) { }]; + }else { + CGRect frame = self.tableHeaderContainerView.bounds; + frame.size.height = [self.delegate tableHeaderViewHeightInPagerView:self]; + self.tableHeaderContainerView.frame = frame; + self.mainTableView.tableHeaderView = self.tableHeaderContainerView; + } +} + +#pragma mark - Private + +- (void)refreshTableHeaderView { + UIView *tableHeaderView = [self.delegate tableHeaderViewInPagerView:self]; + UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, [self.delegate tableHeaderViewHeightInPagerView:self])]; + [containerView addSubview:tableHeaderView]; + tableHeaderView.translatesAutoresizingMaskIntoConstraints = NO; + NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:tableHeaderView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeTop multiplier:1 constant:0]; + NSLayoutConstraint *leading = [NSLayoutConstraint constraintWithItem:tableHeaderView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; + NSLayoutConstraint *bottom = [NSLayoutConstraint constraintWithItem:tableHeaderView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; + NSLayoutConstraint *trailing = [NSLayoutConstraint constraintWithItem:tableHeaderView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; + [containerView addConstraints:@[top, leading, bottom, trailing]]; + self.tableHeaderContainerView = containerView; + self.mainTableView.tableHeaderView = containerView; +} + +- (void)adjustMainScrollViewToTargetContentInsetIfNeeded:(UIEdgeInsets)insets { + if (UIEdgeInsetsEqualToEdgeInsets(insets, self.mainTableView.contentInset) == NO) { + self.mainTableView.delegate = nil; + self.mainTableView.contentInset = insets; + self.mainTableView.delegate = self; + } +} + +- (void)listViewDidScroll:(UIScrollView *)scrollView { + self.currentScrollingListView = scrollView; + [self preferredProcessListViewDidScroll:scrollView]; +} + +//仅用于处理设置了pinSectionHeaderVerticalOffset,又添加了MJRefresh的下拉刷新。这种情况会导致JXPagingView和MJRefresh来回设置contentInset值。针对这种及其特殊的情况,就内部特殊处理了。通过下面的判断条件,来判定当前是否处于下拉刷新中。请勿让pinSectionHeaderVerticalOffset和下拉刷新设置的contentInset.top值相同。 +//具体原因参考:https://github.com/pujiaxin33/JXPagingView/issues/203 +- (BOOL)isSetMainScrollViewContentInsetToZeroEnabled:(UIScrollView *)scrollView { + //scrollView.contentInset.top不为0,且scrollView.contentInset.top不等于pinSectionHeaderVerticalOffset,即可认为列表正在刷新。所以这里必须要保证pinSectionHeaderVerticalOffset和MJRefresh的mj_insetT的值不相等。 + BOOL isRefreshing = scrollView.contentInset.top != 0 && scrollView.contentInset.top != self.pinSectionHeaderVerticalOffset; + return !isRefreshing; +} + +#pragma mark - UITableViewDataSource, UITableViewDelegate + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return MAX(self.bounds.size.height - [self.delegate heightForPinSectionHeaderInPagerView:self] - self.pinSectionHeaderVerticalOffset, 0); +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + cell.backgroundColor = [UIColor clearColor]; + if (self.listContainerView.superview != cell.contentView) { + [cell.contentView addSubview:self.listContainerView]; + } + if (!CGRectEqualToRect(self.listContainerView.frame, cell.bounds)) { + self.listContainerView.frame = cell.bounds; + } + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + return [self.delegate heightForPinSectionHeaderInPagerView:self]; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + return [self.delegate viewForPinSectionHeaderInPagerView:self]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + return 1; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + UIView *footer = [[UIView alloc] initWithFrame:CGRectZero]; + footer.backgroundColor = [UIColor clearColor]; + return footer; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (self.pinSectionHeaderVerticalOffset != 0) { + if (!(self.currentScrollingListView != nil && self.currentScrollingListView.contentOffset.y > [self minContentOffsetYInListScrollView:self.currentScrollingListView])) { + //没有处于滚动某一个listView的状态 + if (scrollView.contentOffset.y >= self.pinSectionHeaderVerticalOffset) { + //固定的位置就是contentInset.top + [self adjustMainScrollViewToTargetContentInsetIfNeeded:UIEdgeInsetsMake(self.pinSectionHeaderVerticalOffset, 0, 0, 0)]; + }else { + if ([self isSetMainScrollViewContentInsetToZeroEnabled:scrollView]) { + [self adjustMainScrollViewToTargetContentInsetIfNeeded:UIEdgeInsetsZero]; + } + } + } + } + [self preferredProcessMainTableViewDidScroll:scrollView]; + if (self.delegate && [self.delegate respondsToSelector:@selector(mainTableViewDidScroll:)]) { + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" + [self.delegate mainTableViewDidScroll:scrollView]; + #pragma GCC diagnostic pop + } + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerView:mainTableViewDidScroll:)]) { + [self.delegate pagerView:self mainTableViewDidScroll:scrollView]; + } +} + +- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { + self.listContainerView.scrollView.scrollEnabled = NO; + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerView:mainTableViewWillBeginDragging:)]) { + [self.delegate pagerView:self mainTableViewWillBeginDragging:scrollView]; + } +} + +- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { + if (self.isListHorizontalScrollEnabled && !decelerate) { + self.listContainerView.scrollView.scrollEnabled = YES; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerView:mainTableViewDidEndDragging:willDecelerate:)]) { + [self.delegate pagerView:self mainTableViewDidEndDragging:scrollView willDecelerate:decelerate]; + } +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + if (self.isListHorizontalScrollEnabled) { + self.listContainerView.scrollView.scrollEnabled = YES; + } + if ([self isSetMainScrollViewContentInsetToZeroEnabled:scrollView]) { + if (self.mainTableView.contentInset.top != 0 && self.pinSectionHeaderVerticalOffset != 0) { + [self adjustMainScrollViewToTargetContentInsetIfNeeded:UIEdgeInsetsZero]; + } + } + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerView:mainTableViewDidEndDecelerating:)]) { + [self.delegate pagerView:self mainTableViewDidEndDecelerating:scrollView]; + } +} + +- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { + if (self.isListHorizontalScrollEnabled) { + self.listContainerView.scrollView.scrollEnabled = YES; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerView:mainTableViewDidEndScrollingAnimation:)]) { + [self.delegate pagerView:self mainTableViewDidEndScrollingAnimation:scrollView]; + } +} + +#pragma mark - JXPagerListContainerViewDelegate + +- (NSInteger)numberOfListsInlistContainerView:(JXPagerListContainerView *)listContainerView { + return [self.delegate numberOfListsInPagerView:self]; +} + +- (id)listContainerView:(JXPagerListContainerView *)listContainerView initListForIndex:(NSInteger)index { + id list = self.validListDict[@(index)]; + if (list == nil) { + if (self.allowsCacheList && self.delegate && [self.delegate respondsToSelector:@selector(pagerView:listIdentifierAtIndex:)]) { + NSString *listIdentifier = [self.delegate pagerView:self listIdentifierAtIndex:index]; + list = self.listCache[listIdentifier]; + } + } + if (list == nil) { + list = [self.delegate pagerView:self initListAtIndex:index]; + __weak typeof(self)weakSelf = self; + __weak typeof(id) weakList = list; + [list listViewDidScrollCallback:^(UIScrollView *scrollView) { + weakSelf.currentList = weakList; + [weakSelf listViewDidScroll:scrollView]; + }]; + _validListDict[@(index)] = list; + if (self.allowsCacheList && self.delegate && [self.delegate respondsToSelector:@selector(pagerView:listIdentifierAtIndex:)]) { + NSString *listIdentifier = [self.delegate pagerView:self listIdentifierAtIndex:index]; + self.listCache[listIdentifier] = list; + } + } + return list; +} + + +- (void)listContainerViewWillBeginDragging:(JXPagerListContainerView *)listContainerView { + self.mainTableView.scrollEnabled = NO; +} + +- (void)listContainerViewWDidEndScroll:(JXPagerListContainerView *)listContainerView { + self.mainTableView.scrollEnabled = YES; +} + +- (void)listContainerView:(JXPagerListContainerView *)listContainerView listDidAppearAtIndex:(NSInteger)index { + self.currentScrollingListView = [self.validListDict[@(index)] listScrollView]; + for (id listItem in self.validListDict.allValues) { + if (listItem == self.validListDict[@(index)]) { + [listItem listScrollView].scrollsToTop = YES; + }else { + [listItem listScrollView].scrollsToTop = NO; + } + } +} + +- (Class)scrollViewClassInlistContainerView:(JXPagerListContainerView *)listContainerView { + if (self.delegate && [self.delegate respondsToSelector:@selector(scrollViewClassInlistContainerViewInPagerView:)]) { + return [self.delegate scrollViewClassInlistContainerViewInPagerView:self]; + } + return nil; +} + +@end + +@implementation JXPagerView (UISubclassingGet) + +- (CGFloat)mainTableViewMaxContentOffsetY { + return [self.delegate tableHeaderViewHeightInPagerView:self] - self.pinSectionHeaderVerticalOffset; +} + +@end + +@implementation JXPagerView (UISubclassingHooks) + +- (void)preferredProcessListViewDidScroll:(UIScrollView *)scrollView { + if (self.mainTableView.contentOffset.y < self.mainTableViewMaxContentOffsetY) { + //mainTableView的header还没有消失,让listScrollView一直为0 + if (self.currentList && [self.currentList respondsToSelector:@selector(listScrollViewWillResetContentOffset)]) { + [self.currentList listScrollViewWillResetContentOffset]; + } + [self setListScrollViewToMinContentOffsetY:scrollView]; + if (self.automaticallyDisplayListVerticalScrollIndicator) { + scrollView.showsVerticalScrollIndicator = NO; + } + }else { + //mainTableView的header刚好消失,固定mainTableView的位置,显示listScrollView的滚动条 + self.mainTableView.contentOffset = CGPointMake(0, self.mainTableViewMaxContentOffsetY); + if (self.automaticallyDisplayListVerticalScrollIndicator) { + scrollView.showsVerticalScrollIndicator = YES; + } + } +} + +- (void)preferredProcessMainTableViewDidScroll:(UIScrollView *)scrollView { + if (self.currentScrollingListView != nil && self.currentScrollingListView.contentOffset.y > [self minContentOffsetYInListScrollView:self.currentScrollingListView]) { + //mainTableView的header已经滚动不见,开始滚动某一个listView,那么固定mainTableView的contentOffset,让其不动 + [self setMainTableViewToMaxContentOffsetY]; + } + + if (scrollView.contentOffset.y < self.mainTableViewMaxContentOffsetY) { + //mainTableView已经显示了header,listView的contentOffset需要重置 + for (id list in self.validListDict.allValues) { + if ([list respondsToSelector:@selector(listScrollViewWillResetContentOffset)]) { + [list listScrollViewWillResetContentOffset]; + } + [self setListScrollViewToMinContentOffsetY:[list listScrollView]]; + } + } + + if (scrollView.contentOffset.y > self.mainTableViewMaxContentOffsetY && self.currentScrollingListView.contentOffset.y == [self minContentOffsetYInListScrollView:self.currentScrollingListView]) { + //当往上滚动mainTableView的headerView时,滚动到底时,修复listView往上小幅度滚动 + [self setMainTableViewToMaxContentOffsetY]; + } +} + +- (void)setMainTableViewToMaxContentOffsetY { + self.mainTableView.contentOffset = CGPointMake(0, self.mainTableViewMaxContentOffsetY); +} + +- (void)setListScrollViewToMinContentOffsetY:(UIScrollView *)scrollView { + scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, [self minContentOffsetYInListScrollView:scrollView]); +} + +- (CGFloat)minContentOffsetYInListScrollView:(UIScrollView *)scrollView { + if (@available(iOS 11.0, *)) { + return -scrollView.adjustedContentInset.top; + } + return -scrollView.contentInset.top; +} + + +@end diff --git a/Pods/JXPagingView/Sources/PrivacyInfo.xcprivacy b/Pods/JXPagingView/Sources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..9021190 --- /dev/null +++ b/Pods/JXPagingView/Sources/PrivacyInfo.xcprivacy @@ -0,0 +1,14 @@ + + + + + NSPrivacyAccessedAPITypes + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index a8812f6..9ed0f51 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -18,6 +18,8 @@ PODS: - DZNEmptyDataSet (1.8.1) - FLAnimatedImage (1.0.17) - HWPanModal (0.9.9) + - JXCategoryView (1.6.8) + - JXPagingView/Pager (2.1.3) - LookinServer (1.2.8): - LookinServer/Core (= 1.2.8) - LookinServer/Core (1.2.8) @@ -41,6 +43,8 @@ DEPENDENCIES: - DZNEmptyDataSet (= 1.8.1) - FLAnimatedImage (~> 1.0.17) - HWPanModal (~> 0.9.9) + - JXCategoryView + - JXPagingView/Pager (~> 2.1.3) - LookinServer - LSTPopView (~> 0.3.10) - Masonry (= 1.1.0) @@ -56,6 +60,8 @@ SPEC REPOS: - DZNEmptyDataSet - FLAnimatedImage - HWPanModal + - JXCategoryView + - JXPagingView - LookinServer - LSTPopView - LSTTimer @@ -71,6 +77,8 @@ SPEC CHECKSUMS: DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2 + JXCategoryView: 262d503acea0b1278c79a1c25b7332ffaef4d518 + JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e LookinServer: 1b2b61c6402ae29fa22182d48f5cd067b4e99e80 LSTPopView: 9379f00f6ce7d1fc620b50ab00ed3ef97b2d4d52 LSTTimer: caf8f02ff366ca175cf4c1778d26c166183c1b6f @@ -80,6 +88,6 @@ SPEC CHECKSUMS: MJRefresh: ff9e531227924c84ce459338414550a05d2aea78 SDWebImage: f29024626962457f3470184232766516dee8dfea -PODFILE CHECKSUM: c50284c86c4e30cee59c186e48767667019dcb61 +PODFILE CHECKSUM: ce689000a7b9b24f5d74cc50a93350665c3af035 COCOAPODS: 1.16.2 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 244981e..323828f 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -19,1319 +19,1565 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 0005259AEE76604A26E43EA994475B68 /* HWShoppingCartPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8927ADAF60DF7D3D91B390580BD36295 /* HWShoppingCartPresentingAnimation.m */; }; - 00DAE48C9A4FBCD1FCAA922CA57B45F9 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 23518377A93659DE7C8E586309E28896 /* SDWebImageDownloaderRequestModifier.m */; }; - 01D2F1D0ABE13AAB2CDC0C25E378E964 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D37BD8FF05E69B29FC64F9CEB3CA7255 /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 021ACCD4343D154E4782A5ECE222A8DF /* LookinIvarTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 587808BB0F9012792B17999F0BB495C4 /* LookinIvarTrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 03623FBDBE9F6B422E9A5C6EAD321A58 /* HWPanModalPresenterProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 093706FD3573E105CD2368D496C2DF76 /* HWPanModalPresenterProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 042D40751BD2F51FBE9FECD4707CBBE9 /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D13B75999F5A8EF9D0BABA6DAF09179 /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0453019EC6578A67B82CF569EC765546 /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 622B25C415B746B0A4DE004201B6C241 /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 059E13B65EC846A6B5D5F5A68D26D194 /* Pods-keyBoard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */; }; - 05E2B7C1DB7528A0BBEA1521BE0DBAF1 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 5593F84C8F2583B27ACE6E149D4B8B0E /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 06C4E233E7977DB81A24482E69B2D7D7 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = 95F5264D9ED9939AE536B5201D80DB5E /* UIImage+Transform.m */; }; - 0845A6CB7AE77A99CC475BD14101FE87 /* LookinAttrType.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E3DC362C663E7C7DAB5B7DC796C5507 /* LookinAttrType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08719ABCE689ED74FE7486B1E49DAA6C /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = BE11DDB27A20A87C02AE0F91342FA9E9 /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 089F3C4BAA46A37EC5763DD312771021 /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 71086CB516DC09CA5D29736469412558 /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08D50C5AC969A3701B6F9137CF3A10F1 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C63EE1B9AB32B647D64489A498987B3 /* UIImage+ForceDecode.m */; }; - 09A2ACBC8CE1761652EAA20886AEFE10 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B83EEE0D453B8B01D8275D3EEBF4BF /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0A7342FACEBA0077F1B06178940883DB /* HWPanModal.h in Headers */ = {isa = PBXBuildFile; fileRef = 53EC2576F6D68ECA3E1920A896AE4E4F /* HWPanModal.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B0E6CECDF516BC83756C1D5515A725B /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C7E35B5D53702D7A355AD38231170EAB /* SDAsyncBlockOperation.m */; }; - 0B449236AF25C6C11B0DE3D6D0E4A19B /* LookinEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = D85D1D9B369469B71D9FE49138927707 /* LookinEventHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0BE3B8DB6034364E7CF3AE9D01C7C0B4 /* CALayer+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = B53B6AA90E9FBFBBE4E4275DE10531D3 /* CALayer+Lookin.m */; }; - 0C79142D1349DD9A969F47A0A8AAA0CB /* Lookin_PTProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = C2641A163910BF7346FA6273237FDB7D /* Lookin_PTProtocol.m */; }; - 0EF10747EF2A02413E84BD5EF7C87A4B /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = A4685A3F7A42EE78A5B66190A100B3C2 /* MJRefreshNormalHeader.m */; }; - 0F1D0F5DCC8C94A4C684DF846D14F436 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D10385C2D9391B809DFD74B21A570 /* SDWebImagePrefetcher.m */; }; - 0FF9F459ED16719292443A4C99B52B20 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F98986A52AAB68B64127A983F8CB7D9 /* SDImageCache.m */; }; - 10017B43AC38C3A89D7AC1376C6E7066 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FCA5CF6F4A026896316D8731B3E493F /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 104D9196010D2A8C52C0C19E9C9D52E8 /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0B5D7F39DA4B830F1B68A7D9273B85E /* MBProgressHUD-dummy.m */; }; - 117F4B6F653A8DA2637C5C93B4993884 /* Peertalk.h in Headers */ = {isa = PBXBuildFile; fileRef = 141D1CCF79DF1688C14B5C5A4CACC6E0 /* Peertalk.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 11C929E6BFB46F981685446F26DCE605 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = FFF8ADD6067D862411385E3BFF71A8DA /* MJRefreshAutoFooter.m */; }; - 11D4DC1FCE5647EEA8484AA4A880AF8F /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B77702D1A0EF9DC4542AD40D9D3062E /* MBProgressHUD.m */; }; - 126496714AD564062A8C10787CC01B8B /* MJFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 77EBE36C10B9452DC1931AC9779D7F79 /* MJFoundation.m */; }; - 12EC136F97CCCDD8C3765925FABA52CD /* HWPanModalHeight.h in Headers */ = {isa = PBXBuildFile; fileRef = C49E916A72175489DFFC49A15E87403D /* HWPanModalHeight.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14943D0EE97A4966510A86F5C3FC66A5 /* MJExtension-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACD4F15622D5B40EA4047FEA329658B /* MJExtension-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14CA284AC4FF1EED75E785641EE98034 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F62EE3A88E154ADAC90DDF6BC60DFB6 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 150116E888969E8304BA3E2BB6529461 /* LookinHierarchyFile.h in Headers */ = {isa = PBXBuildFile; fileRef = D4EB28525886DCE45DC1BBE08F77BCDF /* LookinHierarchyFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0005259AEE76604A26E43EA994475B68 /* HWShoppingCartPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 62C28B0ACA1E8D749FA6E65D70CFCB2D /* HWShoppingCartPresentingAnimation.m */; }; + 00DAE48C9A4FBCD1FCAA922CA57B45F9 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 02986FE530B6F5FD0ABF721900839DA5 /* SDWebImageDownloaderRequestModifier.m */; }; + 01D2F1D0ABE13AAB2CDC0C25E378E964 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = BD89A8E0323AB57CE283C150C3D4C556 /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 020FEDA58170EE1ABDF9E268D373CF4F /* JXCategoryNumberView.m in Sources */ = {isa = PBXBuildFile; fileRef = 44CB5B4F2C2351C8F32C675C94C2EAC0 /* JXCategoryNumberView.m */; }; + 021ACCD4343D154E4782A5ECE222A8DF /* LookinIvarTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 765DBAD68AB5F355FB80870758AFB22C /* LookinIvarTrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 03623FBDBE9F6B422E9A5C6EAD321A58 /* HWPanModalPresenterProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = E8DC9FFB899510CE978017ADFAFE6D87 /* HWPanModalPresenterProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 042D40751BD2F51FBE9FECD4707CBBE9 /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F246E4D58E65C83AB3493871F692FC9C /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0453019EC6578A67B82CF569EC765546 /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3201B19667C12026E1C92EA1DD973BB7 /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 05E2B7C1DB7528A0BBEA1521BE0DBAF1 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E18E15D3A7901E5A84136DADC023216 /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 05EEA40D460AB9A5A6E8D33AAAEF801E /* JXPagingView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AFBCBD9F77FD5CF26B2BEBE02B1E19D9 /* JXPagingView-dummy.m */; }; + 060B00D5B019369654AEAB7C116DC119 /* LSTTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = C4A783F974F95D31DCCDA721D4F965EC /* LSTTimer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 06C4E233E7977DB81A24482E69B2D7D7 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = A67C49E3D329D82553E5FEBB4951ABD7 /* UIImage+Transform.m */; }; + 0845A6CB7AE77A99CC475BD14101FE87 /* LookinAttrType.h in Headers */ = {isa = PBXBuildFile; fileRef = D7DFD14540146731FB9E466FA1EB81F0 /* LookinAttrType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 08719ABCE689ED74FE7486B1E49DAA6C /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 15D9AA9876374637F32E00BE13AA1880 /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 089F3C4BAA46A37EC5763DD312771021 /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 390647665D633FF246584D1E27162F0D /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 08D50C5AC969A3701B6F9137CF3A10F1 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 6645D9E2FCEC9ED435B284460DEDDF89 /* UIImage+ForceDecode.m */; }; + 09A2ACBC8CE1761652EAA20886AEFE10 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 471A02E298FA363A6051045C83C8BE05 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A7342FACEBA0077F1B06178940883DB /* HWPanModal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6260795D5ABBA18F8EFECC2CEB871872 /* HWPanModal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0AA1842830C770B1E299BAC977E813D9 /* JXCategoryIndicatorRainbowLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = FD5B9F06C28C32AA434A5A2FFACDF89A /* JXCategoryIndicatorRainbowLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0B0E6CECDF516BC83756C1D5515A725B /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E8666C77464C3B683AB0F8D4DEA6951 /* SDAsyncBlockOperation.m */; }; + 0B449236AF25C6C11B0DE3D6D0E4A19B /* LookinEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = E97B2ACE11733D7DD5ECA116979B91D5 /* LookinEventHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0BE3B8DB6034364E7CF3AE9D01C7C0B4 /* CALayer+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 673B42B9F094B1F5ED808EE1BA26FC30 /* CALayer+Lookin.m */; }; + 0C312924F0A07471A1D04AD15D32BF3A /* JXCategoryIndicatorRainbowLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = CC8BAAD188938B05A876ECFEAA39F2E6 /* JXCategoryIndicatorRainbowLineView.m */; }; + 0C79142D1349DD9A969F47A0A8AAA0CB /* Lookin_PTProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 9545413A1EE5D2E50A21E8D9794A771A /* Lookin_PTProtocol.m */; }; + 0D6EFFD314E70C1E547970D8CEF11131 /* JXPagerMainTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 119B8F0EF70910D693FCCA816529E357 /* JXPagerMainTableView.m */; }; + 0EF10747EF2A02413E84BD5EF7C87A4B /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = CAD02815855109CE0DDD83222F913EF8 /* MJRefreshNormalHeader.m */; }; + 0F1D0F5DCC8C94A4C684DF846D14F436 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = E48A50CB4DE0A87DE4F3E1BFE24DC7B7 /* SDWebImagePrefetcher.m */; }; + 0FF9F459ED16719292443A4C99B52B20 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 11EEC0D59FA31FAAD209A208EB338575 /* SDImageCache.m */; }; + 10017B43AC38C3A89D7AC1376C6E7066 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E889A3C02C6D9C2F5501AF30759E916C /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 104D9196010D2A8C52C0C19E9C9D52E8 /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 93081A25D8BCD8327365F5FAC77C46F3 /* MBProgressHUD-dummy.m */; }; + 117F4B6F653A8DA2637C5C93B4993884 /* Peertalk.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FDFBF5B5FE03EAE7CBA31ED300F848E /* Peertalk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11AD210D385F977383AFB974D3CDEF53 /* JXCategoryListContainerRTLCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C36F83AF55E2873F497777F59071760 /* JXCategoryListContainerRTLCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11C929E6BFB46F981685446F26DCE605 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BE6EFE785E6216D9C7C1D6B7A4EEA5EA /* MJRefreshAutoFooter.m */; }; + 11D4DC1FCE5647EEA8484AA4A880AF8F /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = DB3619AB8798CD8CAE31E140F80F2DC0 /* MBProgressHUD.m */; }; + 126496714AD564062A8C10787CC01B8B /* MJFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A7EBF5198D90CFC9C01A0BA03924D8 /* MJFoundation.m */; }; + 12EC136F97CCCDD8C3765925FABA52CD /* HWPanModalHeight.h in Headers */ = {isa = PBXBuildFile; fileRef = 5731585BDD8DA229201CF537357BCA56 /* HWPanModalHeight.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1399CD097E164E2C7A6882F0C8FFA525 /* JXCategoryIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D6F5B88F49EB151A388B58319A67E2A1 /* JXCategoryIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14943D0EE97A4966510A86F5C3FC66A5 /* MJExtension-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AE09548D63659FAE72F5C6F1EBF230FC /* MJExtension-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14CA284AC4FF1EED75E785641EE98034 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 94DB79C6893EAE9D1A7D3559B485BCC5 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 150116E888969E8304BA3E2BB6529461 /* LookinHierarchyFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 63000DF25140BBB4F03EDFC289F2B197 /* LookinHierarchyFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; 15B27182B591769C57B55544260DC886 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 165F1C9CBD621828C788A3018D0426C5 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = BF5EC4E67D9695435096AE8FFF0726FA /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 165F1C9CBD621828C788A3018D0426C5 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = FB334521D7F08199DE839AB68A37105C /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 168889E3E897E6D6102A2AA7F7C47496 /* JXCategoryIndicatorComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B0139E3193D3960F1A46D73064CA34A /* JXCategoryIndicatorComponentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 16D7DCB7CC985C33EEC41B371C029C84 /* SDWebImage-SDWebImage in Resources */ = {isa = PBXBuildFile; fileRef = CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */; }; - 1708C1D28B421C4AD310426D1695CE77 /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = F24C826B62D5E083C9293F7721C463C2 /* SDAnimatedImage.m */; }; - 1754DD5511A7BF462B116F70B0D4006A /* SDWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E41E643057B645A4E6C5FEA5E52213CB /* SDWebImageOperation.m */; }; - 1830558A4D2D63C8E76BC3136D8213F9 /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 67D554550B250775795416CCAF8BD370 /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 18660FA595DBE133BB784E813A7122A8 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7859E48715647D45C428FB82F31DB2BA /* SDImageHEICCoder.m */; }; - 186B573F1BEB8A23419A02814A7741DB /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 65EE0AA02CCB84E9D0C6987A57196DE0 /* MJRefreshFooter.m */; }; - 18AD90784D549657DF51BC8377DA3085 /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = FB689A278C80C26E3B3E80EDA3887106 /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 18CDCA86F129B7251D21E8F3FF8656B9 /* LSTTimer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F9F21BFD087BDB0FF37B51B916F0A3DC /* LSTTimer-dummy.m */; }; - 1B52E938D7999FC0CDA2AA22674948EB /* LookinAttributesGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AA6F90EC76FE7C2ACDF3266FD792D7A /* LookinAttributesGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1B6CE67196EE181E6B56788EFC7E00D3 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C99A570F5F1154C55309832EC47D0D /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1BC44E2FDD197D5210A23C9CCF1A906B /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = BF559CBB24F4A49720F72A32ADDCCFE2 /* SDWebImageCompat.m */; }; - 1C5CCB87E5B9C500F07A8244D7906295 /* LookinAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CA040E4FC9E6D5254278E66354DE0995 /* LookinAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1C8B70C74291A3076746C3B18781568E /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 79B0D13A04128B711BB3AFF0676EC3D0 /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1CA85ECC202E5CF62530BAD7C0DCDAF2 /* LookinHierarchyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E03AEFAD237B8966FCFA45B3312FEE7 /* LookinHierarchyInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1D18A1A5D485D57192B021A8765C0AF5 /* LookinTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE44CAA3E728CD13C43CF7D34627D80 /* LookinTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1D3DCD05B685A7CAF291C25D922B1831 /* HWPanModalPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7586CB0CDC6CAF19F6A64083B6C8C0F /* HWPanModalPresentationController.m */; }; - 1DB724891F1F6468BDB333369F667F39 /* HWPanModalPresentableHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A664809217C1D10A7EC649E972D6AB /* HWPanModalPresentableHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1EA011B45EC780B434507AFB3D9647ED /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B6CB7D56E64BDB8EB50D17E5CEC7C8F /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1EC3AEA15AE416A53357261B37C622BD /* LKS_TraceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A75ADFE775EE09236D1DF5672ACB9A4C /* LKS_TraceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1ECC5F320AEFB120081358B4FFB7442F /* NSString+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = F72D861CBD81CE860AF0AE80BBE0D883 /* NSString+MJExtension.m */; }; - 1EDC6F899051F0E858270F7556AF2F12 /* UIVisualEffectView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 80E15D4BAC4857AD45CC8CDC40384F0F /* UIVisualEffectView+LookinServer.m */; }; - 1EDF5F5B68D4A76CE59D5B6CC7B6C469 /* LookinAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 074925B1189A88BAA6297431490B8041 /* LookinAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FD36A180D43C773D95D8E5BF719494C /* LookinDisplayItemDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = FADEEDA2729187D0D3E4FF58DCAE4F5E /* LookinDisplayItemDetail.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FDEA3FFA45F29C1331723E9579D66A5 /* LookinAutoLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 0175DE132412321B3302CBE48CE0F712 /* LookinAutoLayoutConstraint.m */; }; - 2055774CD703B52DABFB1CC588394A94 /* MJExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F7A5B6B4FC335FF159BAE91EDDEC3320 /* MJExtension-dummy.m */; }; - 20D618EF3EA5E3BE96DA24D36E3CA9EF /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 776331A7467F397FCD02F62B233A6E93 /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 20E738E52B4712385489A62374C74C7F /* Lookin_PTUSBHub.m in Sources */ = {isa = PBXBuildFile; fileRef = 899D158EA21A86AFAE75EACD2CFC106B /* Lookin_PTUSBHub.m */; }; - 22516EA77E7120000632C30BD9A03927 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EE2F8245BCEBA174A7A8891FBE03ECB /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 22F19B23471EE7840581A348EB735BD1 /* UIViewController+LayoutHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0041D895443AAAA3D1BCD4056EBB4F37 /* UIViewController+LayoutHelper.m */; }; - 231A40F14D020AE2F61AA5C3289E6CF9 /* UITextView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B099323376948696DA373792CC4983D /* UITextView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2460C08042AF8B7D0492A062F755986E /* NSString+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 4610142EAB51ECDD8FC137942A59F231 /* NSString+Lookin.m */; }; - 24E8E4ED0B5D988E3346E6638619F4E4 /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = A8A5F422D3A80975E78C20D9980BBAE7 /* SDImageFrame.m */; }; - 24E963C1D6245F98BAC8A0ACCB7DE987 /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = AB93341F4852834DE8BA29DAB3E69371 /* NSBundle+MJRefresh.m */; }; + 1708C1D28B421C4AD310426D1695CE77 /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B609960A71B1FE2AB814B679D9E7609 /* SDAnimatedImage.m */; }; + 17341EDF872432C3966B77976F3E0470 /* JXCategoryTitleVerticalZoomCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 60A68C8A5D160FE046F60DF6C446111D /* JXCategoryTitleVerticalZoomCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1754DD5511A7BF462B116F70B0D4006A /* SDWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = ED2932A528EF3931C345CFE64B9F95D6 /* SDWebImageOperation.m */; }; + 1830558A4D2D63C8E76BC3136D8213F9 /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 75B6A4916D912131001F61C28CCA6565 /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 18660FA595DBE133BB784E813A7122A8 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 3125F7D904D9F1F20C7699EF5186B19F /* SDImageHEICCoder.m */; }; + 186B573F1BEB8A23419A02814A7741DB /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CE7B5832F4AC9648A3CEB7DD03473E4 /* MJRefreshFooter.m */; }; + 18AD90784D549657DF51BC8377DA3085 /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = EC33F9EE9311F0E41E69AB2D40770217 /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B52E938D7999FC0CDA2AA22674948EB /* LookinAttributesGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 57D32F597DFAC06B9198FA1F48D2995D /* LookinAttributesGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B6CE67196EE181E6B56788EFC7E00D3 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 911E6F5D1D17453D35BE3FA4A9086972 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1BC44E2FDD197D5210A23C9CCF1A906B /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 64891F4568CD87380D133019B00B2324 /* SDWebImageCompat.m */; }; + 1C0FA6017CAD67C1A80FFA70024FC6FD /* JXCategoryIndicatorCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CF64931699D303A3C9AE1FFC4682E257 /* JXCategoryIndicatorCell.m */; }; + 1C1BC9F0555B36914FF5278D30152DE6 /* JXCategoryNumberView.h in Headers */ = {isa = PBXBuildFile; fileRef = C6B6ABC9B259D86AA3C2451E682BE701 /* JXCategoryNumberView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C5CCB87E5B9C500F07A8244D7906295 /* LookinAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 908BDA99457974AD8998A674A0C0FB12 /* LookinAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C8B70C74291A3076746C3B18781568E /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DC4AC8D166AB2BD8B557BFA9FA9872C /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1CA85ECC202E5CF62530BAD7C0DCDAF2 /* LookinHierarchyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = A8105D73597438386DADF22233AAD4B3 /* LookinHierarchyInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D18A1A5D485D57192B021A8765C0AF5 /* LookinTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EB1D88070F8207A333D4573DA43A15 /* LookinTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D3DCD05B685A7CAF291C25D922B1831 /* HWPanModalPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 94D99E2E2730992302FB9BAA7CCE2A1C /* HWPanModalPresentationController.m */; }; + 1DB724891F1F6468BDB333369F667F39 /* HWPanModalPresentableHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFBC54BDE2AC21397492351C31C587A /* HWPanModalPresentableHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1DC161351EBD409CC622E826340E4FD8 /* JXCategoryTitleVerticalZoomCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 54CBDA1EBC8A896E6DB3A15D5332DB1C /* JXCategoryTitleVerticalZoomCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1EA011B45EC780B434507AFB3D9647ED /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 9777292C62AA2375C63BAEF75D1F940C /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1EC3AEA15AE416A53357261B37C622BD /* LKS_TraceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1278AB0B776862F23D89B7E8596E3598 /* LKS_TraceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1ECC5F320AEFB120081358B4FFB7442F /* NSString+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B4EF64EB8018D8E9CE7C8CB5FACCD5B /* NSString+MJExtension.m */; }; + 1EDC6F899051F0E858270F7556AF2F12 /* UIVisualEffectView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CE6BF39C6199FC5B55217046DDE2CDB /* UIVisualEffectView+LookinServer.m */; }; + 1EDF5F5B68D4A76CE59D5B6CC7B6C469 /* LookinAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 659E6E588427268237F9F2C40D2F6CBD /* LookinAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1F778CA18D1F4A50D9F15280B25D10EB /* JXCategoryTitleImageCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = DDAA59B8AF34E0C4765874AEE69571F7 /* JXCategoryTitleImageCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FD36A180D43C773D95D8E5BF719494C /* LookinDisplayItemDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E7F18004D9337D64F0F606975492DF4 /* LookinDisplayItemDetail.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FDEA3FFA45F29C1331723E9579D66A5 /* LookinAutoLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA1EEEB5386D6FCA6523BE43601C382 /* LookinAutoLayoutConstraint.m */; }; + 2055774CD703B52DABFB1CC588394A94 /* MJExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D4A62A4549AC17B0296FF7D29E15454 /* MJExtension-dummy.m */; }; + 20D5706AD3ED295B4FBACD8825DC3A1E /* JXPagerListRefreshView.h in Headers */ = {isa = PBXBuildFile; fileRef = 359AD735B8CFD982730F6CEB0F56A487 /* JXPagerListRefreshView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 20D618EF3EA5E3BE96DA24D36E3CA9EF /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9820AAA1C732351179414BB46300A1B7 /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 20E738E52B4712385489A62374C74C7F /* Lookin_PTUSBHub.m in Sources */ = {isa = PBXBuildFile; fileRef = BC38AB7DAEDA3DEEFFAC64BDA7FA3C88 /* Lookin_PTUSBHub.m */; }; + 20FBBC12322412237D48D3695D98E043 /* JXCategoryDotView.m in Sources */ = {isa = PBXBuildFile; fileRef = EED2C7FD129EA6F065286A12502B79B7 /* JXCategoryDotView.m */; }; + 2175B894008D948C762468307BA677B8 /* RTLManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E5EA191D7CFA74A3FEAFB27130A3FEC7 /* RTLManager.m */; }; + 22516EA77E7120000632C30BD9A03927 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 23648E3B16301958DD4429C021EB223C /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 22C38AE7AB145224FF646303AFED11D2 /* JXCategoryDotCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = ABD4819FE00A1A954ABDDF0893C72587 /* JXCategoryDotCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 22F19B23471EE7840581A348EB735BD1 /* UIViewController+LayoutHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 76724C714C93839E6993DF68B545F17B /* UIViewController+LayoutHelper.m */; }; + 231A40F14D020AE2F61AA5C3289E6CF9 /* UITextView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A56B5A6CAF35241FF9D41CAC7DC1D6D2 /* UITextView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2395CE03CE80FC5F9A7F61C48270618B /* JXCategoryViewAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = B46184374613AB561CB67E0F1EF14DD8 /* JXCategoryViewAnimator.m */; }; + 2460C08042AF8B7D0492A062F755986E /* NSString+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = D9EC522C5B6A10C53A05FE81CED85983 /* NSString+Lookin.m */; }; + 24E8E4ED0B5D988E3346E6638619F4E4 /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEC3302C39E58E44D49A12FA8699A84 /* SDImageFrame.m */; }; + 24E963C1D6245F98BAC8A0ACCB7DE987 /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 824A8DE6460C98A565B1EDD8B4432F50 /* NSBundle+MJRefresh.m */; }; 2567FE276DB76481DEFC7DDFE7D775CC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 261C31F4038EC00D5961218C97905E21 /* LookinConnectionResponseAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = BAD931CF8729677FC0BD6248B49E6631 /* LookinConnectionResponseAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 27212D06F5EDE3BB10264D93075B2275 /* LookinDashboardBlueprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 140B9E97F5B5BEB056AA3A4DFFA9891B /* LookinDashboardBlueprint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2759D8D4FCE58812ADECB348E369C6F0 /* LKS_MultiplatformAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = E78C9A636C9E4C5CFBDECBA5127AF367 /* LKS_MultiplatformAdapter.m */; }; - 27CC45A4ABE5B40723D35310D05CD146 /* LKS_EventHandlerMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = BFD36E41E270B32316CAE346D73B1BB4 /* LKS_EventHandlerMaker.m */; }; - 288CD3416B265CAC1300D7938167AE66 /* MJPropertyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = A73F313A18713E36B251C92C66806CE8 /* MJPropertyKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 288D796F3F7B9F42690E24A3B1018B2C /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 741B32704926AB941D9209B2D37E2B8F /* SDImageIOAnimatedCoder.m */; }; - 28BA9702905AA2B4C1E9E4878032D4E4 /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = AE979EFDEE516846488B7EE0D6F7EED8 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 29F7F0E98FD26A96364DBACD7D5F237A /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = D1995E5A7C78EB3AC4764F06A4A7E676 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2A24F241D7D74FF6DEA953F9DD49391C /* LKS_EventHandlerMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = E19751E7E128A05C5F94C54CB5222006 /* LKS_EventHandlerMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2CDC7B9EAD356E35FEAF526EEA6A8E91 /* LookinWeakContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = ACDFCFE3242922DD1C6F9C0911E0A56B /* LookinWeakContainer.m */; }; - 2D0E2E3CDCB12399497B4F31D4C20E3E /* HWShoppingCartPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = D9879EAF15EB971D024F6726C4E07562 /* HWShoppingCartPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2DC44A09A6C9D6DC7D1BDA2DFCF99EE3 /* MJRefreshConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = EF96CCDE1944CF562A65CA60FCBAD8CC /* MJRefreshConfig.m */; }; - 2DDA5F044BC698BC5D48A7CFDDBF71E3 /* LookinAttributeModification.m in Sources */ = {isa = PBXBuildFile; fileRef = 624CC6F33BF93A1458307F73823C3E10 /* LookinAttributeModification.m */; }; - 2DDD48230ED9E8068C7E439D79B99A8E /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8204B00622081F3C51B1FC2D83A2D0D0 /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 2E86A7C77E43AEA4697979F1F848E68D /* LKS_RequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = AE403DA6C5955C67D130890FCA703778 /* LKS_RequestHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2EC1750C894F036194B90CFD26072B0C /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D1A874AEEF141E292D730F9161627B04 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2EFF1EFA2FF0D2F1AE44A9DDBB932425 /* UIScrollView+EmptyDataSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AD771C5136CD5549FAE44B9E4C2DFD2 /* UIScrollView+EmptyDataSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2F6D9BEA582A2DBB70A6C3B2FC2DB91E /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = FB095F0736BB4D6DAB423B110675CCD9 /* SDWebImageDownloaderResponseModifier.m */; }; - 3111CEA93C868CA68CBD351C934FEB80 /* LSTPopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 80A4C5F30966DCCAF12719455CE5BA94 /* LSTPopView.m */; }; - 3127F22BF0A5465D472669272D586BDC /* HWPanModalIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = BF679003FB79C12E8A8221EC19044EC3 /* HWPanModalIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3187FF0C251D1B78BE87F64F6F6E944A /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = C930EDADB5661C1F591CA4E0A60BCA26 /* SDWebImageTransition.m */; }; - 31DC2EC78AD1F8241AE6051EF9E73B0A /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BAFAB49E37FE01E69DA8AF02F372885 /* SDWebImageDefine.m */; }; - 320DE42AF3CFE11FF785FEB1A7E6547B /* SDImageFramePool.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F01F027ADEF8C49A4605D787E41BD1C /* SDImageFramePool.m */; }; - 321F87DA34863DC5C977323BAEDB2B55 /* NSObject+MJCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = BE0B0E1A9A292EDE11246C6685B3FF8A /* NSObject+MJCoding.m */; }; - 325CA20B9271F3E008234E1518B79061 /* MJRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 63277FA9AFB139990459DF6C57B238F5 /* MJRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 261C31F4038EC00D5961218C97905E21 /* LookinConnectionResponseAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 989150BD3DA7E7AE5D05E2F37E778A8D /* LookinConnectionResponseAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 266352AA446DAE8C9502E83810C174D9 /* JXCategoryImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7778E8300903006F261959B2010A06D2 /* JXCategoryImageView.m */; }; + 27212D06F5EDE3BB10264D93075B2275 /* LookinDashboardBlueprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D31ED01216EF87422BD04709990AFA0 /* LookinDashboardBlueprint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2759D8D4FCE58812ADECB348E369C6F0 /* LKS_MultiplatformAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FBD8AFE7FA55EAB140791EC34C18CD4 /* LKS_MultiplatformAdapter.m */; }; + 27CC45A4ABE5B40723D35310D05CD146 /* LKS_EventHandlerMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C21A04AB85F6948BCB44480387E46C5 /* LKS_EventHandlerMaker.m */; }; + 288CD3416B265CAC1300D7938167AE66 /* MJPropertyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 367088C36E8BF33957802AE4A6256CC1 /* MJPropertyKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 288D796F3F7B9F42690E24A3B1018B2C /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 3504487D6CA5438A7FB00D149564DDFC /* SDImageIOAnimatedCoder.m */; }; + 28BA9702905AA2B4C1E9E4878032D4E4 /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 55A76B2979ED12495977612719BE47A2 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 29F7F0E98FD26A96364DBACD7D5F237A /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 402826B784C1198142F399AD251F2A3A /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2A24F241D7D74FF6DEA953F9DD49391C /* LKS_EventHandlerMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = E5AA796F8B4298B625A467D39523F40F /* LKS_EventHandlerMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2CDC7B9EAD356E35FEAF526EEA6A8E91 /* LookinWeakContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 16464E573FCB8AFF2E7DB58E7A507D73 /* LookinWeakContainer.m */; }; + 2D0E2E3CDCB12399497B4F31D4C20E3E /* HWShoppingCartPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = B9C3A1374DADDEAE813F69F05F5A2564 /* HWShoppingCartPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2DC44A09A6C9D6DC7D1BDA2DFCF99EE3 /* MJRefreshConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 42EF67A85226C8C14C983E81C71F392D /* MJRefreshConfig.m */; }; + 2DDA5F044BC698BC5D48A7CFDDBF71E3 /* LookinAttributeModification.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B35D70EDD8A3E56FE6F0E6934A400CC /* LookinAttributeModification.m */; }; + 2DDD48230ED9E8068C7E439D79B99A8E /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 3422D3CB84719A98D68CD9DE2857E694 /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2E86A7C77E43AEA4697979F1F848E68D /* LKS_RequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = B9D007BE64FBA88DB3F5D92E0EAEDEAD /* LKS_RequestHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EC1750C894F036194B90CFD26072B0C /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 761A654F557EA15B24079623AF9184F9 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EC7BA321016EC71EA595E4BAF0B7E8B /* JXCategoryDotCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 98D2F9331639FC6D12A4091DD5F47C96 /* JXCategoryDotCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EDA227454079ED3F6371BF34AFD4735 /* JXCategoryIndicatorCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3875C6FE72ED2368D3701E9901F883B7 /* JXCategoryIndicatorCellModel.m */; }; + 2EEB29D2C570F11620D4CF90D7DFD569 /* Pods-keyBoard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EFF1EFA2FF0D2F1AE44A9DDBB932425 /* UIScrollView+EmptyDataSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 797DE6794620B6AD238FF0B8B61A1B32 /* UIScrollView+EmptyDataSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2F6D9BEA582A2DBB70A6C3B2FC2DB91E /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = BBC2FF6B1D45486A6893E456C4B85E05 /* SDWebImageDownloaderResponseModifier.m */; }; + 3111CEA93C868CA68CBD351C934FEB80 /* LSTPopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2F1B06BC651834D7B3EA1FBC96E466 /* LSTPopView.m */; }; + 3127F22BF0A5465D472669272D586BDC /* HWPanModalIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C8BABB078FC5FF697A3609C777FC51FC /* HWPanModalIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3187FF0C251D1B78BE87F64F6F6E944A /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = BFEF7CB304E59179EBDA954FA636E74D /* SDWebImageTransition.m */; }; + 31DC2EC78AD1F8241AE6051EF9E73B0A /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C599636DAB63CB63CC65E368E1BAAFC /* SDWebImageDefine.m */; }; + 31FA8264AA5553AB85039530B1FB8C4B /* JXCategoryNumberCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 874DD2FA3B20B6BCBCBEE03BEEBE1281 /* JXCategoryNumberCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 320DE42AF3CFE11FF785FEB1A7E6547B /* SDImageFramePool.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E8C0DD47533304FD7479FB5A47A4E3B /* SDImageFramePool.m */; }; + 321F87DA34863DC5C977323BAEDB2B55 /* NSObject+MJCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FD309B3FADE968B4258080AC443EFCB /* NSObject+MJCoding.m */; }; + 325CA20B9271F3E008234E1518B79061 /* MJRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7626DD9951DC84318DF6E875CD7A8C20 /* MJRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 327BA3DDA513422E632D3DA4A8FC60EC /* MJRefresh-MJRefresh.Privacy in Resources */ = {isa = PBXBuildFile; fileRef = 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */; }; - 32ACEDCEBE0507A82D6323114A1C74F1 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 817B07C3E952A5A5F2082BE15C3C500E /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32F2B91621A2F8F9AD7C8E2B224D73F6 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 3663272D41C8B58200506DDA7E7A2903 /* SDWebImageDownloaderDecryptor.m */; }; - 32FF240AE9443A1D2CFE27F50B55F591 /* LKS_MultiplatformAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 73EFE9F07FF04A733446FD7A74A02718 /* LKS_MultiplatformAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 332F2099D726E75CEFAF1F734104A066 /* LookinWeakContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = AA356D7B80B205861FCCD6FECB42DDE3 /* LookinWeakContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3331A013D48A5063B483A51B7E9068ED /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E95EEB52B039FDCAE4992EC84BF70332 /* AFURLSessionManager.m */; }; - 3338AA0580424EFB0FE59C3A37702A47 /* LSTTimer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D6767143B7C5D00675B75D54B0AFEF /* LSTTimer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 33D3587AF629B2FA21554DA002D6ACB8 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C27FE20E006C874307EF5F2B30AA69E /* SDImageCachesManager.m */; }; - 34B28D4F0168194B6EFAC0520EB7A7F4 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EFEA57CFC8959BF5EF4B795BD808107 /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353C1D03325B8F3E65F985DA29245F18 /* UIViewController+LayoutHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F369D00927FCA59283AE71B174D2D1D /* UIViewController+LayoutHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35D42759A562C482EA5DF574F75CF3B8 /* NSArray+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 81A6154946F38EFB8836E3145513AAE9 /* NSArray+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3679603CE8336E00A0BFAA39E10A92D0 /* HWPanModalShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = 57AA794BD50692239409E574C7FD0846 /* HWPanModalShadow.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36B3F095DFFC8D2AF2C0A8C523173927 /* HWPanModalContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D51DADE6BB30185CA5DE0A026B674A /* HWPanModalContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36F4B09E7C71DCC5CEC6057814033C37 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C23E787A5997AF276176CBB988D241 /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32ACEDCEBE0507A82D6323114A1C74F1 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F21EDB4000AA52958FC207353BC36367 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32F2B91621A2F8F9AD7C8E2B224D73F6 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = DBE1F0821F32567F3E84359D65C8422C /* SDWebImageDownloaderDecryptor.m */; }; + 32FF240AE9443A1D2CFE27F50B55F591 /* LKS_MultiplatformAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 06BE908D1EBE4269ACB69B26DE9B834E /* LKS_MultiplatformAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 332F2099D726E75CEFAF1F734104A066 /* LookinWeakContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 886E6269011F3D0F924F30F32F08508F /* LookinWeakContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3331A013D48A5063B483A51B7E9068ED /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 55E89941A6B7A73D479A0770A9C96C14 /* AFURLSessionManager.m */; }; + 33D3587AF629B2FA21554DA002D6ACB8 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 25A5CCE05BC1D97AB685203E1D41C4B0 /* SDImageCachesManager.m */; }; + 34B28D4F0168194B6EFAC0520EB7A7F4 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = F55015AACD21AF6274741BBDAC6148E2 /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 353C1D03325B8F3E65F985DA29245F18 /* UIViewController+LayoutHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 23A344AF55814873B0105902E9FBBB2A /* UIViewController+LayoutHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 35D42759A562C482EA5DF574F75CF3B8 /* NSArray+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = B937D529B74DB9581A000F395FF3B6F7 /* NSArray+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3679603CE8336E00A0BFAA39E10A92D0 /* HWPanModalShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = 039AC3B9A6AA2BDAB5EB71E7A54C1EF5 /* HWPanModalShadow.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36B3F095DFFC8D2AF2C0A8C523173927 /* HWPanModalContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = A87C5BAF6B8038E9EE8A33551A798606 /* HWPanModalContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36F4B09E7C71DCC5CEC6057814033C37 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 8179AB093F869B4BCCBBF8427F69555B /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3777CD89D444CBBB48AE323B303F3FC7 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */; }; - 37B890ABDC7DD441E6AA662325D412E6 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 44DDF1AA5625A95CA1C76B7546758226 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3800EA1B83FDE869FB2E4B049F519962 /* UIViewController+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = D72EC9997A8CA1698A3020135CE8BC2E /* UIViewController+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 381E0DBE152CA0D9C66310CB77A20A83 /* HWPanModalInteractiveAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 31F540B1617ECFBBE3A0FB1043BFB861 /* HWPanModalInteractiveAnimator.m */; }; - 38938E604A7D708E6378A44063EF3512 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1FC58856D64F439A2DB39A5CBEAF01 /* UIImageView+WebCache.m */; }; - 392F62298E0D8C669229E132D791BBF5 /* UIImageView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 98AC0F8649D533FEA089C0D7C8018ABC /* UIImageView+LookinServer.m */; }; - 3A1AD84C0DC3C256418CC46739024E96 /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5A2383372F42B2452808A886E02C6B /* SDmetamacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3A2FCB914F6EADED828FF05F7E9132AE /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = FC070F9BCE8A8D0A21448F82A7DD5F5A /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B1C72DC480AB19BD55B6275750D62FE /* NSSet+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CD0546B82DCACC9EF9FE9B72325B901 /* NSSet+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B8EDFF69A68ABD3735E0C6931CA5C95 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 595622377DEA1856384D2D262C52C73F /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3BB69CB142D744367868F834912993CB /* UITextField+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 27339E9CA8A7C6DC7F3E8B828C3D0038 /* UITextField+LookinServer.m */; }; - 3BD85ED8999015326D93D8EEADCCF910 /* HWPanModalPresentationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D1699A762F8D719D2565E3B0B508554 /* HWPanModalPresentationDelegate.m */; }; - 3C7815EEC599DD7D42FDEF19B2FF1563 /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E20B7CDAEE04E340BBA081726D5AC /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C7EAECB8C573E714C818BA04EB33773 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 88C23FF116C3257A27A26A897D5AE6DB /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C8F2F868D0C361CAF43E53CDB8EB631 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = C84FAFE47B2E31104A515395A5239442 /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3CA9E838F014DC32CFCF6AD36F5D7E58 /* HWPanModalInteractiveAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 10A8507648AC9DE21CFA0929B1ED0404 /* HWPanModalInteractiveAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3D0BBFEC1921CE71BC240DC18D8BE540 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C8222012D0B30C2E5C40B4867A1AAF /* SDImageTransformer.m */; }; - 3E3D09700A62280A9EB8D65B97335ED8 /* LKS_CustomDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = C0E2F76DB6A01DBF448BF55D94414007 /* LKS_CustomDisplayItemsMaker.m */; }; - 3E982309E295BB31C065D62750D0F1FD /* UIView+LSTPV.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C39336AE39057C3014C954C694C278F /* UIView+LSTPV.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3FF7252DD60182221BB1E5A167C41A07 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = FA56E3002035BE556C5ED858D43F49DD /* UIProgressView+AFNetworking.m */; }; - 40AD5D0AB3ABF7F3A5A4A98BC5B84419 /* LookinAttributesSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B55BC4062AFBC21B6F27CA6801F7F45 /* LookinAttributesSection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 416DA8B2997381F954DBA6E6A53DA4A2 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = AE9EAD92339D5CAFE9DD672B7A3B6E7D /* NSData+ImageContentType.m */; }; - 41A4AAE7E6024E7AAB83DD22FB42D34D /* UIColor+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1998A1E21783C0F00F27637B63C88F21 /* UIColor+LookinServer.m */; }; - 425C9EA28FBEB7F7FC09A3F4A88C5955 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = 70D5B55A578973F4D162548B46979D49 /* SDWebImageError.m */; }; - 4334CCEA5B7EA16A4EF26702D287CB07 /* UIScrollView+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B6E38C872CB24F91AFE94F3DF5EFCC2 /* UIScrollView+Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 442F468E261A1106C291BF52BDBF9DB7 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 29AAA748545CCD9E566E6F15C52A44CB /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 447BBB1BCA8E0F2D23634888BED6DA81 /* LookinDashboardBlueprint.m in Sources */ = {isa = PBXBuildFile; fileRef = A28F16D63BCA40F7DC78734CFE3A235D /* LookinDashboardBlueprint.m */; }; - 44CD842019B1CEA681F820F37A30B7C4 /* SDImageFramePool.h in Headers */ = {isa = PBXBuildFile; fileRef = ABF08650352052DEA4797A89BFD856FF /* SDImageFramePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 4503182D5F8EF2F02609862026D2D455 /* HWVisualEffectView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D7D197A108D97B04C3BA390CD4499D8 /* HWVisualEffectView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 452C940762F65B125C216F73B369F583 /* MJRefreshStateTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = E5BBE1866B6FDB7D5307A6075BE5F347 /* MJRefreshStateTrailer.m */; }; + 37B890ABDC7DD441E6AA662325D412E6 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = ED6F94603AF0AF72D292CADE8ABCEEB3 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3800EA1B83FDE869FB2E4B049F519962 /* UIViewController+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3753072CB1EE987F4CDC7E86385B9A99 /* UIViewController+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 381E0DBE152CA0D9C66310CB77A20A83 /* HWPanModalInteractiveAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BE68C7303DE07C8DA01573CDDE9003F /* HWPanModalInteractiveAnimator.m */; }; + 38938E604A7D708E6378A44063EF3512 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A1600286757D192233397A2BF1A2371 /* UIImageView+WebCache.m */; }; + 392F62298E0D8C669229E132D791BBF5 /* UIImageView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C560A21071D707C98AE6CD75AED8BFD /* UIImageView+LookinServer.m */; }; + 3A1AD84C0DC3C256418CC46739024E96 /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A6A16B78780399804F5DD15816ADE2B /* SDmetamacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3A2FCB914F6EADED828FF05F7E9132AE /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 47F474CA83A8EC338136568BDBFF8343 /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B1C72DC480AB19BD55B6275750D62FE /* NSSet+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = D40E6AE30D19137ABA0A5D046329BCCD /* NSSet+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B62431BEF820E7FC779F344AB2A1D17 /* JXCategoryIndicatorLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1711B81346B8ED1944B5A8A478A4CF3F /* JXCategoryIndicatorLineView.m */; }; + 3B8EDFF69A68ABD3735E0C6931CA5C95 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B2D84B5B7090CE22D8AFB107E403CA13 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3BB69CB142D744367868F834912993CB /* UITextField+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 877837A5816B3B110C5B763CCBD0ECFD /* UITextField+LookinServer.m */; }; + 3BD85ED8999015326D93D8EEADCCF910 /* HWPanModalPresentationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6749EA453DC312E08B14CE8AFDB79F3C /* HWPanModalPresentationDelegate.m */; }; + 3BF23DD02B40D2A2E98FF9D042A5AF4E /* Pods-keyBoard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */; }; + 3C7815EEC599DD7D42FDEF19B2FF1563 /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCD0CB41F1E259546B6F8A9BFF05378 /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C7EAECB8C573E714C818BA04EB33773 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 35DC020855ECA02C5E2568299594E9C0 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C8F2F868D0C361CAF43E53CDB8EB631 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = E95C47EFA2CADA467B5A46831F0EA87A /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CA9E838F014DC32CFCF6AD36F5D7E58 /* HWPanModalInteractiveAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DAB18271BAF2DB3E49BCAF049FC4F01 /* HWPanModalInteractiveAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CE13969772F4180701A575FAB98E978 /* JXPagingView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E262E36BEDDEA0E7B4F4A870DA4314 /* JXPagingView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3D0BBFEC1921CE71BC240DC18D8BE540 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = AC558AE5F168E24878BD4ACF3EE1274A /* SDImageTransformer.m */; }; + 3E3D09700A62280A9EB8D65B97335ED8 /* LKS_CustomDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = E74AC99A06CC9DE9D81D54044B013F98 /* LKS_CustomDisplayItemsMaker.m */; }; + 3E982309E295BB31C065D62750D0F1FD /* UIView+LSTPV.h in Headers */ = {isa = PBXBuildFile; fileRef = A5262AA56B4C8511CBA390D4808E37F2 /* UIView+LSTPV.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3FF7252DD60182221BB1E5A167C41A07 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E152B4E044E172623798E791ACCC157E /* UIProgressView+AFNetworking.m */; }; + 40AD5D0AB3ABF7F3A5A4A98BC5B84419 /* LookinAttributesSection.h in Headers */ = {isa = PBXBuildFile; fileRef = B74F835090D47DFE066B4DAD231882AC /* LookinAttributesSection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 416DA8B2997381F954DBA6E6A53DA4A2 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 2132EF8C73164960BCAFD57CF9C7A53F /* NSData+ImageContentType.m */; }; + 41A4AAE7E6024E7AAB83DD22FB42D34D /* UIColor+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = C626E0F07BD081EBE5955DEA5669BF14 /* UIColor+LookinServer.m */; }; + 425C9EA28FBEB7F7FC09A3F4A88C5955 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = F8A31B7D92D4FBD879F8C39ED3139439 /* SDWebImageError.m */; }; + 4281CC31F4D4EAE690F999C778F17E5B /* JXCategoryViewAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = E0A4E94FB3CF9B468E72117C85C2E773 /* JXCategoryViewAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 431023914A5D2653ABAE7AB54880C9AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 4334CCEA5B7EA16A4EF26702D287CB07 /* UIScrollView+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 22613DFB1026F3E41B141E34C637D600 /* UIScrollView+Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4424E7517B86FE622BCD3D5040FC579C /* JXCategoryTitleCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 00B67A73E7EE0522188FAE4145324D19 /* JXCategoryTitleCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 442F468E261A1106C291BF52BDBF9DB7 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 195B648C25562B52954B1E7C1D8964C3 /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 447BBB1BCA8E0F2D23634888BED6DA81 /* LookinDashboardBlueprint.m in Sources */ = {isa = PBXBuildFile; fileRef = 2783C33881FB9ED3037D4D66B93FAD7E /* LookinDashboardBlueprint.m */; }; + 44CD842019B1CEA681F820F37A30B7C4 /* SDImageFramePool.h in Headers */ = {isa = PBXBuildFile; fileRef = F86F79271CDA27370B63C4004FB83EF7 /* SDImageFramePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4503182D5F8EF2F02609862026D2D455 /* HWVisualEffectView.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5B799F7FC71DC9649AD62AE8B34DC7 /* HWVisualEffectView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 452C940762F65B125C216F73B369F583 /* MJRefreshStateTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = B26771C31428D52F8DFB859AE1AC3503 /* MJRefreshStateTrailer.m */; }; 4571A0EA37DC84F39E3830D38A1531AB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - 45E1583D7EF53489B82C4CA2AD1AD0CF /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2288D70D4609F065E784F156F613AB62 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 464A0100327C8531D86BDC31737CCF75 /* LookinAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D832408A734647A9D2C62473FE11EFB /* LookinAppInfo.m */; }; - 4688743B7B845309486559EB7BD5D147 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E376CA03D27B523F7F180B9EC99BD7C /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 475B4F3E71C293065AAFDB1888696CF6 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = F47E18ADFFC71918AE70F42C18C32A89 /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 48916DE9521F627589300512ECC2D4A5 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = DEA09040DACD7A53B041773DD59096FC /* NSButton+WebCache.m */; }; - 4A15ABB502D625EBE3E63100664AB822 /* LookinCodingValueType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DCD76BA1FFEFDEEE2F9331ECD0796D4 /* LookinCodingValueType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 45E1583D7EF53489B82C4CA2AD1AD0CF /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 17D9582F158C09F75D84ECE893151E91 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 464A0100327C8531D86BDC31737CCF75 /* LookinAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = CB40236F7A3DB0EECDBA370753BEDDD4 /* LookinAppInfo.m */; }; + 4688743B7B845309486559EB7BD5D147 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = AB253C473EBD2DF633A230C7FAA304B7 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 475B4F3E71C293065AAFDB1888696CF6 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = C746AE302AD12A4D0F6E287CACA690C6 /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 48916DE9521F627589300512ECC2D4A5 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A970B89D7ECEFF994ACF22A5493E001 /* NSButton+WebCache.m */; }; + 48EB84614F04E6089393ADDFA4BA8603 /* LSTTimer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F5F8D57BABE5A9AD2D0BC75B55D1A52 /* LSTTimer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4A15ABB502D625EBE3E63100664AB822 /* LookinCodingValueType.h in Headers */ = {isa = PBXBuildFile; fileRef = F2698AC3972900E338490644A2E03A2A /* LookinCodingValueType.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4A2D7878579537881DD3859B3359F702 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */; }; - 4ACC15DF96D179E48E4276AE3C540C7C /* KeyValueObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 05E1785189AB18B6B47ECD584144AA0F /* KeyValueObserver.m */; }; - 4B2C2AE16AE3DDA7417AFCF7952588F1 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 84DD851B5FDE16625FA07D9C4D1622E4 /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 4D2C79AB2D24CFEC864F08D913CE7692 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A9184E6EEBE4764FF941193DF28C44D /* SDImageCodersManager.m */; }; - 4DA2C6099343CD55160ECB3EBDDFE1DF /* NSObject+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 64BE9723ECB5FEB2D176E2AB31482F57 /* NSObject+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DCA75BFE1558CE59DFC56607E49B3D2 /* MJRefreshConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 62C98AF2DC89D542692AC64CD9F01818 /* MJRefreshConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DD9F4BAA95C3527A660D3AAD055CF1E /* HWPanModalContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E5F47A6ED542F1D0EAA4DD94091B61C /* HWPanModalContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DE8A481697088E8BBAEB51042F14ABE /* LSTTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CC6285CEC9BC9D5CBF28149790EF660 /* LSTTimer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4E964FFE29CFF8613C0029C913F39A05 /* LKS_InbuiltAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = E3EF6841A6A45FD5C11031ED861CFF06 /* LKS_InbuiltAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4EC8DBADA7BB954276351A639EB4398D /* UIBlurEffect+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C55508E3B8FCF1A927848A4CFAA53D0 /* UIBlurEffect+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4ED05DB3E43FF6AE1FA22130B2B50F05 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = E6EDBB7EFC23401D50E3438EB3430A58 /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50096BAC0F3270FB111E76D32714E579 /* Image+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = CDEC5449CBECD6C324B9864AD284EC55 /* Image+Lookin.m */; }; - 506FC58999564A737C745F2590E9B4D5 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 981BA7AE91A568EC43916303978CE501 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5106193FDEA44A08AAAAB9B8A227CBE9 /* HWPanModalPanGestureDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DE26DBA97E2F7B5B4805533E6C020C30 /* HWPanModalPanGestureDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5109F520B2E1FF2F30F9DDF5E584E028 /* Pods-keyBoard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5111A0A0934551CD2B9DDB1A1CA79FA7 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = AB547BD41867170F26173D27CE44DCE6 /* SDAnimatedImageRep.m */; }; - 512B9661FC34235E0EEB3A6D3E319B88 /* MJPropertyType.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D9EC3F78C9EBFBAA2A4A0F3EE3D27AB /* MJPropertyType.m */; }; - 5163FC6D715F6881B1FA1AB13DCEF870 /* UICollectionViewLayout+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A350736EF0F4C89A3E43AA0BED8AC36 /* UICollectionViewLayout+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5174DD2019966DFDC21B8864453ED3DE /* NSObject+MJClass.m in Sources */ = {isa = PBXBuildFile; fileRef = E1732483C75B01353EF9D04684480EE4 /* NSObject+MJClass.m */; }; - 523235228A1C021C67F2E3776A922DC5 /* MJRefreshTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = F8A410A1A4222EF3876A4FA11492EF05 /* MJRefreshTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 526485EF6D2B62B24DB59122FB94BD42 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 343301F4ECFA1778F70E1EC266C1848F /* SDDeviceHelper.m */; }; - 5308E660E723C11E7691D311FD59C459 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 110C7A39306E93E5D29F1709FE16720F /* SDDisplayLink.m */; }; - 53433003112C4FE271EC985803862B61 /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 662D6F244CE3008639589EE4EA829B53 /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 53C1722650FCAB2637867D0DC31FC3CB /* Lookin_PTUSBHub.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F886C315967D7AADA95C37B717FE5A2 /* Lookin_PTUSBHub.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 541AD3B0F5EA216EE730ECC6E8B84C31 /* HWPanModalPresentationAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0004D14E99E5CD92EA09732F82694FF5 /* HWPanModalPresentationAnimator.m */; }; - 5490C03887ACF6C4EAC25ADFBB509CE5 /* NSSet+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EA132DBE319D046C6BEFA0C4AB4940 /* NSSet+Lookin.m */; }; - 54E268C32915CF908E7AA776909B45EB /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = E114D2723BCB64ADA9A307B95F5DE640 /* MJRefreshConst.m */; }; - 55F7C7F055A18044497F8C88CAE34118 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 315C5770DCC0584893C24972BAEDEB39 /* SDImageCachesManagerOperation.m */; }; - 561420A20DC0A84258A902E9EB69A15A /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A20F0D257E58B1A870FF109778CD4B25 /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 564714D075CF51356D3D8437846AA6EB /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = F68CF910ED994D45AAA3B5E5FABB6835 /* AFURLRequestSerialization.m */; }; - 56D8A7EAE4D72FF6C23421CAB6F21504 /* MJPropertyType.h in Headers */ = {isa = PBXBuildFile; fileRef = C02050360407C95F57A46E3425089760 /* MJPropertyType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56E800EB3B2BE8AE0BA45A30974D7920 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A89B114742BBA3282DA6CDF9871F36 /* Masonry-dummy.m */; }; - 56F1B543BC54204336CB5E50B60F719F /* Color+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = C246D6EBE3F2F29765C86C55F130AD3F /* Color+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5735091665AC18FAD028EB68786A85AE /* LKS_CustomAttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = D2ADA0495E5FE9068CEDD520D7AB4D72 /* LKS_CustomAttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 58F7CE37BB4CB3BE806B68A502E6E1A7 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = CC87F6E60998716F313AD85E3F2F0C78 /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 596180E0EC9F46D12BA840DC4AA62659 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F3DBAC2BF3E2D408BCB049042B8B067 /* UIImage+MemoryCacheCost.m */; }; - 597E390C0BBB75B8045B651C487C2034 /* SDImageAWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F3611B9193976C6AC5268E458B3F9F6 /* SDImageAWebPCoder.m */; }; - 5A6D3BE92C77ED70C397567996DFAEB9 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E7B3F97FDF9522DB3E4FADD3DB88700 /* AFHTTPSessionManager.m */; }; - 5A8BC91257FF6B36237BF09A7A6EADF6 /* LookinObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 683586601FF42469125B58BBB8DF2429 /* LookinObject.m */; }; - 5AF22814CD055B553AD9D78BE54B94E1 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = DA7F2EDBF237046CD345C29806E0A756 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5B08596E856E4CC2F34A8A2372F9F764 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = FD16DAAD0E6C1AF6207145BC463DF81D /* NSArray+MASAdditions.m */; }; - 5BB6B99986FD7111B3AEBE931C7F507B /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C53F73CEF747A7A78B5CACAF16E5FCE /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5BD5D9B8F61C124A62C75D9AC36A07BD /* MJRefreshTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 53CC6A09F682C54055F6035F0D6E29FA /* MJRefreshTrailer.m */; }; - 5C8279C226EB028B044C5A0F4AC5A91A /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F61547B42B4881FB5D37EF93F1C324C /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5D0DEC179A7B4143769C663082E2662A /* LKS_ExportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A12BDC5E6446CAD91BA1C47C211ED2E /* LKS_ExportManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DCBA14510E091D6A1CE499B08B794B5 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BE50AD720E95B8938AAE668F71561B7 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DFCBADAC7D0FAC82C84A6C8E7BF1DA6 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5909B734EE0396CAA42A403A6DCD4D27 /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E10328A83E05D0015D7459FAAEF121D /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 387AF8AF8500E50CC311582863B31CFF /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F45735DF355530CC955066D3C007E19 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A03E64C6033C8C1C7D8822CDE785EEB /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F5426608460A8B17C1AE5C2351BAA19 /* UIScrollView+EmptyDataSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AB2A681F27544128FA8BFDF04B2B4BB /* UIScrollView+EmptyDataSet.m */; }; - 5FDC4239F7B651092BF582D0F460BAD4 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = E0B73DB737A3D2CAAA90EA20B4BB23B3 /* UIView+MJExtension.m */; }; - 6002CB94684D7C786700D2A294146AEC /* Color+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 19D6F69255AF25D760BE89366830A6F7 /* Color+Lookin.m */; }; - 61461B0D9D7B81C3F8D24066D9A19DCE /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 81E56B3079089075E57FE56264F80F1E /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61507E402F1F7C58BF119995A0479A22 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B71D1DE227720C6548D26CB1380A595F /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 616A8338C42FB01748DF1BDDA944858D /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = AFC953B00F77A76AF38E0FA2C8AB5F03 /* UIView+WebCache.m */; }; - 61857C821395B868C65A8FFE4DA1B4E3 /* MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = B9D9760D282FEC09C3A5774993001829 /* MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61EAFBCDC83B2C603918B3C9D9A73A18 /* LookinConnectionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = DC490DD3FFABA4122C58404F7DFAD348 /* LookinConnectionAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 62FE895DF9D65A2955A275D909ECBE18 /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 17FD1B21DCC89D66865655294A85A817 /* SDAnimatedImageView.m */; }; - 6525ECE1CAFC1259F9E6E5FDDE6CF218 /* UIVisualEffectView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B0036686E5E0170AC065045503F785 /* UIVisualEffectView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4ACC15DF96D179E48E4276AE3C540C7C /* KeyValueObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = E1F236D1BF028AEAD75A9FB3C9DCAE0F /* KeyValueObserver.m */; }; + 4B2C2AE16AE3DDA7417AFCF7952588F1 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D3543E70B7F1B6F0CB25AB731CA0DFBE /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4C8C34A09D61A3881DFB1A544A2CA2A5 /* JXCategoryFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E96574DDD94EB958E64B0AD7C7B20F2 /* JXCategoryFactory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4D2C79AB2D24CFEC864F08D913CE7692 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D1EF86D80B6333688465CCC41BA33F7 /* SDImageCodersManager.m */; }; + 4DA2C6099343CD55160ECB3EBDDFE1DF /* NSObject+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FD83B41506E28893BC297C4BDAB1B46 /* NSObject+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4DCA75BFE1558CE59DFC56607E49B3D2 /* MJRefreshConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = E9598F4E504AE0DA98A0B2DC305F1C83 /* MJRefreshConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4DD9F4BAA95C3527A660D3AAD055CF1E /* HWPanModalContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CAA34C64434033ACBB7F68A74F4D15B /* HWPanModalContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4E0FBD829EB07B8D5D2A5F6115457BE7 /* LSTTimer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C181D8B9B1142624BE8BFFA787AA2854 /* LSTTimer-dummy.m */; }; + 4E964FFE29CFF8613C0029C913F39A05 /* LKS_InbuiltAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C2FE2279B0EA1E9F949E0AF58D09E3B /* LKS_InbuiltAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4EC8DBADA7BB954276351A639EB4398D /* UIBlurEffect+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC6F317480167EA6C97C3ED771D57CA /* UIBlurEffect+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4ECE7F80A917130DE4045E25D741EAF9 /* JXCategoryTitleCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3545C9AC3AD500CD4E48A3E2630C521B /* JXCategoryTitleCellModel.m */; }; + 4ED05DB3E43FF6AE1FA22130B2B50F05 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = 06EFD395C240E38E2ED0DCAF40CE73FC /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 50096BAC0F3270FB111E76D32714E579 /* Image+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = FB1E7E734FDF6F7CAC668B6BD6A2A014 /* Image+Lookin.m */; }; + 506FC58999564A737C745F2590E9B4D5 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F31829B35104CCEC70FD712B1D4D4E2 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5106193FDEA44A08AAAAB9B8A227CBE9 /* HWPanModalPanGestureDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 95BD516A8F354C5C9CD65BFD30C9BED7 /* HWPanModalPanGestureDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5111A0A0934551CD2B9DDB1A1CA79FA7 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = FBF4C669CA968A448B7E1DD3A141A41C /* SDAnimatedImageRep.m */; }; + 512B9661FC34235E0EEB3A6D3E319B88 /* MJPropertyType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4688EE09ADCEE19CD4BDF95833F7E81D /* MJPropertyType.m */; }; + 5163FC6D715F6881B1FA1AB13DCEF870 /* UICollectionViewLayout+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = F0FF9B39CB74F30B336CF7D4085E2AE0 /* UICollectionViewLayout+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5174DD2019966DFDC21B8864453ED3DE /* NSObject+MJClass.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BA563F965A1054AC53D0F3D5BD3AFE /* NSObject+MJClass.m */; }; + 523235228A1C021C67F2E3776A922DC5 /* MJRefreshTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A91961A508CA556983A4A3F57FB3133 /* MJRefreshTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 526485EF6D2B62B24DB59122FB94BD42 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF942497E18FEE75DD2CDC6779A790A /* SDDeviceHelper.m */; }; + 52E60EE26D065DB63D272298AC8867DF /* JXCategoryTitleVerticalZoomView.h in Headers */ = {isa = PBXBuildFile; fileRef = 059C3C014AA92686FDCE895211A108CE /* JXCategoryTitleVerticalZoomView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5308E660E723C11E7691D311FD59C459 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A0FA60F5E41A8B04C442FE582DA298 /* SDDisplayLink.m */; }; + 53433003112C4FE271EC985803862B61 /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = C205DB74EDBD3C80FB36923BD2255DBB /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 53C1722650FCAB2637867D0DC31FC3CB /* Lookin_PTUSBHub.h in Headers */ = {isa = PBXBuildFile; fileRef = 3416384E4A531494C7B12CDD1AEA74A1 /* Lookin_PTUSBHub.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 541AD3B0F5EA216EE730ECC6E8B84C31 /* HWPanModalPresentationAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 15D78A0355CAA0B846DBC1DAC7B101F4 /* HWPanModalPresentationAnimator.m */; }; + 546DE9D8142C6D8554E083C6FD65D0BE /* JXCategoryIndicatorTriangleView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3381742E54E03DCDB9DD644DF65C4689 /* JXCategoryIndicatorTriangleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5490C03887ACF6C4EAC25ADFBB509CE5 /* NSSet+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = C02B6DB0CED9923894E4B972F8B03882 /* NSSet+Lookin.m */; }; + 54E268C32915CF908E7AA776909B45EB /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 7032D81BB8B12F48732F1EBEA7A020D7 /* MJRefreshConst.m */; }; + 55910DBCDF99E39955BE01EAD8251081 /* JXCategoryImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC311E0F10AA1170D905B6C90AE765F /* JXCategoryImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 55F7C7F055A18044497F8C88CAE34118 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E6B846D03C97210EDD55850D04A8F27A /* SDImageCachesManagerOperation.m */; }; + 561420A20DC0A84258A902E9EB69A15A /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A96A60100BE610809D6E0C7741CF992C /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 564714D075CF51356D3D8437846AA6EB /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 32F3C5B0B7D11631504E27D25E8CB5A2 /* AFURLRequestSerialization.m */; }; + 56D8A7EAE4D72FF6C23421CAB6F21504 /* MJPropertyType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E2D9F4632DB7036D701CB57007800AB /* MJPropertyType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56E800EB3B2BE8AE0BA45A30974D7920 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 99302CD0854353E1FA9C8EE70F3FCF59 /* Masonry-dummy.m */; }; + 56F1B543BC54204336CB5E50B60F719F /* Color+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = EEB6F4442CB80A88D94B35721714C121 /* Color+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5735091665AC18FAD028EB68786A85AE /* LKS_CustomAttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B2ACD52F18B25CE1FB40A0F1DF81B4A /* LKS_CustomAttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 579DDC4FE78455D88E0350C3268D96C4 /* JXCategoryIndicatorComponentView.m in Sources */ = {isa = PBXBuildFile; fileRef = D4E6C9FAE7DD5348F64FBD66AA03DA5B /* JXCategoryIndicatorComponentView.m */; }; + 58F7CE37BB4CB3BE806B68A502E6E1A7 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 45880427FEDFE00B81EA46DB6F5AFD52 /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 596180E0EC9F46D12BA840DC4AA62659 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 5107F5A871AC7AEDAD8C78C1F1AB8E40 /* UIImage+MemoryCacheCost.m */; }; + 597E390C0BBB75B8045B651C487C2034 /* SDImageAWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E5DB75D5C223CDC5703FA115447A148 /* SDImageAWebPCoder.m */; }; + 5A6D3BE92C77ED70C397567996DFAEB9 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DA5F48CB9575D0E2C775D8D7C262C14 /* AFHTTPSessionManager.m */; }; + 5A8BC91257FF6B36237BF09A7A6EADF6 /* LookinObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 05B3B08A0927761DC2CBA02E9412CD21 /* LookinObject.m */; }; + 5AF22814CD055B553AD9D78BE54B94E1 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 7446E6EDA4118B08C0D538CAA41C47AA /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B08596E856E4CC2F34A8A2372F9F764 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D3CF8B366EB9A41FEDB94035F404215D /* NSArray+MASAdditions.m */; }; + 5BB6B99986FD7111B3AEBE931C7F507B /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 02E945EEF3757BDF2B47E65C51C4D6D6 /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BD5D9B8F61C124A62C75D9AC36A07BD /* MJRefreshTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 5128E7CF3F35BE25186575F63661EEF6 /* MJRefreshTrailer.m */; }; + 5C8279C226EB028B044C5A0F4AC5A91A /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = C0ECED1A3FCBB93D40B1BFFF5AE2F27D /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5CAB535753B28B463140F421E9B00136 /* JXCategoryIndicatorCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BF9910B7B2FF86AF620A45955A338072 /* JXCategoryIndicatorCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5D0DEC179A7B4143769C663082E2662A /* LKS_ExportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EB3C413B4ED21D886E50FCBC0761408E /* LKS_ExportManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DCBA14510E091D6A1CE499B08B794B5 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA0FACBE46F43AB7A99266BBBF20510 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DF02901155278BE109057E17C7C1D99 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 360A9029323DBF687A82BCD2C22F386C /* PrivacyInfo.xcprivacy */; }; + 5DFCBADAC7D0FAC82C84A6C8E7BF1DA6 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 13B6B935F583A1ED5234B7E3DF044521 /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5E10328A83E05D0015D7459FAAEF121D /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3653F678D1C9DBE34F6262A65263C642 /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5EE53074B8A35D48AB76CAF38C88A37A /* JXCategoryView.h in Headers */ = {isa = PBXBuildFile; fileRef = DACFBFCC588CFB73AE8A6DB153DEA42F /* JXCategoryView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5F45735DF355530CC955066D3C007E19 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = DEDFC34DB720F4FD92E634E486425845 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5F5426608460A8B17C1AE5C2351BAA19 /* UIScrollView+EmptyDataSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F77AB571A5252972C84B67134918B5F /* UIScrollView+EmptyDataSet.m */; }; + 5FDC4239F7B651092BF582D0F460BAD4 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 239F725CB21A7ABF0EDB35FC92732A5C /* UIView+MJExtension.m */; }; + 6002CB94684D7C786700D2A294146AEC /* Color+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = F2A8643D9113999359ADC6C79DA48111 /* Color+Lookin.m */; }; + 61461B0D9D7B81C3F8D24066D9A19DCE /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B0E298E792EE24705C7E8457669228 /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61507E402F1F7C58BF119995A0479A22 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A8DC30D2C209AB66D8E812915E6F319 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 616A8338C42FB01748DF1BDDA944858D /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = ECA422AB0F45E3F4B650188FEE476C8C /* UIView+WebCache.m */; }; + 61857C821395B868C65A8FFE4DA1B4E3 /* MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = E5B1C13BB84FC1E79BC9BB233B793A5A /* MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61EAFBCDC83B2C603918B3C9D9A73A18 /* LookinConnectionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = F3AD144DF03231D478D237DCFC615D36 /* LookinConnectionAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6204F3E4E75772BB6CAB13CD53D9D93E /* JXPagerSmoothView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F178706A5ED2B8C0CCCEA56CC4A04B6 /* JXPagerSmoothView.m */; }; + 620A0FFFDE5AEF215E28135566106BA4 /* JXCategoryBaseView.m in Sources */ = {isa = PBXBuildFile; fileRef = 72F67C5C9E4A93AFE6FF113487609183 /* JXCategoryBaseView.m */; }; + 62FE895DF9D65A2955A275D909ECBE18 /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 635235003B3FEDB8B457A8FFF46C69E3 /* SDAnimatedImageView.m */; }; + 6525ECE1CAFC1259F9E6E5FDDE6CF218 /* UIVisualEffectView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = D013F3B6606D04CFD12051F02350DB55 /* UIVisualEffectView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 659D38386A3E09422812283BF27D71D1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 67178A8153B1A2F1D0D544B8093E23C5 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CE909BA066F9B44E9C2F036FF3FD44FE /* SDAnimatedImageView+WebCache.m */; }; - 676775CB29378BB6CA3CA5992E9C6A99 /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9358338FB49CFCB7417D22C85E339488 /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 67FCC0F9B42B1C20A66E99A3D56BED18 /* LookinStaticAsyncUpdateTask.h in Headers */ = {isa = PBXBuildFile; fileRef = F522B03B0E818BE677108EC202F41472 /* LookinStaticAsyncUpdateTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 683D708C157C95ADB467BDD2230BD4E3 /* UITextField+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 529CC0A76A69631EEA57BEAB673D76B9 /* UITextField+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 68C3E98F8B9D6035962F29AE025DA891 /* UIImage+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FC0CD1FAD2820E17CD48DE8962BA /* UIImage+LookinServer.m */; }; - 69345CBCB31076EBF8A2C5885AF973AB /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 758F54E0A75ADEC48F8924BFE16AEB3B /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 694B8697854A776E32032999B2EF1FEA /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 610BD8934663142C5DDE2AF00042FD13 /* UIImage+Metadata.m */; }; - 6960FF2C4D61A09722930B33B1C7135D /* LKS_ObjectRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 20466880B35C5065EE68BED96801035F /* LKS_ObjectRegistry.m */; }; - 69A06A02F52EB26259FAD1DF6B121BE1 /* SDCallbackQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 20E25456C8490BA5725AE87E9508AF07 /* SDCallbackQueue.m */; }; - 69AB6A513D5F36D7360FEF4FDA1D60D0 /* UIView+WebCacheState.h in Headers */ = {isa = PBXBuildFile; fileRef = B354D25F9AAB5A1E64BA7AAED1BA9991 /* UIView+WebCacheState.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69E353C99C6EEA3C93CCF2E526460B9D /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C92B663B045144AB6926F9C7A3DA791 /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69F6E66A089C40FB1063DE15499BCFDE /* LKS_Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = FFB946957EE60C8096CD34FFD7880091 /* LKS_Helper.m */; }; - 6A19379E3B0370EDA447743C9B1A1379 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D938D1AE315B5A7E490702D4DBEED7 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6B0978C9398336656EE309E62060AEAB /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CE8561E7F90B3736EA348E5236FECB1C /* SDImageAssetManager.m */; }; - 6B5C3592B5E911E833D067D0BC785B1A /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F618581DFE1104C16FA02EB2B00F1B9 /* SDImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6BC2A615678C8BAE9F34ABA68BFDEF78 /* LKS_AttrModificationPatchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = FE4F3AC67FEAA51E07D9DCC83CAEB3D5 /* LKS_AttrModificationPatchHandler.m */; }; - 6C57809DCEA4B6C0CA79918A69FD75DE /* LKS_ConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 499DFA9F01A96B26620A744AC7C94DB7 /* LKS_ConnectionManager.m */; }; - 6C85CA8D99E50C137D056B6057DAC58A /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = A0FE1EF8C4E4226EA31F342E982E620B /* UIRefreshControl+AFNetworking.m */; }; - 6CA0B4A9E7B2957063163BC673F355CD /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 352F171C72D103D96370080978C50788 /* AFAutoPurgingImageCache.m */; }; - 6CE8701D161A4BC0860FAF3951762A34 /* LookinHierarchyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A370DF72E817BB512D9A327AC45F76B /* LookinHierarchyFile.m */; }; - 6D637D02F5EE50D21C8548061956C898 /* UIViewController+Presentation.h in Headers */ = {isa = PBXBuildFile; fileRef = A3F7C5007915361DF90A13BBA8CD3EFF /* UIViewController+Presentation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6DE6C7F0FA965828E4FCE687BF75FBBE /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 02B660DF025FBF070A8248624E25ED79 /* MJRefreshAutoNormalFooter.m */; }; - 6E4DE8085E69AD1DDB49B059DCE286DB /* HWBackgroundConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 11A5C3D2E3080F2A5EECFB7F1FC6C319 /* HWBackgroundConfig.m */; }; - 6E66305665DBCFBCF5B2480BF705D500 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 057F1DBD0EB25FF8CA833DC6F478BF32 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EFC0630CB2761A2B1FC47176CCD62D1 /* LookinCustomDisplayItemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C4451B7E17B800D4088E7182C1025D /* LookinCustomDisplayItemInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EFEEE3AE22E97DCEC4F5A3B88F56FC7 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F3AD0011FB2CA087E42B18DDAD25253 /* SDImageLoader.m */; }; - 6F3637EE643EABB1DE9212EA68649A64 /* UIColor+SDHexString.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F9D4F9A4CA404E7287B2F6CBFF382D1 /* UIColor+SDHexString.m */; }; - 7053A9EB6335BEAC9EFDF2D5320E6E2A /* UIView+HW_Frame.m in Sources */ = {isa = PBXBuildFile; fileRef = 109CFCE9774385E51695E82E530412B8 /* UIView+HW_Frame.m */; }; - 7074EA7FCC90B4967A437F5C43496828 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = AD1C2B98D240951DA7BD821093E6C395 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 711D32EF4A9901567A488291603BF906 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = F6E7A6844647C14F0728CBB9EC73AF19 /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 713D162A627185DA38847832AB5BDA44 /* LSTPopView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EFF087B37DC1EFC63580C904061AC41 /* LSTPopView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 71538A1D21015F459964BA625D5EE90A /* NSObject+MJClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D6996A5821977C26F6D8F02DE8CF8CD /* NSObject+MJClass.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 717F76926C7BCB5B10C3037AD9239084 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = F0F086732258C7153899AB5D8C678B02 /* SDImageIOCoder.m */; }; - 719245E09E34B28240B8144650B43701 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B647311E2487029EA920B923258697D2 /* PrivacyInfo.xcprivacy */; }; - 71BEB1D9532900291A5A24B1C038516F /* UIColor+SDHexString.h in Headers */ = {isa = PBXBuildFile; fileRef = D5D847654327E7F1E333D40CD9665067 /* UIColor+SDHexString.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 71F2B8CBB99087F348C472230200586F /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FA72F287E0DE573DD735BAE9AD7E816 /* SDGraphicsImageRenderer.m */; }; + 6630C0B541E50903F9AD81FD847CFE7A /* JXCategoryIndicatorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = 74444E41B3920B9EB4DA66DCD2975612 /* JXCategoryIndicatorBackgroundView.m */; }; + 67178A8153B1A2F1D0D544B8093E23C5 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D547696F5943987BC61D389F16B201E8 /* SDAnimatedImageView+WebCache.m */; }; + 676775CB29378BB6CA3CA5992E9C6A99 /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 06077AACB035D8452C9F730B2E1F00DF /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 67FCC0F9B42B1C20A66E99A3D56BED18 /* LookinStaticAsyncUpdateTask.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A769F7014A1F30EE6690E054898162 /* LookinStaticAsyncUpdateTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 683D708C157C95ADB467BDD2230BD4E3 /* UITextField+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 94807C278EC259800EBCD3A346749877 /* UITextField+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 68C3E98F8B9D6035962F29AE025DA891 /* UIImage+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E075739451FCFAA914670EB353642C16 /* UIImage+LookinServer.m */; }; + 69345CBCB31076EBF8A2C5885AF973AB /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C0E4900E01624D5262A1ED1DF2F6D35 /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694B8697854A776E32032999B2EF1FEA /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5C2096D95608EEB566217452868E46 /* UIImage+Metadata.m */; }; + 6960FF2C4D61A09722930B33B1C7135D /* LKS_ObjectRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 8127266FF8D9AAE89CDF3511D05BB245 /* LKS_ObjectRegistry.m */; }; + 69A06A02F52EB26259FAD1DF6B121BE1 /* SDCallbackQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E8762E22AB8C87B76E6D94D44665136 /* SDCallbackQueue.m */; }; + 69AB6A513D5F36D7360FEF4FDA1D60D0 /* UIView+WebCacheState.h in Headers */ = {isa = PBXBuildFile; fileRef = B072B2B3BF7FE061CC694AE00BCF5858 /* UIView+WebCacheState.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69E353C99C6EEA3C93CCF2E526460B9D /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 241FDB4FE9E3CE45C4854F0FEB6F8BAF /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69F6E66A089C40FB1063DE15499BCFDE /* LKS_Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 38A98EA0745C9E839DCFD56B22BF1256 /* LKS_Helper.m */; }; + 6A19379E3B0370EDA447743C9B1A1379 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 806C18993732E8D418AEA50EC6162EDC /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B0978C9398336656EE309E62060AEAB /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F94B604866DB37515D32D88635EFEE2 /* SDImageAssetManager.m */; }; + 6B5C3592B5E911E833D067D0BC785B1A /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C3B1F50C3A3E82B67AE98F2BAAD5C3C /* SDImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B9D333C18DDBF4E7CC889F7FDE05EEA /* JXCategoryDotView.h in Headers */ = {isa = PBXBuildFile; fileRef = 50BCF4AA1A75105CC04AA446B0DB9B40 /* JXCategoryDotView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6BC2A615678C8BAE9F34ABA68BFDEF78 /* LKS_AttrModificationPatchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 908A8A591A12931E59C177277E1D126D /* LKS_AttrModificationPatchHandler.m */; }; + 6BE86A0FFB0D69C6098CC75E1FB4E8B5 /* JXCategoryIndicatorCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B3FF5D113848A5A9AC244C579FF1441 /* JXCategoryIndicatorCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6BF5DB46D42D8B9D536C870EC77BF4A3 /* JXCategoryIndicatorBallView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A60D0CF9AE4E6671E2A6BBECEE57E4D /* JXCategoryIndicatorBallView.m */; }; + 6C57809DCEA4B6C0CA79918A69FD75DE /* LKS_ConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F1C50876E480E256FAA99FC38F2BC478 /* LKS_ConnectionManager.m */; }; + 6C76DB1B99B98C951F687DE80FE6F463 /* JXPagerListRefreshView.m in Sources */ = {isa = PBXBuildFile; fileRef = 603287955CE071E6EBDC96A98AB97750 /* JXPagerListRefreshView.m */; }; + 6C85CA8D99E50C137D056B6057DAC58A /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = BEC06B30EADD5F0931B350F94CD4D15C /* UIRefreshControl+AFNetworking.m */; }; + 6CA0B4A9E7B2957063163BC673F355CD /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A984C0F36AC5CCB478D87C1F7E4019D /* AFAutoPurgingImageCache.m */; }; + 6CE8701D161A4BC0860FAF3951762A34 /* LookinHierarchyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 16E6E00D729B1498CE18200F50778930 /* LookinHierarchyFile.m */; }; + 6D637D02F5EE50D21C8548061956C898 /* UIViewController+Presentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 201E2681B892F05C3D7CAFE9E9927D15 /* UIViewController+Presentation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6DE6C7F0FA965828E4FCE687BF75FBBE /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D2CC2D1F9AB2D4CFC68B6327C2793C5 /* MJRefreshAutoNormalFooter.m */; }; + 6E4DE8085E69AD1DDB49B059DCE286DB /* HWBackgroundConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = ED71DE4537C6ECADC81696A80C943E64 /* HWBackgroundConfig.m */; }; + 6E66305665DBCFBCF5B2480BF705D500 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 28EBA38DF7DE3C55A1DCF1C9536E3712 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6EFC0630CB2761A2B1FC47176CCD62D1 /* LookinCustomDisplayItemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CF0E98CA3E42AAC3B854E232BB1AF7FB /* LookinCustomDisplayItemInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6EFEEE3AE22E97DCEC4F5A3B88F56FC7 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = FA395F2DBB98D70F218443EA65E0D442 /* SDImageLoader.m */; }; + 6F3637EE643EABB1DE9212EA68649A64 /* UIColor+SDHexString.m in Sources */ = {isa = PBXBuildFile; fileRef = E29E39BBB558CC51A6DB91379351B72E /* UIColor+SDHexString.m */; }; + 6F3A575F2B9E1CEB696248B9CB96F357 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = C1227D6957584FA14F5EFE311854C54A /* PrivacyInfo.xcprivacy */; }; + 6F75FDB9BE37C9A8473F97B1696B5D09 /* JXCategoryListContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = E25EECD78C776DB2FDB519D3AA7CB0BD /* JXCategoryListContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7053A9EB6335BEAC9EFDF2D5320E6E2A /* UIView+HW_Frame.m in Sources */ = {isa = PBXBuildFile; fileRef = B444EEABD213A46C07AC5F1B8D73FBF1 /* UIView+HW_Frame.m */; }; + 7074EA7FCC90B4967A437F5C43496828 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C74D4E7CA539C956587A3615702D24 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 70D30BC7134E3C8006BF0B6A4B438057 /* JXCategoryTitleImageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 639A45B880AEBFE1C16D4A9F3AA3D49C /* JXCategoryTitleImageCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 711D32EF4A9901567A488291603BF906 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BB4D65769822C57911F4A84B9F8FADFA /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 713D162A627185DA38847832AB5BDA44 /* LSTPopView.h in Headers */ = {isa = PBXBuildFile; fileRef = BF40FB09CDD92326BB3177C14DF172AD /* LSTPopView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 71538A1D21015F459964BA625D5EE90A /* NSObject+MJClass.h in Headers */ = {isa = PBXBuildFile; fileRef = F7CD4CF41A222A66B3E435AB32DF697D /* NSObject+MJClass.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 717F76926C7BCB5B10C3037AD9239084 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D2F471FC57FF6DD1F698134B35D27C95 /* SDImageIOCoder.m */; }; + 71BEB1D9532900291A5A24B1C038516F /* UIColor+SDHexString.h in Headers */ = {isa = PBXBuildFile; fileRef = 368AF39857A6659131D7CD15698E6867 /* UIColor+SDHexString.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 71F2B8CBB99087F348C472230200586F /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = FC52B8F222678A49BF1BA307CD9A7777 /* SDGraphicsImageRenderer.m */; }; + 72157F8282836C3F6D65008E2F193655 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; 723D1925C39764631641D0DBFDF6833B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 724991CA89C46BAFBC08264D94D86484 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = B686FCB243BCB66C7BB1F42E6A4B3417 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7276688DEA6FB95D4DEB7F3D019C3958 /* HWPageSheetPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = FF47B51E8368756DB1E42F174494224F /* HWPageSheetPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 728107C8D8479AADE986F4EC23233DC3 /* UIScrollView+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 66C0C4029B17B8E45FF492CEEBD834E3 /* UIScrollView+Helper.m */; }; - 73B19D03C7B7DF1C944544165F742D82 /* HWPanModalContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5030EF25D193EB41CCA5DF24FE48C1DF /* HWPanModalContainerView.m */; }; - 74ABF19BACB99F862DB62AA14508AFA0 /* LookinAttributesGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = C5830BBF390FC8D9CCA3C6BDBE65DD04 /* LookinAttributesGroup.m */; }; - 74C474676C69A80BEC29B0F55FDF4D19 /* UIView+WebCacheState.m in Sources */ = {isa = PBXBuildFile; fileRef = EF5BED7A35D904E495E540434D07B398 /* UIView+WebCacheState.m */; }; - 74E069F8C9E22C0E37F261A5AB03A613 /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = F27AC2454398D7EA8C514D5B2F6469EF /* SDWebImageDownloaderConfig.m */; }; - 752822FE3F5092322D18FEC4533B79A9 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 5703D16A54AB62E92D3E21CC6E5EA55B /* SDWebImageDownloader.m */; }; - 75771A97B77FA30A0175A81B480F80EF /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D8DA2BACDEA7D78265D10D62F7A3BF7 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76019F9FDD44B8F79261AD55C8728164 /* UIView+HW_Frame.h in Headers */ = {isa = PBXBuildFile; fileRef = C387114CB39CEE512E07F38E4439D4D8 /* UIView+HW_Frame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76C8C631DF9AC2F667369EEA0CE46522 /* HWDimmedView.h in Headers */ = {isa = PBXBuildFile; fileRef = E164F75EDECDE7B82945FA657EA41708 /* HWDimmedView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 772CF8E9CD02ECA4275B6173E2110E80 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2019C0149E4FA95B56F04C424C11298A /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 724991CA89C46BAFBC08264D94D86484 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = DC285A6C8053D7E2AE423BE51B24E8AE /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7276688DEA6FB95D4DEB7F3D019C3958 /* HWPageSheetPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = DD3CC2F2CD0FD607BD99AA89E970269A /* HWPageSheetPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 728107C8D8479AADE986F4EC23233DC3 /* UIScrollView+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = CCA4AAE27B9CAF06CC2B0A3C0A3F0594 /* UIScrollView+Helper.m */; }; + 73B19D03C7B7DF1C944544165F742D82 /* HWPanModalContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BB86632EEB3EB44D0413B3A6F7F6875 /* HWPanModalContainerView.m */; }; + 74ABF19BACB99F862DB62AA14508AFA0 /* LookinAttributesGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E02457FB07FECD161E03C2A1A8B72B3 /* LookinAttributesGroup.m */; }; + 74C474676C69A80BEC29B0F55FDF4D19 /* UIView+WebCacheState.m in Sources */ = {isa = PBXBuildFile; fileRef = FF6C98975F33C466CDCC506B95080046 /* UIView+WebCacheState.m */; }; + 74E069F8C9E22C0E37F261A5AB03A613 /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 47655EC4466A20F4BEC0C76B8F4C5440 /* SDWebImageDownloaderConfig.m */; }; + 752822FE3F5092322D18FEC4533B79A9 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FED06425BD958CD54FC4A96C6FF1992 /* SDWebImageDownloader.m */; }; + 75771A97B77FA30A0175A81B480F80EF /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = D843F393C308E0D3BCB88A0B04FDB291 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 76019F9FDD44B8F79261AD55C8728164 /* UIView+HW_Frame.h in Headers */ = {isa = PBXBuildFile; fileRef = B63B552A0A52E65141ED8027A3FCCB0D /* UIView+HW_Frame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 76C8C631DF9AC2F667369EEA0CE46522 /* HWDimmedView.h in Headers */ = {isa = PBXBuildFile; fileRef = 017032FDD415E1762246EBCDD2228351 /* HWDimmedView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 772CF8E9CD02ECA4275B6173E2110E80 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D93DBFF5810549335063D430FB33721 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 780EDF2615923E89C179EB5A60D2DA41 /* JXCategoryCollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6999AA4E4990D39E732B0FABF0CBB3CA /* JXCategoryCollectionView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7873F2F89CD0A435FAB776BC27BFB56A /* MJExtension-MJExtension in Resources */ = {isa = PBXBuildFile; fileRef = 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */; }; - 78A3C3994AFFC6A2D4970AEB6D797CE5 /* LKS_HierarchyDetailsHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = D3831111080859754E7A75FF007ED40F /* LKS_HierarchyDetailsHandler.m */; }; - 7902D28FC9EF5AFEB452F508C7F266B1 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CBF9C8DF911E4E9B2C6A4628B5BC93B /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 79534562F85AA71041043B395DE14AD0 /* HWPanModalContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = DD391D4FA7F38A97455407F9DA5DA8F0 /* HWPanModalContentView.m */; }; - 7989A6E79BFA78440C39F568D972305C /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 710E437843F202473C82F6B19F6E51D8 /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7A4EB9ED5D4E03170FFE61FCB299687B /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = C82B001CD34AC553F11A55D1E576C902 /* SDAnimatedImagePlayer.m */; }; - 7C45DBA62EE045C4922404182F6393B8 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A980D9B3DB04133A466725A1C6C22F8 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C53FB6BBB0CBAA879F1603B0FEDB80B /* LookinAttributesSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 0531DC0648DD160A9576D09368C28017 /* LookinAttributesSection.m */; }; - 7C5505A2D3F2A697A5F324787061F4B7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D2A884E58C9EFE4F57508CA7855F449 /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C8782A3078662BC2EF639A9608A2C82 /* LKS_InbuiltAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E75619300BC832136529DA87152075 /* LKS_InbuiltAttrModificationHandler.m */; }; - 7D736CE5AD0A987D2A7D2FD72E31BF41 /* CALayer+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = B68B9359B3F4863CD16BC4AF1031EDD1 /* CALayer+LookinServer.m */; }; - 7E4F0978B25350B2B28678A0BE7B3785 /* LKS_HierarchyDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 310204C87FE20FAAF183EEE0D555B729 /* LKS_HierarchyDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E8A564A958AF81E5F63F34B8E550E58 /* LookinAttributeModification.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C8B71EAA1C160D9B20E934869F7E16 /* LookinAttributeModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F10C0D094C74F2FA4CD38C7FD77B0A8 /* WKWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E8284A1808A9A014FA6F2F4E23F36835 /* WKWebView+AFNetworking.m */; }; - 7F886FC2763F0BF1625A24EE4F94C04D /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 01CCBFAC5118E8E6A44DA067EF8F2523 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7FA48BF8B9F73775654E75CEB5363FF4 /* UIViewController+PanModalPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 995AA67533265367D116C78944065262 /* UIViewController+PanModalPresenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7FA8C78DB021A7731D30D80C102DE042 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C694B3CF0214D5165615510B34C3812 /* NSObject+MJKeyValue.m */; }; - 7FF8A56511E71D6FEC966BF9FEE135B5 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A0368DACE23383F23784ADE51EC66773 /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80EBFDD01E84CE4E8AE5BAE9CB3C7C1D /* HWPanModalAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AF90BBEF3A681BE8314F80257F1182C /* HWPanModalAnimator.m */; }; - 810C8D7902163BBA0185A4A112B2DFD6 /* LKS_TraceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A251837ED47D22FF5ACBFA97F91D4A /* LKS_TraceManager.m */; }; - 813BE4C96A6D39C13EC50C6CD164F0AF /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = D7117B22CB4967C93BC27DD5B1BA9865 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 81A5635CEA2AD9623E30CAE9AFC3BF65 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 77EC014BA0072D21D1B86EE5C78C59EA /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 821FF6B43F7ADAB6B60459D2966B33CB /* CALayer+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = A701AEED09FE2183269AA89DFA8E4B7A /* CALayer+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 83530BF68848CD2C4A79A1FD69B304A5 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 37B5AAFF8675170D1D643B53FECA47E3 /* SDImageGIFCoder.m */; }; + 78A3C3994AFFC6A2D4970AEB6D797CE5 /* LKS_HierarchyDetailsHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6736D1FBB305C05AEAB982F817CD80C1 /* LKS_HierarchyDetailsHandler.m */; }; + 7902D28FC9EF5AFEB452F508C7F266B1 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = DEDB698B7BC2AF63B53722CF1D2D8E57 /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 79534562F85AA71041043B395DE14AD0 /* HWPanModalContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 77BA4318333FADE07B128DB446EA0F64 /* HWPanModalContentView.m */; }; + 79701CF51014A7C02D810F9DAEFE6D79 /* JXCategoryTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 057CD48F09C7A5468D77A9691A639803 /* JXCategoryTitleCell.m */; }; + 7989A6E79BFA78440C39F568D972305C /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 1325B9E2F97C77F3E9191898C4045E7E /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7A4EB9ED5D4E03170FFE61FCB299687B /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8532F3DD3C373C14A106D14F67A3C301 /* SDAnimatedImagePlayer.m */; }; + 7C45DBA62EE045C4922404182F6393B8 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = 109DC293F90D678E22D453F41A197049 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C53FB6BBB0CBAA879F1603B0FEDB80B /* LookinAttributesSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 97428E2E54CAC989DD7A12908613EE16 /* LookinAttributesSection.m */; }; + 7C5505A2D3F2A697A5F324787061F4B7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C2B7AF68C3BEF4AD97A93A90F9EFF44 /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C8782A3078662BC2EF639A9608A2C82 /* LKS_InbuiltAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = DC0451732A9C9A896EEC15BEC88B3151 /* LKS_InbuiltAttrModificationHandler.m */; }; + 7D1E98BE9558F6E5E29B0E81EC526A90 /* JXCategoryImageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E2875C79F8461486A975B000C1ABDE3 /* JXCategoryImageCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7D736CE5AD0A987D2A7D2FD72E31BF41 /* CALayer+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E1921A1332A20D950700741950E97126 /* CALayer+LookinServer.m */; }; + 7E4F0978B25350B2B28678A0BE7B3785 /* LKS_HierarchyDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = A9B0E721EBB3914236D06250E333F1E9 /* LKS_HierarchyDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E8A564A958AF81E5F63F34B8E550E58 /* LookinAttributeModification.h in Headers */ = {isa = PBXBuildFile; fileRef = C9F0D4D92726FF95FE428AA975E93DE2 /* LookinAttributeModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7F10C0D094C74F2FA4CD38C7FD77B0A8 /* WKWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D675E9EED90BA5941D43EB2C520A01B8 /* WKWebView+AFNetworking.m */; }; + 7F886FC2763F0BF1625A24EE4F94C04D /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D000260D6BB658E0BB519087E88F883 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7FA48BF8B9F73775654E75CEB5363FF4 /* UIViewController+PanModalPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = B46DF40E1300BE3FC009F0D7D5CF5ED0 /* UIViewController+PanModalPresenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7FA8C78DB021A7731D30D80C102DE042 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CE2A9B22B9FC87A02A230599E72D4F1 /* NSObject+MJKeyValue.m */; }; + 7FF8A56511E71D6FEC966BF9FEE135B5 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7965DB1FD06E64A9C5B34CB6D9909B3A /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80EBFDD01E84CE4E8AE5BAE9CB3C7C1D /* HWPanModalAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D7B291E3BCDB41106F548FA3B84901 /* HWPanModalAnimator.m */; }; + 810C8D7902163BBA0185A4A112B2DFD6 /* LKS_TraceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 36457C61634F1414F6DDF4C701ABF567 /* LKS_TraceManager.m */; }; + 8128D2BD3AC890F75E7AD243AA104C13 /* JXCategoryIndicatorParamsModel.m in Sources */ = {isa = PBXBuildFile; fileRef = AAFEF3383472BCA83D71A7DAAC5522CC /* JXCategoryIndicatorParamsModel.m */; }; + 813BE4C96A6D39C13EC50C6CD164F0AF /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 979A3BAC302F65855776332D6027B80C /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 81A5635CEA2AD9623E30CAE9AFC3BF65 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 10B904BAC9CC3925EE6B4E2130826A6F /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 821FF6B43F7ADAB6B60459D2966B33CB /* CALayer+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 732327FB0ADC252437B580203795D95F /* CALayer+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 83530BF68848CD2C4A79A1FD69B304A5 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE77C4D90418C342647C55D75A5C1AE8 /* SDImageGIFCoder.m */; }; 83A4F2816C1B3F072E1A26A34C3BC4AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 84065EC0D4446E7448D1BCFB4040230E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; 8414CFEEB64ACA817EB88D2FEADDA3B3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 854807558DCB972EDDFC1D00032BA6E4 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B2F034522C4ACEB56FB7ECF5D3CDFDB /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 85AB23275E9D19394969235E5DC2300E /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B6DBCFC84C1E1F5D3AF983520203544 /* MJRefreshHeader.m */; }; - 85BB8B4B5C29C5EEC52282F33A4CAF23 /* LookinCustomAttrModification.m in Sources */ = {isa = PBXBuildFile; fileRef = D9F0FAF97F68F13F21EE3D8E18046926 /* LookinCustomAttrModification.m */; }; - 85C0B4EE334B9972299E62DE61A4BB56 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C895614137416E86433C8E5EAF1D3CD /* SDImageLoadersManager.m */; }; - 860CB3A5D2E13B946CD2EFB7F749C4CF /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = E382492BA0D4E5C9BEF289F10F029CAA /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 864972FB0DF4B464B1B505AA5F788E91 /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 56951EB060616356F951F35CBD9A6E42 /* SDInternalMacros.m */; }; - 88473AE7C22F952DACB39FA0758D1624 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 584341F234CCB4128A1A3854A3371179 /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8872BEB0954C0254A792469F4DBC9891 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8BD469A978049C96BA8554A1F6D2D6 /* MJRefreshAutoStateFooter.m */; }; - 88A23DF6F5638AC66C28C4102824E8B5 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BC9B980A57804E48A923737AE36ACB0 /* NSImage+Compatibility.m */; }; - 89B88FAD396608AAA9F935E471BB3CB9 /* LKS_HierarchyDetailsHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = C7B7F069BA04D7981F13F5FA41B3BAB5 /* LKS_HierarchyDetailsHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 89EAB8D0452D0E2114ED971B10D98CC3 /* LKS_HierarchyDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = B772F3922ED9C416DBFEA6651FBB3930 /* LKS_HierarchyDisplayItemsMaker.m */; }; - 8A256CA266FB314BBD4DB2287DAEF247 /* LookinAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 25283803DB6704A7DFB24BD626A74C6E /* LookinAttribute.m */; }; - 8AF38EDB1E9BF0D334AEB23C488870B8 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 107D93AEC1E186A8F21341BFB523B22C /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B9B9EACA282C583FCF9A3B8E49DD830 /* LSTTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F067A700BA9565969A60D7617155FBC /* LSTTimer.m */; }; - 8C6C7E25C5A24C936F81823978190E96 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5973F7F7FB04C5938E91F05D46F22B54 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 854807558DCB972EDDFC1D00032BA6E4 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = E138C277A1DD60E5BB20AB4EC7CEBDB2 /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 85AB23275E9D19394969235E5DC2300E /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A2B6D97C6E9B5572232985B40BDA6C4 /* MJRefreshHeader.m */; }; + 85BB8B4B5C29C5EEC52282F33A4CAF23 /* LookinCustomAttrModification.m in Sources */ = {isa = PBXBuildFile; fileRef = F6CC661C43717D8BBB4405FD037BDC03 /* LookinCustomAttrModification.m */; }; + 85C0B4EE334B9972299E62DE61A4BB56 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F518DFA534AD602991065542FADB29 /* SDImageLoadersManager.m */; }; + 85ED10431A6C01970A3DAD8A8C9BF25F /* JXPagerView.h in Headers */ = {isa = PBXBuildFile; fileRef = D3F906D47799FB7ED8D4AA1C036BF3BC /* JXPagerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 860CB3A5D2E13B946CD2EFB7F749C4CF /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 81D4FD0C7D7C987D10815371E729DAC0 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 864972FB0DF4B464B1B505AA5F788E91 /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 123714F0F2335CBE901933785D4D26FB /* SDInternalMacros.m */; }; + 874CE8F3650D220092077846A46598E6 /* JXCategoryTitleImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FBDD10C8770914A56998AB2021E385B /* JXCategoryTitleImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88197D535BEBB0F4B71F106AE300631D /* JXCategoryBaseView.h in Headers */ = {isa = PBXBuildFile; fileRef = 173BFB44F7DA63CD3AF5A497970B8203 /* JXCategoryBaseView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88473AE7C22F952DACB39FA0758D1624 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 82BDCD67CE12306B5AF6A9E3DB88E0DA /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8872BEB0954C0254A792469F4DBC9891 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 401F0F0AAEEDDA40C2D25DB817C9B5C6 /* MJRefreshAutoStateFooter.m */; }; + 88889F5DA04EB4FA08125742B5E522DA /* JXCategoryTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = E42238B57F88C70438DE479E184E4352 /* JXCategoryTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88A23DF6F5638AC66C28C4102824E8B5 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 102C92CE02746A6588B44F852322AB39 /* NSImage+Compatibility.m */; }; + 89B88FAD396608AAA9F935E471BB3CB9 /* LKS_HierarchyDetailsHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 21696AB985A15DE2C63BD9A8CD978F59 /* LKS_HierarchyDetailsHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 89EAB8D0452D0E2114ED971B10D98CC3 /* LKS_HierarchyDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D3112C49688EF3F713F0D64A22E6E66 /* LKS_HierarchyDisplayItemsMaker.m */; }; + 8A256CA266FB314BBD4DB2287DAEF247 /* LookinAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDA744A029AF23E45515CE37C056256 /* LookinAttribute.m */; }; + 8AF38EDB1E9BF0D334AEB23C488870B8 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4561971E2CF7A1F1B00AC6091B3448DE /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8B47B7F220A2B9E121EFF5A28B477972 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 8B990235A0006E1F9C1E6F68AD81F77C /* JXCategoryView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CBA389E7DB380F4012EFBD733C81D43A /* JXCategoryView-dummy.m */; }; + 8C6C7E25C5A24C936F81823978190E96 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = D48043130F64D218A676B16D2CDA0ED8 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8D2CBEBF5F1DA6766A833CCD0BF02B5B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */; }; - 8D8AD606ECD8E1F247965CD43956D412 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8786CBA6B78647E486B3CA129F2DAD /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8D8AD606ECD8E1F247965CD43956D412 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = B5C750768FB8EE26E8F613C1D910045B /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8F30C8026F48C60D5B2CAE9CFC166004 /* Pods-CustomKeyboard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB13D51E717D347023EEB57263E3072 /* Pods-CustomKeyboard-dummy.m */; }; - 8FF7B6477BFA6E6ABA168E1417291D5F /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = F738F2BE3FA2AD49A9764CC72FDBAFB2 /* MASCompositeConstraint.m */; }; - 906DCE66CD5BD236081D468616199BB7 /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BB70CC7870B5212EFAD74AF8199F17 /* SDWebImageOptionsProcessor.m */; }; - 91AAF555B286FBF53E4F98D092B406BD /* SDWebImageTransitionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1458CC53A93F0D10D4564ECD3E1C2D28 /* SDWebImageTransitionInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 91E8B94F8E02ABF5197DF5AE7D0B3934 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A34081EC91EFEC16FB92BEE1A470458E /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 928371B066E1211CE87089668D5BCB4C /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D9FB07B277FA3212774D9D7EF2156759 /* SDDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 928A1ED0692DF0229F66A87135F93F2A /* LKS_CustomAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 30A4A3709BA82F970D60FE150EDB33D1 /* LKS_CustomAttrModificationHandler.m */; }; - 9345137ED10358B60E37D05FB6165759 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 31BB750A026F77ECDF9EFB2711DEC741 /* SDFileAttributeHelper.m */; }; - 9358FC6C6DA728AEE250D8E7DD236946 /* MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = A14004EB25D5BC99B439F5543C20E8CF /* MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 93E8C78EAE0B7613201813966B8E04E2 /* Image+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = E1CED825638D1B3169A0C8EE7A57C720 /* Image+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 955B87902E039163281C4F47C95DB851 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = E49B94A4D72DB4B81F4E8CDC098BC388 /* MJRefreshBackNormalFooter.m */; }; - 96E97174F4614FFA0649085022CB4AFE /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 244BBBE37C5D845F2BB8EAFBE6D12DE5 /* SDWebImage-dummy.m */; }; - 97235408E59E16C18B6BDA1D29E1CB26 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 92B30D23B01D493E996B4DF061CC3062 /* SDWebImageManager.m */; }; - 97385A64CA020489951EF769392C6DCF /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = EA5F1011035F011FF8DB93B55405B76E /* UIView+WebCacheOperation.m */; }; - 9887678D7D6BC165694560D92AF2C31A /* LookinConnectionResponseAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 8983C7CF18477B6B6E981751F1C09853 /* LookinConnectionResponseAttachment.m */; }; + 8FF4E9A492CA258F45C0BC51F6F69650 /* JXCategoryTitleImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D4AA530BA675D0E78BDD9644338B48A3 /* JXCategoryTitleImageCell.m */; }; + 8FF7B6477BFA6E6ABA168E1417291D5F /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = FD6EC1E4FB3615CE938900B23CEAD0F8 /* MASCompositeConstraint.m */; }; + 906DCE66CD5BD236081D468616199BB7 /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A632B4F7EA06C55CADB3BF7C49D7860 /* SDWebImageOptionsProcessor.m */; }; + 91AAF555B286FBF53E4F98D092B406BD /* SDWebImageTransitionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A543722998E5C6171A0B4A729D11BBB /* SDWebImageTransitionInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 91AFF41167C616A131F2E24563B8DDD8 /* JXPagingView-JXPagerView in Resources */ = {isa = PBXBuildFile; fileRef = E03F152E95B6924D2486511337D24503 /* JXPagingView-JXPagerView */; }; + 91BEBD471C408E6C72763AFB6926242B /* JXCategoryTitleImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8618BF2AA2A260801FDF48131074A906 /* JXCategoryTitleImageView.m */; }; + 91E8B94F8E02ABF5197DF5AE7D0B3934 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5716AF79F54782358457FBB452B73975 /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 928371B066E1211CE87089668D5BCB4C /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CAD21419CFC8A372DB941E7983ADDD9D /* SDDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 928A1ED0692DF0229F66A87135F93F2A /* LKS_CustomAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 29CA4DC7FB25B91EAA2B3847B7BB46A9 /* LKS_CustomAttrModificationHandler.m */; }; + 9345137ED10358B60E37D05FB6165759 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 41B90877BBAECA72C2F67A5E39E1E87A /* SDFileAttributeHelper.m */; }; + 9358FC6C6DA728AEE250D8E7DD236946 /* MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 1326C5B7B2B67B2A6E9A785F1ECEA87F /* MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 93E2C24501FAE3C3B886B9879786EF22 /* JXCategoryTitleVerticalZoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D390F38F6574F6D973E2C4A52D004A1 /* JXCategoryTitleVerticalZoomCell.m */; }; + 93E8C78EAE0B7613201813966B8E04E2 /* Image+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 17FBA36FB2D4DFAA4437CEE5C69F4BBE /* Image+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 940CD731A431894B0EE4E3283E6F352F /* JXCategoryBaseCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 51E7542749774862B8EB9AAB7010F1AA /* JXCategoryBaseCellModel.m */; }; + 955B87902E039163281C4F47C95DB851 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = C55730A1966B5DF338B0554ACC4B0B16 /* MJRefreshBackNormalFooter.m */; }; + 95CCA80D6790CF64F974A53E815420F8 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 75A91D4BB6118442A9B7E27598AE7C99 /* PrivacyInfo.xcprivacy */; }; + 96C1D55B3436C158B4CBB4E3D0AE53EE /* UIColor+JXAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 137AD002D5B6FA89785842F03034A5B1 /* UIColor+JXAdd.m */; }; + 96E97174F4614FFA0649085022CB4AFE /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B82D87F3DD4A8EB4C508E0BFA04090 /* SDWebImage-dummy.m */; }; + 97235408E59E16C18B6BDA1D29E1CB26 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ED4FAFE5BD7891D4471852209337077 /* SDWebImageManager.m */; }; + 97385A64CA020489951EF769392C6DCF /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A19BDA4E648916460C20489D6D183F0 /* UIView+WebCacheOperation.m */; }; + 9887678D7D6BC165694560D92AF2C31A /* LookinConnectionResponseAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ED1A3436209E7EBF3356CEC094C7391 /* LookinConnectionResponseAttachment.m */; }; 98AB6B8EB7FF096BCE87488C5AB3DF1C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 9A7FB1E975A5955C896E6B195C521804 /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = C59475012E53558600AFA4F7685E8F9E /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A89C16038149623A1DF06D47E7F953A /* LookinStaticAsyncUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = D08B8F280C5811F6505EA1AE7983082B /* LookinStaticAsyncUpdateTask.m */; }; - 9B06400877E40C173F5A1C9761F288CB /* UITextView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = DE9ADECB39002B8ABC9BF590B430634B /* UITextView+LookinServer.m */; }; - 9B1EF09A8A473D92C1258B00791BF5F0 /* UIView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = B51F28BC73CA22D31949B1635AF8CAE1 /* UIView+LookinServer.m */; }; - 9B3420DEB8A0CCB9E1241A669AEFCA8E /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 086D3945C39C8554602424E64D1A9F0B /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9B9343E8599EE5196BA75E842DCB48B7 /* NSBezierPath+SDRoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = A187D3CE401AEF4272748BA58A834812 /* NSBezierPath+SDRoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9BBBDC6BB6583BCAA75242231B62B530 /* HWPanModalPresentationUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 70ABAEE0904B02D3CE9045A0A088E18F /* HWPanModalPresentationUpdateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9CE425B89294BE2C13E70A86E75B15CF /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 889630ECFAA2151C2C1F334458A5C110 /* SDDiskCache.m */; }; - 9D422527A25BAE6A207DEFE11958ABBC /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7C62DACFDBE481DDA82F7BE3396A68 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D859B99561C389C0F494428F66F1871 /* HWDimmedView.m in Sources */ = {isa = PBXBuildFile; fileRef = 10D1C021B7050EF6841A364EE9A0A570 /* HWDimmedView.m */; }; - 9DDDCFC08B54A61C519DA78F94464E6B /* LookinHierarchyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 274EF5BCECE08045C7BB130E4D6ED8E4 /* LookinHierarchyInfo.m */; }; - 9DF446F8CA5BC4D4098766EC9063012C /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DE5FC1FDACC1A466A889091A6DD9D1B4 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFFD4780CA32B8E53D9F4FBC8B3F5AC /* LookinAttrIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = AA574A6EA7EECCE7D1E086B964FA3C65 /* LookinAttrIdentifiers.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E3C5CB1C97B2ED16218956999BFF7AC /* LookinTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 20C42B1A5A080256AC39DD86D000ACD5 /* LookinTuple.m */; }; - 9E6B00AF2ECE462D4D3C42AFC02F2AD7 /* LookinEventHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 79D13E836577BF8A934C5D3D24826BD0 /* LookinEventHandler.m */; }; - 9EBA682DA814406E9E5EF300587AF341 /* LookinAutoLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = D1F143BC4A879AC2B9896478CE4FF798 /* LookinAutoLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F89DCAA4092F3897E43E89842069A26 /* LKS_AttrModificationPatchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FED881DC5D7531317A8A2A309D96815F /* LKS_AttrModificationPatchHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9FB234EB4D8B5BCC699DB491E204594F /* LKS_GestureTargetActionsSearcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D9DDC30D49B9BC3DFA8D9BC83722C14 /* LKS_GestureTargetActionsSearcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A078A275FFFA48D620074790DA3CA6CE /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = B4E40A4D926E9D870172CB05C27151FC /* MJRefreshStateHeader.m */; }; + 9A7FB1E975A5955C896E6B195C521804 /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E42525F0D8B91406B2C7015E3E52B29 /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9A89C16038149623A1DF06D47E7F953A /* LookinStaticAsyncUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = EC9D66F9AD565D0A6E6595CFC812165E /* LookinStaticAsyncUpdateTask.m */; }; + 9B06400877E40C173F5A1C9761F288CB /* UITextView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3791DA4B477B236E8816C08DD01E3B45 /* UITextView+LookinServer.m */; }; + 9B1EF09A8A473D92C1258B00791BF5F0 /* UIView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E9CB22320707CAEB4EE4C1DF62EB9E1A /* UIView+LookinServer.m */; }; + 9B3420DEB8A0CCB9E1241A669AEFCA8E /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 167D63F7114C5D501803C08C617324CA /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9B9343E8599EE5196BA75E842DCB48B7 /* NSBezierPath+SDRoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = 32CCCC7F014C0FE2CA551D9AF48EEF89 /* NSBezierPath+SDRoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9BBBDC6BB6583BCAA75242231B62B530 /* HWPanModalPresentationUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B98EB1E5D5490C1C17C90E124262C80 /* HWPanModalPresentationUpdateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CE425B89294BE2C13E70A86E75B15CF /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 45505B1DFA133379CEE6DD6D8148013D /* SDDiskCache.m */; }; + 9D422527A25BAE6A207DEFE11958ABBC /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 29C25E996193BA4D1FCBB5C2A7812FB9 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D859B99561C389C0F494428F66F1871 /* HWDimmedView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6194A35582043CD8893F293567547D72 /* HWDimmedView.m */; }; + 9DDDCFC08B54A61C519DA78F94464E6B /* LookinHierarchyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D8B581D78D02F65425434F924BB64B3 /* LookinHierarchyInfo.m */; }; + 9DF446F8CA5BC4D4098766EC9063012C /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ECB40CAF1E6F3F4A5F02F74E30B95E8 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9DFFD4780CA32B8E53D9F4FBC8B3F5AC /* LookinAttrIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B857386E2ABDB8C3FD8B5797430DF26 /* LookinAttrIdentifiers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9E3C5CB1C97B2ED16218956999BFF7AC /* LookinTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A60F6547480237BC04A6287158556B4 /* LookinTuple.m */; }; + 9E6B00AF2ECE462D4D3C42AFC02F2AD7 /* LookinEventHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CAEC579F15CFFDB2E384C98A046EA76 /* LookinEventHandler.m */; }; + 9E7FD4501C2EF7FBF3379D21E46DB07B /* JXCategoryBaseCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B08ADE1A4FFE94FDBBE13FE7CC2C1E5 /* JXCategoryBaseCell.m */; }; + 9EBA682DA814406E9E5EF300587AF341 /* LookinAutoLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FFD17C3FF6DE53EF72736C597DF5B82 /* LookinAutoLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F89DCAA4092F3897E43E89842069A26 /* LKS_AttrModificationPatchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F0B0B2E800350D0E38B61EF43E6CE75 /* LKS_AttrModificationPatchHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9FB234EB4D8B5BCC699DB491E204594F /* LKS_GestureTargetActionsSearcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 029DB3501B51C5C14FA8EC0A89559639 /* LKS_GestureTargetActionsSearcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A078A275FFFA48D620074790DA3CA6CE /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 119F71892BB85FDC29B99AE148231087 /* MJRefreshStateHeader.m */; }; A0ADDB3C7DF96DF0E6BC53086778A103 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - A0B7A3B941134AA95A20F5A85165CC72 /* LSTPopView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 93DAC06B5293787BAAAA04E673812C59 /* LSTPopView-dummy.m */; }; - A0E0DC76F51300E7EB1EBA5492DE854D /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EFC403B9948A5A5D2DC7D8B3D9188A9 /* UIImageView+AFNetworking.m */; }; - A1560247914C760D9EE5F7A2392CC06C /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = B2770F360CD876399FE83C30619DBC24 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A0B7A3B941134AA95A20F5A85165CC72 /* LSTPopView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 97E0EEAE3EFB0492B434EC2A704903DE /* LSTPopView-dummy.m */; }; + A0E0DC76F51300E7EB1EBA5492DE854D /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 156CBD2266287775279363430A374818 /* UIImageView+AFNetworking.m */; }; + A1560247914C760D9EE5F7A2392CC06C /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 21199D87A8FB4561900F6BC425147989 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; A1A1266FD70CEB545FD7602CC33F2F7B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEE6097B6411333154FEF90A280E3E4 /* QuartzCore.framework */; }; - A1ACD509069144C27542774A41FE0243 /* UITableView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2701A816C2728A79FA904E6F2AC8ADEB /* UITableView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1DC9EFDF50DF0EAF24D9D7C219AD2C1 /* NSObject+MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F69E397FB4534DAE86CE36E624729DC /* NSObject+MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1E44277704AD68E867FD7C955A6632D /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = AA75F2BBB1F8188D75855FF34D8A7AE3 /* MJRefreshBackGifFooter.m */; }; - A324722BA42F21E98F158EA6C133D715 /* LookinServerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EAFD6E7E63CC2D3E074450E9124493C /* LookinServerDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A3EA39A13714B3103B82F4066A642F53 /* MJExtensionConst.h in Headers */ = {isa = PBXBuildFile; fileRef = C88E60EA597845949F0925B844477F63 /* MJExtensionConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6728DA26A7C457B78A7A3CCFA9D9A10 /* UILabel+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 589A748D16780600B35F1BC7E7CEB243 /* UILabel+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6B2B022993BBC55550CFBB0A0C78209 /* LookinConnectionAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 03BAE9F573ECB0A822C6757CBF10AB0E /* LookinConnectionAttachment.m */; }; - A6FCF74348D1907891FBDE3F2E331136 /* DZNEmptyDataSet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 972173A04BB5350B482CEE39EFFBE0EF /* DZNEmptyDataSet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A760FF1452F08B787F0997D91F4A2C98 /* HWPageSheetPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25AB23A95A2135A43EF14C148E707F7A /* HWPageSheetPresentingAnimation.m */; }; - A839428F403C52D8AA3466B65E20C27A /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 01B6539E05000228B7BBD9BA57EDF5E3 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A86CC1AFDFDD692DC4EE66F57C0F39E6 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = B90789CA4A099321E01CFF8CB566B5F3 /* UIScrollView+MJRefresh.m */; }; - A8AD2AE9695630E93DE504211EBAFBF1 /* LKS_CustomDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 40D46544DD0F8DC61B909F5E02739172 /* LKS_CustomDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A92AB5E65CA85947368E46E6627F1BFB /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = EEE26007FA20AE54DB39973E3D1D76FF /* UIButton+WebCache.m */; }; - A93BA1C5A4FFEF3ACF371690485A2703 /* NSObject+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3649A7CA35A3580F58B4481D9820AF /* NSObject+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9609EEBDD5FD40292925E80ED84D5DF /* LookinServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 802213010DCF77864E95B3A910F64EA0 /* LookinServer-dummy.m */; }; - A9A49E4A3BE8882F60DF32BAF39DE191 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 875E237862F4488FBFC692D1AB2DBB91 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9BEDE2ADF9D1E0D0D1A241806A1A486 /* LKSConfigManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6233A7302725D50AFE344EFD05C9C870 /* LKSConfigManager.m */; }; - AA1EA8F0F0470F1596B1FFA58ABF3375 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C4D31F6949E2640BBC06F6F5E862EA6B /* SDWebImageDownloaderOperation.m */; }; - ABCB80C4813C849FC93D57676820C907 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = AD7824F87B7A4AC0EB49B7B856736BF2 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AC14E56ECA7A4980A8E1CA68E800B12C /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = B8F37F4AA285AB6E2540A4063D8B802F /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AC710813CB6A1DAEEE45914402F864D2 /* MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 636EE1928B5BC8BC35DF1648C1BF1467 /* MJProperty.m */; }; - AD01931D200C49153984E27CBCEFE9D1 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = C1EC495C820AD2FE568E285440075D82 /* FLAnimatedImage.m */; }; - AE69A3B75BEEB9E2C54168BF0C502BC6 /* LKS_RequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 13527772A4A54A71A31658A3E36E2474 /* LKS_RequestHandler.m */; }; - AE7B02645B8F769CA5F215EE8F7CC5B0 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A732383A60ACA7498BD810AAC8E31192 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AF185CDCA462AD6450543676951C82F9 /* LKS_ObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = BFFCEECD2573D5472737D9AFB10A0BB2 /* LKS_ObjectRegistry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AFD1D411A9387DCEC6F0034653E23787 /* DZNEmptyDataSet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 979F4BB7A6CE1AF72F02D7E7F5EC0D7F /* DZNEmptyDataSet-dummy.m */; }; - AFDC0B8255B2F3CED8E609F8A3BD1CDB /* LKS_AttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 581F1A0410E8F8E85A8C2E596B4C7F40 /* LKS_AttrGroupsMaker.m */; }; - B01F27CEAE1971DEC56A8811FE669EB6 /* UIViewController+Presentation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D36CFCB34B6B2FF494AB70EC5024CFA /* UIViewController+Presentation.m */; }; - B030B558BE97E0225652EFB8C8FA431F /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = AB771D1A9F6BE6B15418DB387EE5ADF3 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1ACD509069144C27542774A41FE0243 /* UITableView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 40380EFCFB5E34558C193A723D077BE3 /* UITableView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1BFCC1BC5107F5F72BDBDB98E12559C /* JXCategoryViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = C617C2D863C4AC28AF0370EDC02120A9 /* JXCategoryViewDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1C02A0C13BE4A139BC38BBE20217FA2 /* JXCategoryView-JXCategoryView in Resources */ = {isa = PBXBuildFile; fileRef = BB4F011171FCB76B1AEBE390F843E930 /* JXCategoryView-JXCategoryView */; }; + A1DC9EFDF50DF0EAF24D9D7C219AD2C1 /* NSObject+MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = BE09431A1BE57A882CA02B1E434916A8 /* NSObject+MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1E44277704AD68E867FD7C955A6632D /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A8EB0FE66AD3E48C10CDD802521D146 /* MJRefreshBackGifFooter.m */; }; + A324722BA42F21E98F158EA6C133D715 /* LookinServerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = D03FDB7D5A636ED3DC51EF05677C546A /* LookinServerDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A325C7E5098EB5641EF49D279EA9EF03 /* JXCategoryTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 202D2DE7A9C3209A4BF4D407CF1AB06A /* JXCategoryTitleView.m */; }; + A3EA39A13714B3103B82F4066A642F53 /* MJExtensionConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A50C0A5F4CA1B3AF632BFE12460FC6 /* MJExtensionConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A643679AC9795083558C6D8E33AF6151 /* JXCategoryBaseCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A08646B05BD58116699CDFD07CA2977 /* JXCategoryBaseCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6728DA26A7C457B78A7A3CCFA9D9A10 /* UILabel+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 015571B1499F434BC7171DE7EA094577 /* UILabel+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6B2B022993BBC55550CFBB0A0C78209 /* LookinConnectionAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 595E9691CC1A487C44431E51893A1D01 /* LookinConnectionAttachment.m */; }; + A6FCF74348D1907891FBDE3F2E331136 /* DZNEmptyDataSet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A05508640C7796358B45E0B5C0C73183 /* DZNEmptyDataSet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A760FF1452F08B787F0997D91F4A2C98 /* HWPageSheetPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = C947209A5CDFABA11FEBE5D709864961 /* HWPageSheetPresentingAnimation.m */; }; + A839428F403C52D8AA3466B65E20C27A /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A7095DB3527991440F374C9F9DB5050 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A86CC1AFDFDD692DC4EE66F57C0F39E6 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AFDFE95B53BDA0F282212CF3E9B940F /* UIScrollView+MJRefresh.m */; }; + A8AD2AE9695630E93DE504211EBAFBF1 /* LKS_CustomDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 230F8C4FD68EA2D95EA48F31DA295CE9 /* LKS_CustomDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A92AB5E65CA85947368E46E6627F1BFB /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 21C74D93A3238750FF610EABE13EB50F /* UIButton+WebCache.m */; }; + A93BA1C5A4FFEF3ACF371690485A2703 /* NSObject+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B26E1BE3EBF37131688F5656289ACA2 /* NSObject+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9609EEBDD5FD40292925E80ED84D5DF /* LookinServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F4DF3FAFAFDE0BEC7606CB8D4C2C98B /* LookinServer-dummy.m */; }; + A9A49E4A3BE8882F60DF32BAF39DE191 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 32DEFB57DAEAFA1A97A9826678533D16 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9BEDE2ADF9D1E0D0D1A241806A1A486 /* LKSConfigManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 17DDB1AC9EC1929E6B6DFC0CFA9D927D /* LKSConfigManager.m */; }; + AA1EA8F0F0470F1596B1FFA58ABF3375 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D68B54EB4EEB9AF6B9ED16CAB83E16BA /* SDWebImageDownloaderOperation.m */; }; + ABCB80C4813C849FC93D57676820C907 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A8A3FC6E6388A4864974A3D3B9C02F6 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC14E56ECA7A4980A8E1CA68E800B12C /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = C63ECE6EA6AB3C1B9F676C1A2510CA67 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC710813CB6A1DAEEE45914402F864D2 /* MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = C9DDC2FE19D7DC5621872F440C5E8A37 /* MJProperty.m */; }; + AD01931D200C49153984E27CBCEFE9D1 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = CE3837EC7E52B2C2855416D01CB974C7 /* FLAnimatedImage.m */; }; + AD395F6BD7F53258A431E9479D07C6AF /* JXCategoryTitleImageCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 04AE87BD26EBAF13B558201544C0E822 /* JXCategoryTitleImageCellModel.m */; }; + ADAB2E78F005C6413F9F3699D60CF727 /* LSTTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = EF426A2B87D32263A2C56A13732C8201 /* LSTTimer.m */; }; + AE69A3B75BEEB9E2C54168BF0C502BC6 /* LKS_RequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 15E765BB9B77EA9AC2800F30D2802C1C /* LKS_RequestHandler.m */; }; + AE7B02645B8F769CA5F215EE8F7CC5B0 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E44ED3A05255119AA352B7DE0C64E994 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF17C7BD3344504E243E234004B4593E /* JXCategoryIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = FD4AB223CCA1E3159EE2C805605A0657 /* JXCategoryIndicatorView.m */; }; + AF185CDCA462AD6450543676951C82F9 /* LKS_ObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A2FC8CB1CFEB2812A4E5E466940232C /* LKS_ObjectRegistry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AFD1D411A9387DCEC6F0034653E23787 /* DZNEmptyDataSet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FFFC6DDC16F58E87A8A30CA92223320F /* DZNEmptyDataSet-dummy.m */; }; + AFDC0B8255B2F3CED8E609F8A3BD1CDB /* LKS_AttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C4B5B00D7224F098F6B2FE0962E5086 /* LKS_AttrGroupsMaker.m */; }; + B01F27CEAE1971DEC56A8811FE669EB6 /* UIViewController+Presentation.m in Sources */ = {isa = PBXBuildFile; fileRef = C806BECAA1C722F04FE4A89D9B14A0E0 /* UIViewController+Presentation.m */; }; + B030B558BE97E0225652EFB8C8FA431F /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F7FE08919F8BE5AACFB3A1E812E57C03 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; B03761E468C3B0F1BFEB2401CF2D5245 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - B09F08548ACA8379445F6525011EE219 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AE63A9BC3D50E34C84263A87F782ACA /* MJRefreshBackStateFooter.m */; }; - B2704AFFC5CC053154839DB44924D255 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 069FA883A4FACC46317AB2BE1BDE30E4 /* SDImageCoderHelper.m */; }; - B2B5444DFE63D2835A7561C1D64C9344 /* LKS_CustomAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = CB56ABA66093040F0D62AF378BB66DBE /* LKS_CustomAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B2BC43DEC8DE2B9234693FE3782AB76C /* LKSConfigManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D53461EC25E2C6DAE3F3C2ABD951A2B /* LKSConfigManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B331CE2D3DEB461E738B886086A365F9 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F2363FB988E5DC9705FE22B29B7B4F8 /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B48A975992E58328254C494F133DE467 /* NSObject+MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 690D12C73095E1091E4B6AB8B11A064E /* NSObject+MJProperty.m */; }; - B4F231C5CBAB3D4A184699D0066E0E83 /* SDImageAWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = C685758668AFAC91E0AE4675AEA80600 /* SDImageAWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B565C08CE947CF591B1D3582272D5E1D /* LKS_CustomAttrSetterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04D3C87C11221ADDA77670ED0731D145 /* LKS_CustomAttrSetterManager.m */; }; - B59E60FBC9665FC1061B88B8E6FD9FAF /* Masonry-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 672AB6E0839CC099E7CA7CF49761A5D7 /* Masonry-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5AF87C11A465F666473F6191D173905 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8166AA98A11AE7F3F46DBF2C481F6DF5 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5C521FFB8E09DFE348238E21556842F /* UILabel+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = FA721DB25EC176AA8EF0102082B67F5A /* UILabel+LookinServer.m */; }; - B66356D4E7E43B3D15324569AA7EBB05 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D7205061D92FA9AEDA20BCF1B6FF9B7 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B680C2604BD8BC9644AE7C67BC46B9BB /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C6B8E558F2970AA962D063345B79D19 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B741DBE2A466E6211F879EF997D9322D /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FDBCFE0DF35F1346C9E17295438B88A /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B79864F972C51037B350802D8CD48024 /* LKS_GestureTargetActionsSearcher.m in Sources */ = {isa = PBXBuildFile; fileRef = BC24AF9FD32062D15DE214E94B0E828F /* LKS_GestureTargetActionsSearcher.m */; }; - B81566F19789EBD9BE2714E2A6059D36 /* LookinDisplayItem.m in Sources */ = {isa = PBXBuildFile; fileRef = B36F0D1046FE48DF23AE7AB21CD678D3 /* LookinDisplayItem.m */; }; - B8CA1F338C44C633916650FD85DA5A30 /* HWPanModalPresentationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C880A37C8BD02476827078E98C08810 /* HWPanModalPresentationController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B95C63A039D9D08896421291DEBD3AEB /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EDBEC1105ABEB5730250B28CB605E44 /* SDWebImageCacheKeyFilter.m */; }; - B987864019E987FE32AB26A9CF2C8E12 /* UIViewController+PanModalDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = 4816EA2348DC71F3330B4D2743758FEF /* UIViewController+PanModalDefault.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B98BC635A537547CD8CA9B77C750304F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - BA904ABA8ED36CC4E5EB2B2004CA1F18 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 00F09038ADB7D3ACE57173DD781066A5 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BACAA91A92F35CD7E7795232A83F21D1 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F0CB265D0463DC2290A542EFCE210632 /* AFNetworkActivityIndicatorManager.m */; }; - BADA31750A2136D073EDA4461DBE1EEA /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 16276D593D3F4D227902AF3A1424A4AC /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BBA61EF31BFDFA6FCA34DC4EBE6E1D9A /* NSString+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = CEFEE7CEBA57AF6426BA05F18F444C4E /* NSString+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BBF5FDA7D647517E2F904FE8E5596D96 /* LKS_AttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 54E07E4DAA97DEDC8F59F58429664909 /* LKS_AttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC2F9B1D6986FEB23B4FB1288B512538 /* MJRefreshNormalTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4082EEAE9AC1F17D236D83E99200EA70 /* MJRefreshNormalTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC5458210A973BC7A29D1F45D458A14B /* AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CA3017C0C359C5E90091B685A3A59EE /* AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC7A1933CCF40C3C5E2E4A70AD2D0657 /* LookinDisplayItemDetail.m in Sources */ = {isa = PBXBuildFile; fileRef = DA876A02B80932A6284AB2ACAB8135A6 /* LookinDisplayItemDetail.m */; }; - BCDC1E1D46DD124B5726A064D2EE66A3 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 452B8DD5CBF29E80E794E957D7ACEE0F /* UIImage+MultiFormat.m */; }; - BCEFDE57BB0E0B36731C8D39FFA1BE2C /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E350DE3AE3DE0F5FC5BD9A2EB159387 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BD2F6B06ADB5136DA881D1B918367125 /* UIViewController+PanModalPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = D3576B2FF83DF230E75AA05AB2DB6B4D /* UIViewController+PanModalPresenter.m */; }; - BD30193C1E3D7B1F17B1B1F3F08BE655 /* UICollectionViewLayout+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = C45F5D95A727E9121E38DFEFADA82094 /* UICollectionViewLayout+MJRefresh.m */; }; - BDBE494BAC544843982C3CA96A6C41DD /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B130ACC8A24ECD0BF3BD07D5AF21E4D /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BE4F0DF600FBF07E812D262B293CF76C /* UIView+LSTPV.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CE9728E85B8432ED072CD0DC7926F20 /* UIView+LSTPV.m */; }; - BF0C3D2782FE1425C2F1F8827132A94B /* MJFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A5823526F694533978DE523241FEDE9 /* MJFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BF22D137EF6324675FA50080C5D93C00 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 14454326E9CB6046C0CA3ABA3A33F187 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BFAC671767912906E90060B0F4BED5FB /* LookinCustomAttrModification.h in Headers */ = {isa = PBXBuildFile; fileRef = AA4F3775DDC9BAD8BC30D51376A765F0 /* LookinCustomAttrModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C04D578067F77AAB6717D32712CC39A2 /* HWPanModal-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B1C14811A97739A8455D69D9EF8F1AA /* HWPanModal-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C0D7926E41A294ACA98D7B033B283919 /* WKWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = FC504494ABD0D1144D620FD1501F0E00 /* WKWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C16483526F6C6287240A75EDCB7E2F2F /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DCB59AEF88556057BC2FD85427D2EFE7 /* FLAnimatedImage-dummy.m */; }; - C1D9802BE2A6410FFDFB1650FB9BA317 /* LookinDisplayItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 48B9B4465675824F9DA134FE2253901E /* LookinDisplayItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C1DD8C6A64F948E4C53560C76B995DA4 /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E5C8F44BD62EB86605C88FA434E57ED /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2033A68F13923BF9B3EE19F39FC1411 /* UIColor+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = D52AD9DE99C02DF34E22E59E4A970F45 /* UIColor+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2068AEACC2D9C7F1FFE41AA25B12A68 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 996E03E4CC36DB69F10AD9C8F02472C6 /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2840BF1950FF7EE2DCD6D55F768A49C /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 51E9651B0CFE7B40336ABD29412D3C39 /* UIImage+GIF.m */; }; + B09F08548ACA8379445F6525011EE219 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = DD1439668AF92748DEFAD18BF418CE55 /* MJRefreshBackStateFooter.m */; }; + B0F512045830FAB66AE7526E35501800 /* JXCategoryImageCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = D4C17E87C77E85F28C83D98FAB4AB7F4 /* JXCategoryImageCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2704AFFC5CC053154839DB44924D255 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = BBC5ED786070BB7777881EF2B55FF369 /* SDImageCoderHelper.m */; }; + B2B5444DFE63D2835A7561C1D64C9344 /* LKS_CustomAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 137E45FE90DEED579DF255BB11ADABF4 /* LKS_CustomAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2BC43DEC8DE2B9234693FE3782AB76C /* LKSConfigManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D16058E57E3F07CA628E8A17A3B944C1 /* LKSConfigManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B331CE2D3DEB461E738B886086A365F9 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EF3518EEE6DB69526EE34FF9D58DFD /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B48A975992E58328254C494F133DE467 /* NSObject+MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = CFD12B92C17E28346EDC2EC75D0BF494 /* NSObject+MJProperty.m */; }; + B4F231C5CBAB3D4A184699D0066E0E83 /* SDImageAWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = DC870A534B766E7815C7744EE9E7E3E1 /* SDImageAWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B565C08CE947CF591B1D3582272D5E1D /* LKS_CustomAttrSetterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 567674319F769F7E8B80920BBBD444B6 /* LKS_CustomAttrSetterManager.m */; }; + B59E60FBC9665FC1061B88B8E6FD9FAF /* Masonry-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CBDE62F720E1751DB8B8E4DF3B0E9F /* Masonry-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5AF87C11A465F666473F6191D173905 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 634BE374E20F830B5B77550EFCF89612 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5C521FFB8E09DFE348238E21556842F /* UILabel+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E285AA5C9AFC477B5336B5AC2C863D1 /* UILabel+LookinServer.m */; }; + B61728EFE4A95013413ED38D371A33B0 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 187A3F425AA5E5A93F8784E11F9E28CF /* PrivacyInfo.xcprivacy */; }; + B66356D4E7E43B3D15324569AA7EBB05 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B89E97BE59B9448BC63E348FA77F055 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B680C2604BD8BC9644AE7C67BC46B9BB /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D56371580E6496005BC9D35C2C49570 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B741DBE2A466E6211F879EF997D9322D /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B5308ADA544D7E6FCE86EFD21D5CBB /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B79864F972C51037B350802D8CD48024 /* LKS_GestureTargetActionsSearcher.m in Sources */ = {isa = PBXBuildFile; fileRef = BC88BA608872DDF711D78498FD36C1AA /* LKS_GestureTargetActionsSearcher.m */; }; + B81566F19789EBD9BE2714E2A6059D36 /* LookinDisplayItem.m in Sources */ = {isa = PBXBuildFile; fileRef = BCE8E065BE01E56E0D55097E36AB8FC2 /* LookinDisplayItem.m */; }; + B8CA1F338C44C633916650FD85DA5A30 /* HWPanModalPresentationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 195F1795B17C3F026E46BBEF64C1EA67 /* HWPanModalPresentationController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B948DCB652CEF1509FBE410D85844A53 /* JXCategoryView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 84C7B13561A207799480933E11856D99 /* JXCategoryView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B95C63A039D9D08896421291DEBD3AEB /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 34C31D8DFEC22296E69E97BC5CEAE316 /* SDWebImageCacheKeyFilter.m */; }; + B987864019E987FE32AB26A9CF2C8E12 /* UIViewController+PanModalDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BAC219B4754C1E13B6929143780BE52 /* UIViewController+PanModalDefault.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BA904ABA8ED36CC4E5EB2B2004CA1F18 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = F451B2E12A8192978BB7FB1B45BF1E04 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BACAA91A92F35CD7E7795232A83F21D1 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A5FC57ACB22E21DCA20F2B582D18A03F /* AFNetworkActivityIndicatorManager.m */; }; + BADA31750A2136D073EDA4461DBE1EEA /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C4CB24406FFC32C73C615D12F0532C7 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BBA61EF31BFDFA6FCA34DC4EBE6E1D9A /* NSString+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 06AB57BB46CC82FE3257276649BAF8EA /* NSString+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BBF5FDA7D647517E2F904FE8E5596D96 /* LKS_AttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = BE10A2A4B13E0F15A962DBEA161DE595 /* LKS_AttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC2F9B1D6986FEB23B4FB1288B512538 /* MJRefreshNormalTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 342267EEBD80FDDCEAA647EFBE0EB6BD /* MJRefreshNormalTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC5458210A973BC7A29D1F45D458A14B /* AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A1067B051CF7A4C36817E6F668A3E7A6 /* AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC7A1933CCF40C3C5E2E4A70AD2D0657 /* LookinDisplayItemDetail.m in Sources */ = {isa = PBXBuildFile; fileRef = F90D97C684BADB3FE9796E626B98C43A /* LookinDisplayItemDetail.m */; }; + BCDC1E1D46DD124B5726A064D2EE66A3 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 5734E5CBE9E63CD37E71A375796587B5 /* UIImage+MultiFormat.m */; }; + BCEEAFC24178DE5AABACC74245CE1739 /* JXCategoryIndicatorDotLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 898DE7614EA3416744425477D130D9C7 /* JXCategoryIndicatorDotLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BCEFDE57BB0E0B36731C8D39FFA1BE2C /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = AF302A5E7BA56F9F631A8591DA72D3C3 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD2F6B06ADB5136DA881D1B918367125 /* UIViewController+PanModalPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = B05FD8A103E2A06EE08BE59B38FC36B4 /* UIViewController+PanModalPresenter.m */; }; + BD30193C1E3D7B1F17B1B1F3F08BE655 /* UICollectionViewLayout+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 99CBD01AD35AF793B343AC0ACF2CF164 /* UICollectionViewLayout+MJRefresh.m */; }; + BD7E02AB6057AD5A6AC513C34D508135 /* JXCategoryIndicatorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF91306ED7817FCE47628D37A94BF1B /* JXCategoryIndicatorBackgroundView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BDBE494BAC544843982C3CA96A6C41DD /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BEAAFCDD4CD23AABA4CD7359454B646 /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BE4F0DF600FBF07E812D262B293CF76C /* UIView+LSTPV.m in Sources */ = {isa = PBXBuildFile; fileRef = A4D8DE877E59C1B5596F10D0213ADC5D /* UIView+LSTPV.m */; }; + BE7F6E08A9BDA2EF6FA625EB5CD685EC /* JXCategoryCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = D9DA60EBF6A57B0D3224E3ACD3E51971 /* JXCategoryCollectionView.m */; }; + BF0C3D2782FE1425C2F1F8827132A94B /* MJFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C9F5466A18204DE825F30433C784EDB /* MJFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BF22D137EF6324675FA50080C5D93C00 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C07CC30774DAAE34D68C477CE151A36 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BFAC671767912906E90060B0F4BED5FB /* LookinCustomAttrModification.h in Headers */ = {isa = PBXBuildFile; fileRef = 06A633B376D525417B93138405029540 /* LookinCustomAttrModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BFD8EC99CD8DA66E3C6C0B3EE8CC4859 /* JXCategoryNumberCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = C74AFAA0D49E0563D9312CEA70CCF8B3 /* JXCategoryNumberCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C04D578067F77AAB6717D32712CC39A2 /* HWPanModal-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 83FBF1722FEB1FC5E339C64BC2275D81 /* HWPanModal-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C07F8A334C739FD38D9CB5C5239D683F /* JXCategoryTitleCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C34880EFF82114AECCB354A57C47E7C /* JXCategoryTitleCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C0D7926E41A294ACA98D7B033B283919 /* WKWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 21E66554273E5793F0BC4D1CD5A058CD /* WKWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C16483526F6C6287240A75EDCB7E2F2F /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E3535B97DCD1B05E059D045B16700F34 /* FLAnimatedImage-dummy.m */; }; + C1D9802BE2A6410FFDFB1650FB9BA317 /* LookinDisplayItem.h in Headers */ = {isa = PBXBuildFile; fileRef = FED61E621A88CB9CE3C421FDEB1106FC /* LookinDisplayItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C1DD8C6A64F948E4C53560C76B995DA4 /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = BEE43BCA7C1A101BFC7A5856F8793387 /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2033A68F13923BF9B3EE19F39FC1411 /* UIColor+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A34A08E72CC7EE2DEDDC6F48148CD79 /* UIColor+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2068AEACC2D9C7F1FFE41AA25B12A68 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E54C32C4CB68C01C57E81C03350F4B2 /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C22BFD04EAB76981E7F112D57A1F5E79 /* JXCategoryNumberCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B8FD707DDEC1F98F5C5FE19647F0592 /* JXCategoryNumberCell.m */; }; + C2840BF1950FF7EE2DCD6D55F768A49C /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 35205291EDA412911A7CCBF5DB6087EB /* UIImage+GIF.m */; }; C2F8C43CFD4C890405F217DA7E00C839 /* Pods-CustomKeyboard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD0462C32F55EF5E9CB1056459809F /* Pods-CustomKeyboard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2FE60A10C792613E45031AE6E851ECB /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = B12BB85356FB25DB1C8CA459600D3F8E /* MASViewConstraint.m */; }; - C4CC01ED368863C6E3220988FBC6CEFB /* LKS_CustomAttrSetterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BC686BE8B7F5AC6B3A652ABBA6EAE87A /* LKS_CustomAttrSetterManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C60DB44F719853DE3B7157960DAF9270 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A4E8FC1A8280B0B2C51BA4C08DA78B3 /* MJRefreshComponent.m */; }; - C6A100159974349FEAAC99B82BE0F872 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = A65F19FCE0D1235D1B87CDFD5146518C /* SDImageLoader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6FEC1088121FEA7DDC3384B7ECF3B44 /* LKS_Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2262EDBC98A2795DB2EE27FB7D953E2C /* LKS_Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2FE60A10C792613E45031AE6E851ECB /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = CF9BCBE90C3B7C448764C897685CB0E3 /* MASViewConstraint.m */; }; + C4CC01ED368863C6E3220988FBC6CEFB /* LKS_CustomAttrSetterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 38E107BE978505B98A952E3564F532AA /* LKS_CustomAttrSetterManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C60DB44F719853DE3B7157960DAF9270 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F81509596D525489E9AA55CE4C0B4C1 /* MJRefreshComponent.m */; }; + C6A100159974349FEAAC99B82BE0F872 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CE19B5D21ECCFC76311F186D2B3F651 /* SDImageLoader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C6FEC1088121FEA7DDC3384B7ECF3B44 /* LKS_Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = FA6406A6E74DC06D367BE38EA6C60243 /* LKS_Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; C71935C30C1AEDF32B96670BD8FA64CE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - C857B8D2D0BAA5A8A764F9E1C4B85807 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = FD22D0365334ED54585130432CEF0912 /* ViewController+MASAdditions.m */; }; - C8771885BEA9EA0BD2E2C474587325E2 /* LKS_ExportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DC75CCA31193BB63063F364267DBCF2D /* LKS_ExportManager.m */; }; - C8EC35DFB0945DBE2F2FF9ECFE6D9711 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 361FBE2595D99942EB88F5C0D34EB2DA /* NSLayoutConstraint+MASDebugAdditions.m */; }; - C93E972E75F84674690300123984EC43 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DBD3AB6DB93D7C2BE4FB5D89E1938FD /* SDAssociatedObject.m */; }; - C992A335399F942237E754EE65C40CA5 /* LookinObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 47F9AD4ED221D6EEDB441FAF35299C66 /* LookinObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C993A4D0CFA51E567F458CA65C1298AA /* MBProgressHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F2AA502A31D7ACB4F28AAE65C3561F31 /* MBProgressHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9A72F0A93329C42B77395B0F6CEA26C /* HWPanModalPresentable.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A4F0899D1AD5593F9373F8225D28188 /* HWPanModalPresentable.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9B63C6ED2ED691EA83D3EE65939444B /* Lookin_PTProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 7577D873945C0C370C14EE971C3509FB /* Lookin_PTProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9E19D164C26414115CC969ED9A303C1 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 82512BA24900AE369D9A35A08C7187CC /* MASLayoutConstraint.m */; }; - C9E8C9372C2DA29D302B058BE3AE9877 /* CALayer+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A89D8D8B71AD9A723D88B13AF519A214 /* CALayer+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA1E0DCDF679EA2DE2ED0915426E1D04 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = E2E3CFC89381BAE830E4045CE02E25EB /* SDWeakProxy.m */; }; - CA56274BE7CBB3E759E0364785DF9799 /* Lookin_PTChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 39D285C0DD3F1106B921412AD679ADEC /* Lookin_PTChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CE86196C00DC1D658B6CB7D47A0233AA /* LKS_ConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DF4E1CE47903B976C738C7A1DB7C650 /* LKS_ConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CF7005F2C42AC2E2DD6D437D52C7048B /* HWPresentingVCAnimatedTransitioning.h in Headers */ = {isa = PBXBuildFile; fileRef = FCCAFE3B7FF5BB1E728A5F5834F651D8 /* HWPresentingVCAnimatedTransitioning.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CFF8D1A5E4C2097EF05E1021FE112886 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 37B6B4596E25AE5CE5BE1FE14A6AF93B /* SDWebImageIndicator.m */; }; - D06BB547D59D183FD1DDD84DEBAC9EE8 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 360B7B34B46811D44994D83FAC09E663 /* SDWebImageCacheSerializer.m */; }; - D091F05269EE0566B665B00C7D912F8E /* Lookin_PTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 230DC3B27944D3472C6A06DA7EEAF194 /* Lookin_PTChannel.m */; }; - D121163078CA9BBE54A83BD73EF784CF /* LSTPopViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 76DC37DEAFA5D12B1D7F9040EFB03DA5 /* LSTPopViewProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D1230E19DD1507E6370B80DF6653AC2A /* NSArray+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FBCAF641C4059BE19811532C4E3A0A2 /* NSArray+Lookin.m */; }; - D2AF9A7FD73B95960FDA4FD06C4BED08 /* NSObject+MJKeyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 07752F7C2A34B933346F7E8E9D95461C /* NSObject+MJKeyValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D2CD8848F856EC9942A76610AAE66F0A /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A46088339E0DB93FCE586878F070297 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D3615499AFE4D2A8EC2E773F4D8A82B2 /* KeyValueObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = AF32E35E8F4552F6AF08F140AD085FE4 /* KeyValueObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D559CC4D0695CEE05F3B4C1C06475044 /* UIImageView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = EBD791825D3A6F564E4BA3B31B0F2BFB /* UIImageView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D5C046C46961BE465293625D6B870620 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CF307ACF82B2962F9E48DD0D029690F /* AFNetworking-dummy.m */; }; - D62A672EEB252581BD972DDA862BE1DD /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6407DC7FD67C9C74E0C3BA6B778AE0CD /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D662C83ECE8BEDA5FFB52F3575CA3E1A /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EDF0BD9574A366871EF5B3FBEFB906D /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C74589E03918328E4D27EFCBF6C4A0B8 /* JXCategoryBaseCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 65F97EE1352D7FC02982C03FB1D0FBEB /* JXCategoryBaseCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C857B8D2D0BAA5A8A764F9E1C4B85807 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BABE1F324CED82D14350741682D422B /* ViewController+MASAdditions.m */; }; + C8685678D1B020F87365D022216FFE29 /* JXCategoryIndicatorImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D5D75E71D2ABCC5D3DDCC662DACBFAED /* JXCategoryIndicatorImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C8771885BEA9EA0BD2E2C474587325E2 /* LKS_ExportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 44ABB514E2C8BB7AA8881283E1F0FE47 /* LKS_ExportManager.m */; }; + C8EC35DFB0945DBE2F2FF9ECFE6D9711 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 25A7097BBC72B099A6C5D8BE403878A8 /* NSLayoutConstraint+MASDebugAdditions.m */; }; + C922BFFF717515E5878910DF4078CE1E /* JXCategoryIndicatorDotLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4AC84F5855EC104608477917DF3145 /* JXCategoryIndicatorDotLineView.m */; }; + C93E972E75F84674690300123984EC43 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 9421B0E41FC583CAD966F98C60445BAB /* SDAssociatedObject.m */; }; + C992A335399F942237E754EE65C40CA5 /* LookinObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B1D41519ED222707112BD66393CC6B2 /* LookinObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C993A4D0CFA51E567F458CA65C1298AA /* MBProgressHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D5100072476E008E3F5E024784855C6A /* MBProgressHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9A72F0A93329C42B77395B0F6CEA26C /* HWPanModalPresentable.h in Headers */ = {isa = PBXBuildFile; fileRef = 83D5AD11F2E32B53BA1869D6DE812341 /* HWPanModalPresentable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9B63C6ED2ED691EA83D3EE65939444B /* Lookin_PTProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = FB5DC78AEFAB6098819933CF81AAB15B /* Lookin_PTProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9E19D164C26414115CC969ED9A303C1 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = EB21E143FD58D712C16E9026FBFFE194 /* MASLayoutConstraint.m */; }; + C9E8C9372C2DA29D302B058BE3AE9877 /* CALayer+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 26925632A670841DDFC5067C12B16515 /* CALayer+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA1E0DCDF679EA2DE2ED0915426E1D04 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = C5A9A86ABA54140CD0A5B6CD44C79740 /* SDWeakProxy.m */; }; + CA56274BE7CBB3E759E0364785DF9799 /* Lookin_PTChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 35269DC2485E9AA07A892FDEB96B16C7 /* Lookin_PTChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA9AFE3460622CC65F75A2DDE845F6E9 /* JXPagerSmoothView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A2E4F46AFE1B8413F8C1C81323B5831 /* JXPagerSmoothView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CE2AF36EBB17CDA2652CBADD4A7ABF82 /* JXCategoryImageCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = EC57F0405D7809ECABB52C0C041C6F2F /* JXCategoryImageCellModel.m */; }; + CE86196C00DC1D658B6CB7D47A0233AA /* LKS_ConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 60913F6F25D56976457BFFCFF2C2FADC /* LKS_ConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CEC9EF043F69710AC29940EB4E1E2B19 /* RTLManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E752820782AF474A360AC65F5EFA79D /* RTLManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CF7005F2C42AC2E2DD6D437D52C7048B /* HWPresentingVCAnimatedTransitioning.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AEB6DDDE2B74ABEB1D68CE037D784DC /* HWPresentingVCAnimatedTransitioning.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CFF8D1A5E4C2097EF05E1021FE112886 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A8F3B5ED5052E8AFF569E50436DC3C0 /* SDWebImageIndicator.m */; }; + D06BB547D59D183FD1DDD84DEBAC9EE8 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BEFA0A1959620AC394975A01082A23B /* SDWebImageCacheSerializer.m */; }; + D08901EA319887BE6D694F8333BE8D1F /* JXCategoryIndicatorTriangleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E17CF24E4278604BB723E30B9997957 /* JXCategoryIndicatorTriangleView.m */; }; + D091F05269EE0566B665B00C7D912F8E /* Lookin_PTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 69AE4F19374B51CFBF6330CC5F82B32A /* Lookin_PTChannel.m */; }; + D0E37358C3DCF2A8A572C4F38BB0569B /* JXCategoryListContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 29EA07EA8EF3C7818A9505A783C4FF02 /* JXCategoryListContainerView.m */; }; + D121163078CA9BBE54A83BD73EF784CF /* LSTPopViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F35F0E5B188FD04E8E889503DEA5841 /* LSTPopViewProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D1230E19DD1507E6370B80DF6653AC2A /* NSArray+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = D4BC45247918896A52CA0C54F038B447 /* NSArray+Lookin.m */; }; + D2AF9A7FD73B95960FDA4FD06C4BED08 /* NSObject+MJKeyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BDE2764DE3EEF78845A18DB898232DC0 /* NSObject+MJKeyValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D2CD8848F856EC9942A76610AAE66F0A /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 31894250FE81D510485178A2F984B715 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D31558927DE3F62D1BB1FC416E6F237D /* JXCategoryDotCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = EF3A8DFB97BB54D169F6E8AC578F498C /* JXCategoryDotCellModel.m */; }; + D3615499AFE4D2A8EC2E773F4D8A82B2 /* KeyValueObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E70DDAD553B6A4AC2379D01C3F133EF /* KeyValueObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D380F9C945002DBF2E7D64983ABDC890 /* JXPagerListContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = CF85D3EF505C17C565E691AC344CCE5C /* JXPagerListContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D559CC4D0695CEE05F3B4C1C06475044 /* UIImageView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F45F2EB9AE5E2D5BDC0F9860DB695385 /* UIImageView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D5C046C46961BE465293625D6B870620 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 17CD950341D8F0132ADFEDC39B7267A7 /* AFNetworking-dummy.m */; }; + D62A672EEB252581BD972DDA862BE1DD /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5409A465D5BE745D21B9F8847B798BD5 /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D662C83ECE8BEDA5FFB52F3575CA3E1A /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BCAF03C4FF87945F86C061039CB2443F /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; D663837F4347AF58660EE6F7FD426ECE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - D737D93725B0E072027AB6DA9C4DDDEC /* HWPanModalAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = CF585038948BE5BD9FDE25D090C77A52 /* HWPanModalAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D788BA4B9E8186271BA75CA52B30502C /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CF635A9AE952B4C70F06837B227DDCC /* View+MASAdditions.m */; }; - D7B3E8948DB04BD8FB6748419DA03EA9 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5839F6C7ABFF6E515370151D7E470262 /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D89C7D5455E3E8E2D7EC6B880253BD9B /* LookinIvarTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DDCF4465DE05312EF540D3B5319ADAF /* LookinIvarTrace.m */; }; - D90607B4E56247B19B14462E487BA86E /* MJRefreshNormalTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = CF5E2B29305178430BD510351FDD6C99 /* MJRefreshNormalTrailer.m */; }; - D90DED0F5638B1C44F4B6C62D600D240 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A75653F7F6754FE7D26DA5C94A641DE8 /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D90DF1376DF5E2EA644313BCD2E03058 /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 4056B0FA7CFCA3F0B3BA1F921297B1CC /* MJRefresh.bundle */; }; + D737D93725B0E072027AB6DA9C4DDDEC /* HWPanModalAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 42F934D080B2CC7F2CD859E2B472A585 /* HWPanModalAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D788BA4B9E8186271BA75CA52B30502C /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 903038F34EE93C82A3EF6A1F6BDF857B /* View+MASAdditions.m */; }; + D7B3E8948DB04BD8FB6748419DA03EA9 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 13D84A2503CDD440D0A0063FF97A2EB4 /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D89C7D5455E3E8E2D7EC6B880253BD9B /* LookinIvarTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 89DA873F803BF9043720F615E8BC4CD5 /* LookinIvarTrace.m */; }; + D90607B4E56247B19B14462E487BA86E /* MJRefreshNormalTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = DD3BFE6DB15E8FF64920F720EA31EEDE /* MJRefreshNormalTrailer.m */; }; + D90DED0F5638B1C44F4B6C62D600D240 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = D40BB639047461966566FFED666B3ACF /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D90DF1376DF5E2EA644313BCD2E03058 /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 43F4AA149B8B7307ED5DA363EBC93DBF /* MJRefresh.bundle */; }; + D93EA925FC24665584B3653514A56706 /* JXCategoryIndicatorImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = A2C056F5D1231FA94F92AA3712D545C2 /* JXCategoryIndicatorImageView.m */; }; D968461E31E8FF3FF6BA1DC621B0433B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - DBA9500CBBA5FF6FCBBA115AE4D12152 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9005237D68B29ED337A382B01C2917F8 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DBA9500CBBA5FF6FCBBA115AE4D12152 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A75069F0A291D74DCBF8F50AA213D806 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; DBB7D12AC159E50D059772E4B6CF1D2F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - DBD9152526A180771BF7D7CD209B957E /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 68BFCD31885FD8664001BB1EFAC74751 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DCCBFE0D3914D33369C19AC135AB54AA /* HWBackgroundConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 3583F45BB2A021FDC55DB56C5C606CB1 /* HWBackgroundConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD7F63D4E4640C7386877BB787740272 /* LookinServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 96AA5B4DE9A3DA12F53F6CB5D9AC99E2 /* LookinServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDA16FB9C21AD941442357DAE6939530 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 17E50DA329E2F435CC41C2257BD0C866 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDB268F1408C6AA5860C768310E9B9D6 /* LSTPopView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E90228ED50408CEB55B1257A093A4B1A /* LSTPopView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DE5A78F116018E2AC54714238276574D /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 37526D876665DA3E019DF167F09B21F4 /* UIActivityIndicatorView+AFNetworking.m */; }; - DE98ECCCA7106A4EA575EF34830D41FF /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 882CA8EEAEB3525FB7AD66F6FFC2CF6A /* MJRefresh-dummy.m */; }; - DEA09692CF813A23899CD4949A9B6801 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 119E6680DBF287ACAD4F054AA0D5AE17 /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DED9ADFC8CC65243FC54E008A853742C /* MJPropertyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = F032CA5D8067C46163CF052F106C2A2D /* MJPropertyKey.m */; }; - DF2B15402CE105F5A8CE48BBDCFFD5DD /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ADF5834236B788D4ADA4E85DBD68395 /* MASConstraint.m */; }; - DF525E5405FAD3B98B0C2D966EB2DD95 /* UIViewController+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = F69E813A3DBBC0717A1A31E2B15A0606 /* UIViewController+LookinServer.m */; }; - E0B48B9D5D45AF3500FC718459D66E6C /* LookinDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 610E7F99F72A12BE4DBEF2C1ABF10115 /* LookinDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E0BCF21E9FA59F638C13ECCECC4D9690 /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CC308EFB0F9E5B050F606DDD3E7A44F /* SDMemoryCache.m */; }; - E1B4145C5201DB66B65520B36849067C /* HWPanModal-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 13066DF230EEB3642E5BD7E5097A64F9 /* HWPanModal-dummy.m */; }; - E1BF615DD0422B06C97542F03C879D41 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 654D22CCA8871E0E0A65AB7C50503EB4 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E1DE69F6BB6235A6EDB6C99A184BEDB4 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = E02C6844FCB15EFA12DE7936E2D89768 /* UIScrollView+MJExtension.m */; }; - E3FC6BEE41652C0500F57E0CB83B347F /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = C8667A6D81C45427108730E481B7134F /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4773572BED239AA7D618F1C05BAF51E /* HWPanModalPresentationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 165D33815F330DB72870682C820A790B /* HWPanModalPresentationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4F1B478580D6D7328BC29607BDE46F6 /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = 16A00EF4CD873ABB9D94776FACC7C92F /* UIImage+ExtendedCacheData.m */; }; - E50613C67DD02AF6EA825DA0B31EFFAD /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = A4288DFF17DF27DEEB1590D7281FBBD7 /* SDImageGraphics.m */; }; - E55B3151D86660E28CEABC3CDE6B1508 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 77A510DEE4CCFDB66B19F133A209CDF3 /* UIButton+AFNetworking.m */; }; - E5B057BC87284367918B2DB9CA084B4E /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 55CB47F746B1E99E4F1E11247844A401 /* MJRefreshAutoGifFooter.m */; }; - E7520DAA65004368C61453B8A2740295 /* HWPanModalShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 883D06418312C016F973700D20558656 /* HWPanModalShadow.m */; }; - E76969F9B01139118427505B18F9CD21 /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E3EA9E3A659E147112B9E7A63EEC56 /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E7FEAB9F421F7EBAF021F792D8E9C4D6 /* LookinCustomDisplayItemInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B417F374DC024262C256083E5EB6F70 /* LookinCustomDisplayItemInfo.m */; }; - E82964ED7092CDCDAD08BC596A57B43A /* UIImage+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = E9004778D6831458C102A879DA83C285 /* UIImage+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E8AB529B9E0B4C23921344F6C4ABFEA4 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = A43798E6CE0478C1CA6ECFD6AE110593 /* SDImageCoder.m */; }; - E8BB439BCA39F3ED41FF185D6A61EA98 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 28D5D9D40BE7D9F76DB8A620D92D6F6C /* PrivacyInfo.xcprivacy */; }; - E930A5612DC6D120BE040AD17C6D1BCD /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 051A3BFDC2997068DD4E7A11FEBAE63E /* MASViewAttribute.m */; }; - E97B2C62D3EE772504A939BEE7D6B459 /* HWPanModalPresentationAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 93A142314C8E6BF405461AFD41E16D08 /* HWPanModalPresentationAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EA82B6D97C9C5D0558047AF552D63203 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B4B2DB5DB2A6C79E9C1A5ABA6070B58 /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DBD9152526A180771BF7D7CD209B957E /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD36233DB657DAA0ACBB8EEEAEB38EA /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DCCBFE0D3914D33369C19AC135AB54AA /* HWBackgroundConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = ACC63F439241C64C221C18A8991C569B /* HWBackgroundConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD7F63D4E4640C7386877BB787740272 /* LookinServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A98C5DE93CCDA0FE6E6A916B05B69DCC /* LookinServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDA16FB9C21AD941442357DAE6939530 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AD6EDFD2A6C9CC51CFC6A4BAA9C72A9 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDB268F1408C6AA5860C768310E9B9D6 /* LSTPopView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DBE3855004E17CACAC82F75DF8EFEBD4 /* LSTPopView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DE5A78F116018E2AC54714238276574D /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = FE8EB43019635F8DC34B96037E258505 /* UIActivityIndicatorView+AFNetworking.m */; }; + DE98ECCCA7106A4EA575EF34830D41FF /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D58A6363674921528AA6EC052D65C890 /* MJRefresh-dummy.m */; }; + DEA09692CF813A23899CD4949A9B6801 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 807026E96F55910EB566C0F4535DF3EB /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DED9ADFC8CC65243FC54E008A853742C /* MJPropertyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = C8B51A0410EE632DF42E1C298E25B221 /* MJPropertyKey.m */; }; + DF2B15402CE105F5A8CE48BBDCFFD5DD /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A94C1FE25186BE811E6EC878BFA019B /* MASConstraint.m */; }; + DF525E5405FAD3B98B0C2D966EB2DD95 /* UIViewController+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 920CD059C1364A6BD18420074E635F40 /* UIViewController+LookinServer.m */; }; + E038F02D08E33A673A360ED34648A027 /* JXCategoryDotCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BEB32B7BEE20F8A74F80D03511F02260 /* JXCategoryDotCell.m */; }; + E0B48B9D5D45AF3500FC718459D66E6C /* LookinDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = AFC299E1B60C8759EA1F35B7A91019A4 /* LookinDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E0BCF21E9FA59F638C13ECCECC4D9690 /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B7AD3647BEEBE4C691B28F5746D51E7D /* SDMemoryCache.m */; }; + E0DB14976CA6F6E604FD5E4EDF3378E7 /* JXPagerListContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BC6BE1672FC4A4AA70F4CBD7E23C808 /* JXPagerListContainerView.m */; }; + E1B4145C5201DB66B65520B36849067C /* HWPanModal-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EE80578D9DB416BD158323BE4D5C76F4 /* HWPanModal-dummy.m */; }; + E1BF615DD0422B06C97542F03C879D41 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B56A01456E5166288620482B2A2180C /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E1DE69F6BB6235A6EDB6C99A184BEDB4 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 433A3E0D94E768912FBBE36F7C961678 /* UIScrollView+MJExtension.m */; }; + E2DF1B379D9444D40D78320E90B1DC07 /* JXCategoryIndicatorLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CDFF5EFD0FE66B2DEECF2E904EBEC1 /* JXCategoryIndicatorLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E3FC6BEE41652C0500F57E0CB83B347F /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = A2309A5B4A1B9C14AF7AEDEC1036F76E /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E42D6EF120A5C17DA2F6FD6473CE7E7A /* JXCategoryTitleVerticalZoomCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6549E81907E05317DA862F329B2D4DDC /* JXCategoryTitleVerticalZoomCellModel.m */; }; + E4773572BED239AA7D618F1C05BAF51E /* HWPanModalPresentationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 82C5C527FD40FDC2434064E6DE931921 /* HWPanModalPresentationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4B688B8A0D07AFB883A52250CA874A1 /* JXCategoryNumberCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = F15C652E7FDB0BE287A551718B00B6A8 /* JXCategoryNumberCellModel.m */; }; + E4F1B478580D6D7328BC29607BDE46F6 /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = C1F534C5FFF39633128C9B99F1BBF1B5 /* UIImage+ExtendedCacheData.m */; }; + E50613C67DD02AF6EA825DA0B31EFFAD /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = 2504FFB7834ECCFC15329B28F3C9A331 /* SDImageGraphics.m */; }; + E516B5B11193439E020DD2A908700B79 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + E52DCE394A6E02B6BA11FA64624F68F3 /* JXCategoryIndicatorParamsModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E5F2B584A65C9246E3E8A7A856FF44D /* JXCategoryIndicatorParamsModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E55B3151D86660E28CEABC3CDE6B1508 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C519E29CD93815AEE0C119E2109F0A2 /* UIButton+AFNetworking.m */; }; + E5B057BC87284367918B2DB9CA084B4E /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D7FC4156E6779F82E6B8036FA7A1307 /* MJRefreshAutoGifFooter.m */; }; + E7520DAA65004368C61453B8A2740295 /* HWPanModalShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FD7A1D3C3D9D8E6D3476B7C2093A431 /* HWPanModalShadow.m */; }; + E76969F9B01139118427505B18F9CD21 /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F050843F5053FDD98D8FE72C1E28A5F /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E77175BDAE33AADF66766B28AA710247 /* JXPagerMainTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8087FD233990CE787D9977700977D0B8 /* JXPagerMainTableView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E7FEAB9F421F7EBAF021F792D8E9C4D6 /* LookinCustomDisplayItemInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0F258366D8ED06A7D9EAD3DFCD004E /* LookinCustomDisplayItemInfo.m */; }; + E82964ED7092CDCDAD08BC596A57B43A /* UIImage+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = DB3CBBCBF7B8B49A86FAC8D0A1741C77 /* UIImage+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E8AB529B9E0B4C23921344F6C4ABFEA4 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7E450C43D308EE4C1B879D0B60A4BF /* SDImageCoder.m */; }; + E930A5612DC6D120BE040AD17C6D1BCD /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = AAF02F3D4DFB903955A463298716DCE2 /* MASViewAttribute.m */; }; + E97B2C62D3EE772504A939BEE7D6B459 /* HWPanModalPresentationAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 552D2F14AF7B393E80A67680A66A34D4 /* HWPanModalPresentationAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EA82B6D97C9C5D0558047AF552D63203 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0013F9906622545E27B913F2092F22 /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; EABCB60A26B06BF576E50BBD2F89A385 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - EB3DF628891F7D6AB114718AF760CB2A /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 09060CD8F1658C398DC40CC0221DB178 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB646114ABEA7A4D6C2A724404778670 /* LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A8107C05A5879CBA4916F6AD4685D772 /* LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC8E84A8FFADDCA562A8608D141D9027 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 741395EF99DABB64E0E04129DB222FD2 /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC9B34262AED632D7EFB49804337648E /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = FE45E33A4A0C09CD0EBB222B7E40EE72 /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ECE64B732F9FA7C402DDEEC58DCB9D98 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B9528B0058E986186BACF5E7A40A742 /* SDImageAPNGCoder.m */; }; - ED8991A8AE7C04362C2BED3875DC1656 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = AFF39BEB58B97CA8F3DFDE7996909112 /* AFURLResponseSerialization.m */; }; - ED8F64FF98CFAE0B12CF60A1B0E6BAF8 /* SDCallbackQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FC0CB167AF5751B03431E60D722046F /* SDCallbackQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EDB9E11998290348E4DFB5140D678942 /* HWPanContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 802FB1A32618485AA28D17584662FBAF /* HWPanContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE6E8FE636D2C02E3D2FC1E8555B4612 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B25FB3699225E9D90B118E0F624383B /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EED016DE8173CD38CC01D88CD2628984 /* NSString+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = DA0B23D302091DCF531627DB2F06A5BA /* NSString+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EF6A6C725598F572A70C5FCEE328C184 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 524E9F65E894111FFD9563F30298E596 /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB3DF628891F7D6AB114718AF760CB2A /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E1682EACA92F366216BAB7320C375AA /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB646114ABEA7A4D6C2A724404778670 /* LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E80EA469F2079302F38A991886C4B5A /* LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC078D5CD76868BDE0F67BBEAFFEA217 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 1C37C8F103EDECD09126133069B80115 /* PrivacyInfo.xcprivacy */; }; + EC8E84A8FFADDCA562A8608D141D9027 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FAF0BE8296496D28F5C6AA6974B39E8 /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC9B34262AED632D7EFB49804337648E /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = 56642F6C221107F2F8D033758EEB482A /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC9B8D81AEAF11E16149869246F7D4C1 /* JXCategoryFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E9F380E4292210FA99A8F5918C667C3 /* JXCategoryFactory.m */; }; + ECC6BC85943DB873215826A344A462FD /* JXCategoryIndicatorBallView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A0C74EF09B54680C98CCBF1F2BD297A /* JXCategoryIndicatorBallView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ECE64B732F9FA7C402DDEEC58DCB9D98 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 92B0AD9AA2CE09EEB0EF8C040E103B97 /* SDImageAPNGCoder.m */; }; + ED8991A8AE7C04362C2BED3875DC1656 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F3CA71777F849F0196634A7AB215BDC /* AFURLResponseSerialization.m */; }; + ED8F64FF98CFAE0B12CF60A1B0E6BAF8 /* SDCallbackQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 491DFACE04BF80FD0F37C4ECFE908522 /* SDCallbackQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDB9E11998290348E4DFB5140D678942 /* HWPanContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB0E506E749384DE93170FA1EE1FD3B /* HWPanContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE101918DFCDC1D6728BF910DB5AF29A /* JXPagerView.m in Sources */ = {isa = PBXBuildFile; fileRef = D31BFB25B2F3620735E09AC6DE1CBFE3 /* JXPagerView.m */; }; + EE6E8FE636D2C02E3D2FC1E8555B4612 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 367DF77D41DE010B9FA86137928C7C44 /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EED016DE8173CD38CC01D88CD2628984 /* NSString+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = EE1A5661BE1EACFB3D2C7F19D51BF011 /* NSString+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EEF0BF7E53148EB20BED242061BDC5ED /* JXCategoryTitleVerticalZoomView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B4337532A4911F88E85BB14DE78FBB7 /* JXCategoryTitleVerticalZoomView.m */; }; + EF6A6C725598F572A70C5FCEE328C184 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 61080F57DD92AB8ABC811791B547090C /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; F1A04C26FAF235FD6B0AF30E7ACD5DD5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - F1D845E22D5B8FC6AFC3C2E41DA1B6DF /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A1CAA004ADB375344EE1C0A0FF7E804F /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2AD91050B1FE3C8BC78567F1FDE3ED5 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 201F7289F3B83B98F487EC194493B7F3 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2C9F9038FBEFD951516694AE873A2B9 /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = CD29BD8633F552915B08BF15C7E0DFFF /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F3263D294D688533EB974E37C61F1E24 /* MJExtensionConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BF099C561E70E7E4EDAC96628F02E58 /* MJExtensionConst.m */; }; - F3AECEF6D3BB919B3E7392942E1BC58B /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = AFFA5747833468A5901D8AA31E822627 /* MJRefreshBackFooter.m */; }; - F3DA1005917E252B306712DAAA287FB0 /* UIViewController+PanModalDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DDEE4190CA21B03ED83225BEC5FAC7D /* UIViewController+PanModalDefault.m */; }; - F3F4A6309BD95DFAA4DCC60A4E07C515 /* UITableView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = FF06402E5B9C49B794955B31F8067263 /* UITableView+LookinServer.m */; }; - F47EBDD360E642A0499A767BC7C17B4B /* HWPanIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 88E8C1FFE2A2D6CB9741EF2354A3B30E /* HWPanIndicatorView.m */; }; - F49CB22863CCFEC7817D259F27F91C57 /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = C657F16F9FE7919D2B27F05D611C2F2D /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F53BE4449AE5896F76325E4DCB6D0B13 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 023A9DE33A4A369492D910BE237BE415 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F600BB873FD4764BAA9E02826F804486 /* FLAnimatedImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 56083A8D73CF98D49960B5783A36797F /* FLAnimatedImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F60F90EAF35CFF40DF1C33557965787D /* MJRefreshStateTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = F83A870FD420501FBBA293B2D6A26AD0 /* MJRefreshStateTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F62B0711DA506CCB3DF79F65134566C7 /* Lookin_PTPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = CF38798B2D107B8F8B096B856DF98A24 /* Lookin_PTPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F68889CD481716EE5D6B75EBD8FD53A6 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = B0023999B588A745D2530760778D09F9 /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6A0D6EA1B5DC3FE04DC4A1B0A914121 /* UIView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EDC641564DA302B6FFCBFCFFFAC5BA7 /* UIView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6A2DEEA8E8B92D365AFDDBD5E8C1218 /* NSObject+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 85937FAC419CB28614ECAA70CE249673 /* NSObject+Lookin.m */; }; - F6A34F74BE7FE816114D7F3902296AF2 /* HWVisualEffectView.m in Sources */ = {isa = PBXBuildFile; fileRef = C15066DB017692FFB93D6BF3C34128D3 /* HWVisualEffectView.m */; }; - F6D1C960368EB1E067ABD0BFF707FC56 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FBE26B2A8BA76D5AA3E371D3CA2EAE6 /* MASConstraintMaker.m */; }; - F7623E7C314AA5010D8D0BD6ED4AAAD4 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = B1ABBFCC8D2F6B393D3F4389129E97F5 /* AFImageDownloader.m */; }; - F7815C2FBD9D954D0C2F3BF0BD6EB813 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = F4AF21DC4288D196E2F556338C3101AE /* PrivacyInfo.xcprivacy */; }; - F8616FAFEE1124368CB96473CE20CDB4 /* LookinAttrIdentifiers.m in Sources */ = {isa = PBXBuildFile; fileRef = CB96704A28B66FFCFA6B43392123348C /* LookinAttrIdentifiers.m */; }; - F8F1B1196CAA5114BA9A95AA7E6D6AEB /* UIBlurEffect+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 62ED382544D99079829F5E202E6E84A7 /* UIBlurEffect+LookinServer.m */; }; - F9789D86D3279D71B398B550F27C3EFF /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = ED1DD2A27A7141151DAB033BD707A1EF /* AFSecurityPolicy.m */; }; - FA3021DED76B9B182CC9195A60EB1209 /* NSBezierPath+SDRoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 63746C791045958FEE981F032ACCAECE /* NSBezierPath+SDRoundedCorners.m */; }; - FA6DA93357E2E9E9AADDFB3E39DEB6C2 /* NSObject+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 18C899184976415922E8F39B277C1766 /* NSObject+LookinServer.m */; }; + F1ABB5428A1CCF2EAC42A4C3B388F25D /* JXCategoryIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 658F3554D0CFB5BC5E252408F8CD5317 /* JXCategoryIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F1D845E22D5B8FC6AFC3C2E41DA1B6DF /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 60461DAD42E3B1F75AD82553A6C40C64 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2AD91050B1FE3C8BC78567F1FDE3ED5 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = BBB6E7BC9BF649910D7654B98B396BD4 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2C9F9038FBEFD951516694AE873A2B9 /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = A98C848E174628ED3A950CA220B4CB9A /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3263D294D688533EB974E37C61F1E24 /* MJExtensionConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 47A777C7602E23E11AE500103D52A253 /* MJExtensionConst.m */; }; + F3AECEF6D3BB919B3E7392942E1BC58B /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A5E3A2C0C49EB165C854762A832D48A /* MJRefreshBackFooter.m */; }; + F3DA1005917E252B306712DAAA287FB0 /* UIViewController+PanModalDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = 3474F65ACB0FE00EF732580936B91D06 /* UIViewController+PanModalDefault.m */; }; + F3F4A6309BD95DFAA4DCC60A4E07C515 /* UITableView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 95E2C10E638AC6421FE377F88DA72A45 /* UITableView+LookinServer.m */; }; + F43396B5CB23638E5509B3ED61AE6192 /* JXCategoryListContainerRTLCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C70C9B1AD0F41A4C5E9026F5AF7F65F /* JXCategoryListContainerRTLCell.m */; }; + F458385338076D8734DD74BE4A94B33F /* UIColor+JXAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = F904F7CF43AB518217FB1AB9236020D4 /* UIColor+JXAdd.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F47EBDD360E642A0499A767BC7C17B4B /* HWPanIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EF0D4A56B002AB1528A77EBDA7EC804 /* HWPanIndicatorView.m */; }; + F49CB22863CCFEC7817D259F27F91C57 /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = AD28EF542A0B7F210E7C92D1D9DEC003 /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F53BE4449AE5896F76325E4DCB6D0B13 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D744043462D81E4ED2BB1ECAE8E9F696 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F600BB873FD4764BAA9E02826F804486 /* FLAnimatedImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 87DD67829823038B4E0D04582C0CB95C /* FLAnimatedImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F60F90EAF35CFF40DF1C33557965787D /* MJRefreshStateTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 846CA0BB8166DB9008D71F59F4A301EA /* MJRefreshStateTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F62B0711DA506CCB3DF79F65134566C7 /* Lookin_PTPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DD8CB4B9EF9002F59BC7DE12F17ED7E /* Lookin_PTPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F68889CD481716EE5D6B75EBD8FD53A6 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = C7E392E347A9555F1447E0FBB3E777E5 /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6A0D6EA1B5DC3FE04DC4A1B0A914121 /* UIView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = DC82DAFD220FAA7899CE21078C2C649D /* UIView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6A2DEEA8E8B92D365AFDDBD5E8C1218 /* NSObject+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = D52171C8DB630868289299203B4ECD0C /* NSObject+Lookin.m */; }; + F6A34F74BE7FE816114D7F3902296AF2 /* HWVisualEffectView.m in Sources */ = {isa = PBXBuildFile; fileRef = DACDF6DBB7030D05CC43C7DB516265EE /* HWVisualEffectView.m */; }; + F6D1C960368EB1E067ABD0BFF707FC56 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = CDE98EE96840F02E6074E842D456A2E3 /* MASConstraintMaker.m */; }; + F7623E7C314AA5010D8D0BD6ED4AAAD4 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 25A773C46121E6091EEB9AC88DC4E2A2 /* AFImageDownloader.m */; }; + F847E3C26E5AC43CD73364AD3DF49AFE /* JXCategoryImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B7498A05A9D7A9FEE19E027CABE6B9DD /* JXCategoryImageCell.m */; }; + F8616FAFEE1124368CB96473CE20CDB4 /* LookinAttrIdentifiers.m in Sources */ = {isa = PBXBuildFile; fileRef = 41EF7420DD5FC6E4D1134632895868F3 /* LookinAttrIdentifiers.m */; }; + F8F1B1196CAA5114BA9A95AA7E6D6AEB /* UIBlurEffect+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 98EB3787337AAE5AD71D422A832D852F /* UIBlurEffect+LookinServer.m */; }; + F9789D86D3279D71B398B550F27C3EFF /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2458E327D6233EBA29A07B3E63113146 /* AFSecurityPolicy.m */; }; + FA3021DED76B9B182CC9195A60EB1209 /* NSBezierPath+SDRoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = C5A25B7B454717DB3993591B5E8B612E /* NSBezierPath+SDRoundedCorners.m */; }; + FA6DA93357E2E9E9AADDFB3E39DEB6C2 /* NSObject+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = C5719A8B6A945982F0856B5A616B379E /* NSObject+LookinServer.m */; }; FB6E014B34F33B89E5060DA1F00168A5 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */; }; - FC32143CA2A916F032F2B569313315AA /* HWPanContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = BFC6D8F98A0A99B4F62553DD6B2DE362 /* HWPanContainerView.m */; }; - FCDEC6A53CF5517E1AF5B331FD65F6D9 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9694A97A95DD31F14A6A155FCCFE7837 /* SDImageCacheConfig.m */; }; - FCEE5BD645E95FF55468C4AB6D17CFDA /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F6EA8BCC592FC8C87F6AB86D1783731 /* UIImageView+HighlightedWebCache.m */; }; - FD3AF10F8723DABEE406D25592B5F562 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81B71B9BB50BFCB7CBC2B6455296C14B /* FLAnimatedImageView.m */; }; - FDACBA49610EA6F39CABB7FE44B137D1 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = EF6748BE01C63A0BA85DC20DBF82AD80 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FC32143CA2A916F032F2B569313315AA /* HWPanContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2310AA8AAF9A85F5E639409B8AF0F292 /* HWPanContainerView.m */; }; + FCDEC6A53CF5517E1AF5B331FD65F6D9 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = AEB0E8A16F89DAA71F5718EDBF3E2A83 /* SDImageCacheConfig.m */; }; + FCEE5BD645E95FF55468C4AB6D17CFDA /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D5019FBBC4DC80F31FB68B1820A427 /* UIImageView+HighlightedWebCache.m */; }; + FD3AF10F8723DABEE406D25592B5F562 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = B4121F7B04BCCD0FB01ED16A27F6E571 /* FLAnimatedImageView.m */; }; + FDACBA49610EA6F39CABB7FE44B137D1 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = FA94CFBBBF3DC429BAF55FD9493336B4 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; FDD4C4D4F03502D5CB0B8763009A0948 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEE6097B6411333154FEF90A280E3E4 /* QuartzCore.framework */; }; - FE07C069C2E3543002CEB5D751ABA9AC /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDACCA592A0A0FC0428384009A75BD5 /* AFNetworkReachabilityManager.m */; }; - FEA8BA4F82CCBD1D28DCC7EF39FB4096 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = BDC5D95848173A06A25E49216A4BEFDC /* SDImageCacheDefine.m */; }; - FEE3D901B4A4638F9E00935144E982B3 /* HWPanModalPresentableHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = B876DE6F099D679F03040B8EF24E5C82 /* HWPanModalPresentableHandler.m */; }; - FEE883575278D5BE8F185437AB5DB3BB /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 820CCFAA740875554C05F59A0958E53B /* MJRefreshGifHeader.m */; }; - FF106518AFECA24E74B1D649E4F9AC70 /* HWPanIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 03CB4C12A5B494B4ECDEC92BC32E7490 /* HWPanIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FFC6D50089FA32FD7AAF25747E56EA60 /* LKS_CustomAttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BC0E1D78C95F4CC731325A284A8FC80 /* LKS_CustomAttrGroupsMaker.m */; }; + FE07C069C2E3543002CEB5D751ABA9AC /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 81D1103F43F39D4BF9AE80E76478FA69 /* AFNetworkReachabilityManager.m */; }; + FEA8BA4F82CCBD1D28DCC7EF39FB4096 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DB3789FF1142F1817E52B4F6C9BA1B6 /* SDImageCacheDefine.m */; }; + FEE3D901B4A4638F9E00935144E982B3 /* HWPanModalPresentableHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = B8E404753BE7BE627A458AE982427654 /* HWPanModalPresentableHandler.m */; }; + FEE883575278D5BE8F185437AB5DB3BB /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = A1E84842FBF29954156976CB6DD0F275 /* MJRefreshGifHeader.m */; }; + FF106518AFECA24E74B1D649E4F9AC70 /* HWPanIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DE32E1B12FEE2A9EAE1F5A67697D6E8 /* HWPanIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FFC6D50089FA32FD7AAF25747E56EA60 /* LKS_CustomAttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CF7F647B9D3AA2FB234C1CC5BB53582 /* LKS_CustomAttrGroupsMaker.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 01F386055DA043124AA00537EC691754 /* PBXContainerItemProxy */ = { + 0A1A465C500FD28324C60FF2111766F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8B7D23DD98E41BAE91418E9E85F191D6; remoteInfo = LSTPopView; }; - 02DDA276267B945D512FC6AF69590E37 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; - remoteInfo = MJExtension; - }; - 077F2AA4B2BF11943204812B533088F5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; - remoteInfo = AFNetworking; - }; - 1B50A2D51242B1B501E7A8FE17921A95 /* PBXContainerItemProxy */ = { + 0CEF032AE3DE8459AABC366D5EAD57AC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; remoteInfo = LSTTimer; }; - 1C0C3A0BDFA6BDE041DC3D513C5650B3 /* PBXContainerItemProxy */ = { + 2635D33260052793F7319FAC3997C416 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; + remoteInfo = LSTTimer; + }; + 36EAD987437C03F015C383238BF3C1B7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; + remoteInfo = DZNEmptyDataSet; + }; + 398B300FAF20E4012B54089285C6D68D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; + }; + 39F2619DE86130266FA45394FE5C260D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; + }; + 4262F1710F9698DFC113026BA2E31021 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4A68CFD979D413A619DF631BB121D98F; remoteInfo = Bugly; }; - 2307258CB6BB82D24A7CA6B7975B1292 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 94CFBA7D633ECA58DF85C327B035E6A3; - remoteInfo = "SDWebImage-SDWebImage"; - }; - 2F4CEC846087978E04621E966B9DFF49 /* PBXContainerItemProxy */ = { + 4E0DD9B103CA9ED24B513A6147DEDB93 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; remoteInfo = MJExtension; }; - 5ABBB136A0AE8EE61D30E75F4BE8572E /* PBXContainerItemProxy */ = { + 648F8AAC5DF3351FEF10F1C29B3E11DF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 31DCABABCA873FBA7A92FEB47D71ED8E; - remoteInfo = HWPanModal; + remoteGlobalIDString = 8BEAFAA726C1965864B79B4B441AA513; + remoteInfo = JXCategoryView; }; - 5ECDD709038035A28044669BFFE06267 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; - remoteInfo = DZNEmptyDataSet; - }; - 5F98F8D71CDA25588EE186F7253F367F /* PBXContainerItemProxy */ = { + 686994C0035F8FADAF6A6C4E910239B2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; remoteInfo = MBProgressHUD; }; - 7FA3D0787FAE50268674AAEE62D45295 /* PBXContainerItemProxy */ = { + 6DB0C5460735B353E7FB2A7058DEB8F3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; - remoteInfo = AFNetworking; + remoteGlobalIDString = C4E1020AF425614337737213AA26DBD5; + remoteInfo = JXPagingView; }; - 80217EE617C295C4C81AA1DCF5D85E7E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B32AF3F43989CBA171BB1FB3957A4509; - remoteInfo = "MJExtension-MJExtension"; - }; - 92CA63B3B20D5FAC965226A6920F1BE4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 638FEAAFC575BB76BC6AC055CDDA3506; - remoteInfo = LookinServer; - }; - 95E55F6C03A77816AFA1A59466D8CD82 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; - remoteInfo = MJRefresh; - }; - 9946EDF6CEC75931EE3BCF2D4DC70585 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B26054DF1DEA11585A231AF6D1D80D5E; - remoteInfo = "MJRefresh-MJRefresh.Privacy"; - }; - 9F4B8D116BF04BD4F5A8C8D781DA5D62 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; - remoteInfo = Masonry; - }; - B12FC64FF473558C45076A0CEB7D47D1 /* PBXContainerItemProxy */ = { + 6FA747ECA11691BE7229C287223E399A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; remoteInfo = DZNEmptyDataSet; }; - B57744F595F66358CF4816DD4793C8A6 /* PBXContainerItemProxy */ = { + 79523FDE8CA807F68BC7DF678B3199B5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4A8E8992707D01510894596DB9BCCA00; - remoteInfo = FLAnimatedImage; + remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; + remoteInfo = MJExtension; }; - BDE883F6A985897AA115496E325146FA /* PBXContainerItemProxy */ = { + 7B014B80CCB8DDBC4906B5D8D3002093 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; - remoteInfo = MBProgressHUD; + remoteGlobalIDString = E79E29F55A2453370D27112480FCF6A2; + remoteInfo = "JXCategoryView-JXCategoryView"; }; - DE9FD566A2ADE13D0844AD68D51F7EAF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; - remoteInfo = Masonry; - }; - EC0084E5D95CC67D69BF4291415A7EE1 /* PBXContainerItemProxy */ = { + 803F302DC5C2EA85B4CBBDCD27A43286 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; remoteInfo = SDWebImage; }; - FBA8C5046E304FE4BB90D14C4A529288 /* PBXContainerItemProxy */ = { + 9E88A4DD9EF59B6718F28ECC701DF551 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; - remoteInfo = LSTTimer; + remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; + remoteInfo = MJRefresh; + }; + AE8D5D579627FAFF8F43B7CEFE066FF2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 638FEAAFC575BB76BC6AC055CDDA3506; + remoteInfo = LookinServer; + }; + B296FC77430103DDB971813228C8D4EF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 94CFBA7D633ECA58DF85C327B035E6A3; + remoteInfo = "SDWebImage-SDWebImage"; + }; + C279C7A3A264FD3391C8C73B80D3A426 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B26054DF1DEA11585A231AF6D1D80D5E; + remoteInfo = "MJRefresh-MJRefresh.Privacy"; + }; + C389A17163C51915594BC17BC8BF9DE0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 16704C6B67439DA959DB043702C75A7A; + remoteInfo = "JXPagingView-JXPagerView"; + }; + CE0514BD8BDC97E49F2A38CD065EDCFC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4A8E8992707D01510894596DB9BCCA00; + remoteInfo = FLAnimatedImage; + }; + D89A563DA511A2A01EFDD5299EBCEE42 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B32AF3F43989CBA171BB1FB3957A4509; + remoteInfo = "MJExtension-MJExtension"; + }; + DB3A9F97FFF5759DFB4E243D0C12B290 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 31DCABABCA873FBA7A92FEB47D71ED8E; + remoteInfo = HWPanModal; + }; + EF1EC9615D03559D465834BE2D7F527F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; + }; + F121CDAC85A6DCADB4F82D081323C7C5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; + }; + F9F28B72CAD6F7E15F267C3F8D685EA8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; + remoteInfo = MBProgressHUD; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0004D14E99E5CD92EA09732F82694FF5 /* HWPanModalPresentationAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationAnimator.m; path = Sources/Animator/HWPanModalPresentationAnimator.m; sourceTree = ""; }; - 0041D895443AAAA3D1BCD4056EBB4F37 /* UIViewController+LayoutHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LayoutHelper.m"; path = "Sources/Presentable/UIViewController+LayoutHelper.m"; sourceTree = ""; }; - 00F09038ADB7D3ACE57173DD781066A5 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; - 0175DE132412321B3302CBE48CE0F712 /* LookinAutoLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAutoLayoutConstraint.m; path = Src/Main/Shared/LookinAutoLayoutConstraint.m; sourceTree = ""; }; - 01B6539E05000228B7BBD9BA57EDF5E3 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; - 01CCBFAC5118E8E6A44DA067EF8F2523 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; - 023A9DE33A4A369492D910BE237BE415 /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; - 02B660DF025FBF070A8248624E25ED79 /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; - 03BAE9F573ECB0A822C6757CBF10AB0E /* LookinConnectionAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionAttachment.m; path = Src/Main/Shared/LookinConnectionAttachment.m; sourceTree = ""; }; - 03CB4C12A5B494B4ECDEC92BC32E7490 /* HWPanIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanIndicatorView.h; path = Sources/View/HWPanIndicatorView.h; sourceTree = ""; }; - 03D72CC56F0CB2FCCB14E1335C16D41B /* MBProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MBProgressHUD.modulemap; sourceTree = ""; }; - 04A09AD12EF8C816FA9546838C3F429E /* Masonry.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.debug.xcconfig; sourceTree = ""; }; - 04A251837ED47D22FF5ACBFA97F91D4A /* LKS_TraceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_TraceManager.m; path = Src/Main/Server/Others/LKS_TraceManager.m; sourceTree = ""; }; - 04D3C87C11221ADDA77670ED0731D145 /* LKS_CustomAttrSetterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrSetterManager.m; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.m; sourceTree = ""; }; - 04FCA007C5BE63FC5541B26878E3DE79 /* HWPanModal.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HWPanModal.modulemap; sourceTree = ""; }; - 051A3BFDC2997068DD4E7A11FEBAE63E /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; - 0531DC0648DD160A9576D09368C28017 /* LookinAttributesSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesSection.m; path = Src/Main/Shared/LookinAttributesSection.m; sourceTree = ""; }; - 057F1DBD0EB25FF8CA833DC6F478BF32 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; - 05E1785189AB18B6B47ECD584144AA0F /* KeyValueObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KeyValueObserver.m; path = Sources/KVO/KeyValueObserver.m; sourceTree = ""; }; - 069FA883A4FACC46317AB2BE1BDE30E4 /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; - 074925B1189A88BAA6297431490B8041 /* LookinAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttribute.h; path = Src/Main/Shared/LookinAttribute.h; sourceTree = ""; }; - 07752F7C2A34B933346F7E8E9D95461C /* NSObject+MJKeyValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJKeyValue.h"; path = "MJExtension/NSObject+MJKeyValue.h"; sourceTree = ""; }; - 086D3945C39C8554602424E64D1A9F0B /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; - 0874A58BB3E268A75B1BD3D594CBAA2D /* LSTPopView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.debug.xcconfig; sourceTree = ""; }; - 09060CD8F1658C398DC40CC0221DB178 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; - 090BA40A2CB6D8D73A78895D821E7E93 /* Bugly.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.release.xcconfig; sourceTree = ""; }; - 093706FD3573E105CD2368D496C2DF76 /* HWPanModalPresenterProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresenterProtocol.h; path = Sources/Presenter/HWPanModalPresenterProtocol.h; sourceTree = ""; }; - 0AE63A9BC3D50E34C84263A87F782ACA /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; + 00B67A73E7EE0522188FAE4145324D19 /* JXCategoryTitleCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleCell.h; path = Sources/Title/JXCategoryTitleCell.h; sourceTree = ""; }; + 015571B1499F434BC7171DE7EA094577 /* UILabel+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+LookinServer.h"; path = "Src/Main/Server/Category/UILabel+LookinServer.h"; sourceTree = ""; }; + 017032FDD415E1762246EBCDD2228351 /* HWDimmedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWDimmedView.h; path = Sources/View/HWDimmedView.h; sourceTree = ""; }; + 0210A2376F4634FAF99E871533D6AD1C /* LSTTimer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTTimer.modulemap; sourceTree = ""; }; + 02986FE530B6F5FD0ABF721900839DA5 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; + 029DB3501B51C5C14FA8EC0A89559639 /* LKS_GestureTargetActionsSearcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_GestureTargetActionsSearcher.h; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.h; sourceTree = ""; }; + 02E945EEF3757BDF2B47E65C51C4D6D6 /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; + 035807D7A9181D8E0DF6FAF1E2D6B33C /* MBProgressHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.release.xcconfig; sourceTree = ""; }; + 039AC3B9A6AA2BDAB5EB71E7A54C1EF5 /* HWPanModalShadow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalShadow.h; path = Sources/View/HWPanModalShadow.h; sourceTree = ""; }; + 04A50C0A5F4CA1B3AF632BFE12460FC6 /* MJExtensionConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtensionConst.h; path = MJExtension/MJExtensionConst.h; sourceTree = ""; }; + 04A5DA1EDA3B5149D813E6B1D2B5ADDD /* MJExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.release.xcconfig; sourceTree = ""; }; + 04AE87BD26EBAF13B558201544C0E822 /* JXCategoryTitleImageCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleImageCellModel.m; path = Sources/TitleImage/JXCategoryTitleImageCellModel.m; sourceTree = ""; }; + 057CD48F09C7A5468D77A9691A639803 /* JXCategoryTitleCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleCell.m; path = Sources/Title/JXCategoryTitleCell.m; sourceTree = ""; }; + 059C3C014AA92686FDCE895211A108CE /* JXCategoryTitleVerticalZoomView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleVerticalZoomView.h; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.h; sourceTree = ""; }; + 05B3B08A0927761DC2CBA02E9412CD21 /* LookinObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinObject.m; path = Src/Main/Shared/LookinObject.m; sourceTree = ""; }; + 06077AACB035D8452C9F730B2E1F00DF /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; + 06A633B376D525417B93138405029540 /* LookinCustomAttrModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomAttrModification.h; path = Src/Main/Shared/LookinCustomAttrModification.h; sourceTree = ""; }; + 06AB57BB46CC82FE3257276649BAF8EA /* NSString+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Lookin.h"; path = "Src/Main/Shared/Category/NSString+Lookin.h"; sourceTree = ""; }; + 06BE908D1EBE4269ACB69B26DE9B834E /* LKS_MultiplatformAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_MultiplatformAdapter.h; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.h; sourceTree = ""; }; + 06EFD395C240E38E2ED0DCAF40CE73FC /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; + 0A19BDA4E648916460C20489D6D183F0 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; + 0A5E3A2C0C49EB165C854762A832D48A /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; + 0A7095DB3527991440F374C9F9DB5050 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; + 0A8F3B5ED5052E8AFF569E50436DC3C0 /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; + 0B08ADE1A4FFE94FDBBE13FE7CC2C1E5 /* JXCategoryBaseCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryBaseCell.m; path = Sources/Base/JXCategoryBaseCell.m; sourceTree = ""; }; + 0B0EEEE5F23AC446F4729522F4FC7A73 /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; }; + 0B18274068E3388B3808CDDEB810ECFA /* MJRefresh.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.debug.xcconfig; sourceTree = ""; }; + 0B1D41519ED222707112BD66393CC6B2 /* LookinObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinObject.h; path = Src/Main/Shared/LookinObject.h; sourceTree = ""; }; + 0B35D70EDD8A3E56FE6F0E6934A400CC /* LookinAttributeModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributeModification.m; path = Src/Main/Shared/LookinAttributeModification.m; sourceTree = ""; }; 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-CustomKeyboard"; path = Pods_CustomKeyboard.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0BF099C561E70E7E4EDAC96628F02E58 /* MJExtensionConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJExtensionConst.m; path = MJExtension/MJExtensionConst.m; sourceTree = ""; }; + 0BE68C7303DE07C8DA01573CDDE9003F /* HWPanModalInteractiveAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalInteractiveAnimator.m; path = Sources/Animator/HWPanModalInteractiveAnimator.m; sourceTree = ""; }; 0C4AE62ED97252893F28F670D61AFB24 /* Pods-keyBoard-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-keyBoard-Info.plist"; sourceTree = ""; }; - 0C895614137416E86433C8E5EAF1D3CD /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; - 0CCA79288E187B2D3860B6A703D2D460 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; - 0CE9728E85B8432ED072CD0DC7926F20 /* UIView+LSTPV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LSTPV.m"; path = "LSTPopView/Classes/Code/UIView+LSTPV.m"; sourceTree = ""; }; - 0D53461EC25E2C6DAE3F3C2ABD951A2B /* LKSConfigManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKSConfigManager.h; path = Src/Main/Server/Others/LKSConfigManager.h; sourceTree = ""; }; + 0C9F5466A18204DE825F30433C784EDB /* MJFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJFoundation.h; path = MJExtension/MJFoundation.h; sourceTree = ""; }; 0D6215D1BCCE125B8DF73E38013CBBDC /* Pods-CustomKeyboard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CustomKeyboard.debug.xcconfig"; sourceTree = ""; }; - 0DDEE4190CA21B03ED83225BEC5FAC7D /* UIViewController+PanModalDefault.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalDefault.m"; path = "Sources/Presentable/UIViewController+PanModalDefault.m"; sourceTree = ""; }; - 0E350DE3AE3DE0F5FC5BD9A2EB159387 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; - 0E376CA03D27B523F7F180B9EC99BD7C /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; - 0E5F47A6ED542F1D0EAA4DD94091B61C /* HWPanModalContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContentView.h; path = Sources/View/PanModal/HWPanModalContentView.h; sourceTree = ""; }; + 0D8B581D78D02F65425434F924BB64B3 /* LookinHierarchyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyInfo.m; path = Src/Main/Shared/LookinHierarchyInfo.m; sourceTree = ""; }; + 0E2875C79F8461486A975B000C1ABDE3 /* JXCategoryImageCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryImageCell.h; path = Sources/Image/JXCategoryImageCell.h; sourceTree = ""; }; 0E732C0D026ACBC7DBD039DC3BDC2BCE /* Pods-keyBoard.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-keyBoard.modulemap"; sourceTree = ""; }; - 0E7B3F97FDF9522DB3E4FADD3DB88700 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; - 0EE4E19A07BCCCF8BDCE77F2A5966D55 /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; - 0F067A700BA9565969A60D7617155FBC /* LSTTimer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTTimer.m; path = LSTTimer/Classes/LSTTimer.m; sourceTree = ""; }; - 107D93AEC1E186A8F21341BFB523B22C /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; - 107E86B9F22190515234220978E5F1C3 /* MJExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.release.xcconfig; sourceTree = ""; }; - 109CFCE9774385E51695E82E530412B8 /* UIView+HW_Frame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+HW_Frame.m"; path = "Sources/Category/UIView+HW_Frame.m"; sourceTree = ""; }; - 10A8507648AC9DE21CFA0929B1ED0404 /* HWPanModalInteractiveAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalInteractiveAnimator.h; path = Sources/Animator/HWPanModalInteractiveAnimator.h; sourceTree = ""; }; - 10D1C021B7050EF6841A364EE9A0A570 /* HWDimmedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWDimmedView.m; path = Sources/View/HWDimmedView.m; sourceTree = ""; }; - 110C7A39306E93E5D29F1709FE16720F /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; - 119E6680DBF287ACAD4F054AA0D5AE17 /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; - 11A5C3D2E3080F2A5EECFB7F1FC6C319 /* HWBackgroundConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWBackgroundConfig.m; path = Sources/View/HWBackgroundConfig.m; sourceTree = ""; }; - 13066DF230EEB3642E5BD7E5097A64F9 /* HWPanModal-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HWPanModal-dummy.m"; sourceTree = ""; }; - 13527772A4A54A71A31658A3E36E2474 /* LKS_RequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_RequestHandler.m; path = Src/Main/Server/Connection/LKS_RequestHandler.m; sourceTree = ""; }; - 140B9E97F5B5BEB056AA3A4DFFA9891B /* LookinDashboardBlueprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDashboardBlueprint.h; path = Src/Main/Shared/LookinDashboardBlueprint.h; sourceTree = ""; }; - 141D1CCF79DF1688C14B5C5A4CACC6E0 /* Peertalk.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Peertalk.h; path = Src/Main/Shared/Peertalk/Peertalk.h; sourceTree = ""; }; - 14454326E9CB6046C0CA3ABA3A33F187 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; - 1458CC53A93F0D10D4564ECD3E1C2D28 /* SDWebImageTransitionInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransitionInternal.h; path = SDWebImage/Private/SDWebImageTransitionInternal.h; sourceTree = ""; }; - 16276D593D3F4D227902AF3A1424A4AC /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; - 165D33815F330DB72870682C820A790B /* HWPanModalPresentationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationDelegate.h; path = Sources/Delegate/HWPanModalPresentationDelegate.h; sourceTree = ""; }; - 16A00EF4CD873ABB9D94776FACC7C92F /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; - 17E50DA329E2F435CC41C2257BD0C866 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; - 17FD1B21DCC89D66865655294A85A817 /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; - 18C899184976415922E8F39B277C1766 /* NSObject+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+LookinServer.m"; path = "Src/Main/Server/Category/NSObject+LookinServer.m"; sourceTree = ""; }; - 1998A1E21783C0F00F27637B63C88F21 /* UIColor+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+LookinServer.m"; path = "Src/Main/Server/Category/UIColor+LookinServer.m"; sourceTree = ""; }; - 19D6F69255AF25D760BE89366830A6F7 /* Color+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Color+Lookin.m"; path = "Src/Main/Shared/Category/Color+Lookin.m"; sourceTree = ""; }; - 1A370DF72E817BB512D9A327AC45F76B /* LookinHierarchyFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyFile.m; path = Src/Main/Shared/LookinHierarchyFile.m; sourceTree = ""; }; - 1ADF5834236B788D4ADA4E85DBD68395 /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; - 1B2F034522C4ACEB56FB7ECF5D3CDFDB /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; - 1B4B2DB5DB2A6C79E9C1A5ABA6070B58 /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; - 1B77702D1A0EF9DC4542AD40D9D3062E /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; - 1CF307ACF82B2962F9E48DD0D029690F /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; - 1D13B75999F5A8EF9D0BABA6DAF09179 /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; - 1D36CFCB34B6B2FF494AB70EC5024CFA /* UIViewController+Presentation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+Presentation.m"; path = "Sources/Presentable/UIViewController+Presentation.m"; sourceTree = ""; }; + 0E752820782AF474A360AC65F5EFA79D /* RTLManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RTLManager.h; path = Sources/RLTManager/RTLManager.h; sourceTree = ""; }; + 0E90E49C067121A7254AE81E49E663A2 /* JXPagingView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXPagingView-prefix.pch"; sourceTree = ""; }; + 0F050843F5053FDD98D8FE72C1E28A5F /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; + 0FABDACBA6BA6926D5F19E502E77474E /* MBProgressHUD-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MBProgressHUD-Info.plist"; sourceTree = ""; }; + 102C92CE02746A6588B44F852322AB39 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; + 109DC293F90D678E22D453F41A197049 /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; + 10B904BAC9CC3925EE6B4E2130826A6F /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = ""; }; + 119B8F0EF70910D693FCCA816529E357 /* JXPagerMainTableView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerMainTableView.m; path = Sources/JXPagerView/JXPagerMainTableView.m; sourceTree = ""; }; + 119F71892BB85FDC29B99AE148231087 /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; + 11EEC0D59FA31FAAD209A208EB338575 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; + 12142FAAA1C74097D8F4441EAD4066E1 /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; + 123714F0F2335CBE901933785D4D26FB /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; + 1278AB0B776862F23D89B7E8596E3598 /* LKS_TraceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_TraceManager.h; path = Src/Main/Server/Others/LKS_TraceManager.h; sourceTree = ""; }; + 1325B9E2F97C77F3E9191898C4045E7E /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; + 1326C5B7B2B67B2A6E9A785F1ECEA87F /* MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJProperty.h; path = MJExtension/MJProperty.h; sourceTree = ""; }; + 137AD002D5B6FA89785842F03034A5B1 /* UIColor+JXAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+JXAdd.m"; path = "Sources/Common/UIColor+JXAdd.m"; sourceTree = ""; }; + 137E45FE90DEED579DF255BB11ADABF4 /* LKS_CustomAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.h; sourceTree = ""; }; + 13B6B935F583A1ED5234B7E3DF044521 /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; + 13B82D87F3DD4A8EB4C508E0BFA04090 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; + 13D84A2503CDD440D0A0063FF97A2EB4 /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; + 156CBD2266287775279363430A374818 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; + 15D78A0355CAA0B846DBC1DAC7B101F4 /* HWPanModalPresentationAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationAnimator.m; path = Sources/Animator/HWPanModalPresentationAnimator.m; sourceTree = ""; }; + 15D9AA9876374637F32E00BE13AA1880 /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; + 15E765BB9B77EA9AC2800F30D2802C1C /* LKS_RequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_RequestHandler.m; path = Src/Main/Server/Connection/LKS_RequestHandler.m; sourceTree = ""; }; + 16464E573FCB8AFF2E7DB58E7A507D73 /* LookinWeakContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinWeakContainer.m; path = Src/Main/Shared/LookinWeakContainer.m; sourceTree = ""; }; + 167D63F7114C5D501803C08C617324CA /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; + 16E6E00D729B1498CE18200F50778930 /* LookinHierarchyFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyFile.m; path = Src/Main/Shared/LookinHierarchyFile.m; sourceTree = ""; }; + 1711B81346B8ED1944B5A8A478A4CF3F /* JXCategoryIndicatorLineView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorLineView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.m; sourceTree = ""; }; + 173BFB44F7DA63CD3AF5A497970B8203 /* JXCategoryBaseView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseView.h; path = Sources/Base/JXCategoryBaseView.h; sourceTree = ""; }; + 17CD950341D8F0132ADFEDC39B7267A7 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; + 17D9582F158C09F75D84ECE893151E91 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; + 17DDB1AC9EC1929E6B6DFC0CFA9D927D /* LKSConfigManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKSConfigManager.m; path = Src/Main/Server/Others/LKSConfigManager.m; sourceTree = ""; }; + 17FBA36FB2D4DFAA4437CEE5C69F4BBE /* Image+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Image+Lookin.h"; path = "Src/Main/Shared/Category/Image+Lookin.h"; sourceTree = ""; }; + 187A3F425AA5E5A93F8784E11F9E28CF /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJRefresh/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 195B648C25562B52954B1E7C1D8964C3 /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; + 195F1795B17C3F026E46BBEF64C1EA67 /* HWPanModalPresentationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationController.h; path = Sources/Controller/HWPanModalPresentationController.h; sourceTree = ""; }; + 19AE4F199F0E794B9F2956EE4530887A /* MJExtension.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJExtension.modulemap; sourceTree = ""; }; + 1A08646B05BD58116699CDFD07CA2977 /* JXCategoryBaseCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseCell.h; path = Sources/Base/JXCategoryBaseCell.h; sourceTree = ""; }; + 1A1600286757D192233397A2BF1A2371 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; + 1A2B6D97C6E9B5572232985B40BDA6C4 /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; + 1B8FD707DDEC1F98F5C5FE19647F0592 /* JXCategoryNumberCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryNumberCell.m; path = Sources/Number/JXCategoryNumberCell.m; sourceTree = ""; }; + 1BABE1F324CED82D14350741682D422B /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; + 1C21A04AB85F6948BCB44480387E46C5 /* LKS_EventHandlerMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_EventHandlerMaker.m; path = Src/Main/Server/Others/LKS_EventHandlerMaker.m; sourceTree = ""; }; + 1C37C8F103EDECD09126133069B80115 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJExtension/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 1C4B5B00D7224F098F6B2FE0962E5086 /* LKS_AttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.m; sourceTree = ""; }; + 1D56371580E6496005BC9D35C2C49570 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; 1D774D8146EBC82B4A77204A273761B8 /* Pods-CustomKeyboard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CustomKeyboard.release.xcconfig"; sourceTree = ""; }; - 1D9DDC30D49B9BC3DFA8D9BC83722C14 /* LKS_GestureTargetActionsSearcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_GestureTargetActionsSearcher.h; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.h; sourceTree = ""; }; - 1DBD3AB6DB93D7C2BE4FB5D89E1938FD /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; - 1E115C24A1085A18B17DA1956923425C /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; - 1EFEA57CFC8959BF5EF4B795BD808107 /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; - 1EFF087B37DC1EFC63580C904061AC41 /* LSTPopView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopView.h; path = LSTPopView/Classes/Code/LSTPopView.h; sourceTree = ""; }; - 1FABA21668D0F7EA5314EF00C93346A5 /* DZNEmptyDataSet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.release.xcconfig; sourceTree = ""; }; - 1FABCE7CC795C2D70EA3AAEE06EDD595 /* DZNEmptyDataSet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.debug.xcconfig; sourceTree = ""; }; + 1E17CF24E4278604BB723E30B9997957 /* JXCategoryIndicatorTriangleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorTriangleView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.m; sourceTree = ""; }; + 1E7F18004D9337D64F0F606975492DF4 /* LookinDisplayItemDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItemDetail.h; path = Src/Main/Shared/LookinDisplayItemDetail.h; sourceTree = ""; }; + 1FBD8AFE7FA55EAB140791EC34C18CD4 /* LKS_MultiplatformAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_MultiplatformAdapter.m; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.m; sourceTree = ""; }; + 1FCD0CB41F1E259546B6F8A9BFF05378 /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; + 1FFD17C3FF6DE53EF72736C597DF5B82 /* LookinAutoLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAutoLayoutConstraint.h; path = Src/Main/Shared/LookinAutoLayoutConstraint.h; sourceTree = ""; }; 1FFED36A657123030ABB700256D73F15 /* Masonry */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Masonry; path = Masonry.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2019C0149E4FA95B56F04C424C11298A /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; - 201F7289F3B83B98F487EC194493B7F3 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; - 20466880B35C5065EE68BED96801035F /* LKS_ObjectRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ObjectRegistry.m; path = Src/Main/Server/Others/LKS_ObjectRegistry.m; sourceTree = ""; }; - 20C42B1A5A080256AC39DD86D000ACD5 /* LookinTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinTuple.m; path = Src/Main/Shared/LookinTuple.m; sourceTree = ""; }; - 20E25456C8490BA5725AE87E9508AF07 /* SDCallbackQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDCallbackQueue.m; path = SDWebImage/Core/SDCallbackQueue.m; sourceTree = ""; }; - 218908923AE7877657207C72921D322E /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; - 2262EDBC98A2795DB2EE27FB7D953E2C /* LKS_Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_Helper.h; path = Src/Main/Server/Others/LKS_Helper.h; sourceTree = ""; }; - 2288D70D4609F065E784F156F613AB62 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; - 230DC3B27944D3472C6A06DA7EEAF194 /* Lookin_PTChannel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTChannel.m; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.m; sourceTree = ""; }; - 2334F40DFDB1BAD377A3B71EE761F938 /* HWPanModal-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "HWPanModal-Info.plist"; sourceTree = ""; }; - 23518377A93659DE7C8E586309E28896 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; - 237D10385C2D9391B809DFD74B21A570 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; - 244BBBE37C5D845F2BB8EAFBE6D12DE5 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; - 2520B86D707FEED91E8300C772989308 /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; - 25283803DB6704A7DFB24BD626A74C6E /* LookinAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttribute.m; path = Src/Main/Shared/LookinAttribute.m; sourceTree = ""; }; + 201E2681B892F05C3D7CAFE9E9927D15 /* UIViewController+Presentation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+Presentation.h"; path = "Sources/Presentable/UIViewController+Presentation.h"; sourceTree = ""; }; + 202D2DE7A9C3209A4BF4D407CF1AB06A /* JXCategoryTitleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleView.m; path = Sources/Title/JXCategoryTitleView.m; sourceTree = ""; }; + 20BCC481544CBBCE47AC61F792449041 /* MBProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MBProgressHUD.modulemap; sourceTree = ""; }; + 21199D87A8FB4561900F6BC425147989 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; + 2132EF8C73164960BCAFD57CF9C7A53F /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; + 21696AB985A15DE2C63BD9A8CD978F59 /* LKS_HierarchyDetailsHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDetailsHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.h; sourceTree = ""; }; + 21C74D93A3238750FF610EABE13EB50F /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; + 21E66554273E5793F0BC4D1CD5A058CD /* WKWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "WKWebView+AFNetworking.h"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.h"; sourceTree = ""; }; + 2219CD4B41E42AA4B9864251F1CFEF59 /* LSTPopView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTPopView-Info.plist"; sourceTree = ""; }; + 2252400966339192E785E1533182460B /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; + 22613DFB1026F3E41B141E34C637D600 /* UIScrollView+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+Helper.h"; path = "Sources/Category/UIScrollView+Helper.h"; sourceTree = ""; }; + 230F8C4FD68EA2D95EA48F31DA295CE9 /* LKS_CustomDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.h; sourceTree = ""; }; + 2310AA8AAF9A85F5E639409B8AF0F292 /* HWPanContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanContainerView.m; path = Sources/View/HWPanContainerView.m; sourceTree = ""; }; + 231F7AC591603501EC449D697A5C6668 /* JXCategoryView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = JXCategoryView.modulemap; sourceTree = ""; }; + 23648E3B16301958DD4429C021EB223C /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; + 239F725CB21A7ABF0EDB35FC92732A5C /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; + 23A344AF55814873B0105902E9FBBB2A /* UIViewController+LayoutHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LayoutHelper.h"; path = "Sources/Presentable/UIViewController+LayoutHelper.h"; sourceTree = ""; }; + 23FBEE27BD56B7C8EB3849A2221CDA65 /* JXPagingView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXPagingView.release.xcconfig; sourceTree = ""; }; + 241FDB4FE9E3CE45C4854F0FEB6F8BAF /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; + 2458E327D6233EBA29A07B3E63113146 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; + 2504FFB7834ECCFC15329B28F3C9A331 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LookinServer; path = LookinServer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 25AB23A95A2135A43EF14C148E707F7A /* HWPageSheetPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPageSheetPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m; sourceTree = ""; }; - 2701A816C2728A79FA904E6F2AC8ADEB /* UITableView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+LookinServer.h"; path = "Src/Main/Server/Category/UITableView+LookinServer.h"; sourceTree = ""; }; - 27339E9CA8A7C6DC7F3E8B828C3D0038 /* UITextField+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+LookinServer.m"; path = "Src/Main/Server/Category/UITextField+LookinServer.m"; sourceTree = ""; }; - 274EF5BCECE08045C7BB130E4D6ED8E4 /* LookinHierarchyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyInfo.m; path = Src/Main/Shared/LookinHierarchyInfo.m; sourceTree = ""; }; + 25A5CCE05BC1D97AB685203E1D41C4B0 /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; + 25A7097BBC72B099A6C5D8BE403878A8 /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; + 25A773C46121E6091EEB9AC88DC4E2A2 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; + 26925632A670841DDFC5067C12B16515 /* CALayer+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+LookinServer.h"; path = "Src/Main/Server/Category/CALayer+LookinServer.h"; sourceTree = ""; }; + 2783C33881FB9ED3037D4D66B93FAD7E /* LookinDashboardBlueprint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDashboardBlueprint.m; path = Src/Main/Shared/LookinDashboardBlueprint.m; sourceTree = ""; }; 281686F4C9CC2C718B45E1DEB7E63948 /* Pods-CustomKeyboard-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CustomKeyboard-acknowledgements.markdown"; sourceTree = ""; }; - 28D5D9D40BE7D9F76DB8A620D92D6F6C /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJRefresh/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 29AAA748545CCD9E566E6F15C52A44CB /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; - 29D938D1AE315B5A7E490702D4DBEED7 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; - 2A350736EF0F4C89A3E43AA0BED8AC36 /* UICollectionViewLayout+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewLayout+MJRefresh.h"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.h"; sourceTree = ""; }; - 2ACD4F15622D5B40EA4047FEA329658B /* MJExtension-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-umbrella.h"; sourceTree = ""; }; + 28EBA38DF7DE3C55A1DCF1C9536E3712 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; + 294754F45B0BF3519369080425B4F2FD /* LSTTimer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.release.xcconfig; sourceTree = ""; }; + 29485CC6A452A36B28B71FA9AC5A4CE4 /* JXPagingView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXPagingView.debug.xcconfig; sourceTree = ""; }; + 29C25E996193BA4D1FCBB5C2A7812FB9 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; + 29CA4DC7FB25B91EAA2B3847B7BB46A9 /* LKS_CustomAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.m; sourceTree = ""; }; + 29EA07EA8EF3C7818A9505A783C4FF02 /* JXCategoryListContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryListContainerView.m; path = Sources/Common/JXCategoryListContainerView.m; sourceTree = ""; }; + 2A543722998E5C6171A0B4A729D11BBB /* SDWebImageTransitionInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransitionInternal.h; path = SDWebImage/Private/SDWebImageTransitionInternal.h; sourceTree = ""; }; + 2AD36233DB657DAA0ACBB8EEEAEB38EA /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MJExtension; path = MJExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2B6E38C872CB24F91AFE94F3DF5EFCC2 /* UIScrollView+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+Helper.h"; path = "Sources/Category/UIScrollView+Helper.h"; sourceTree = ""; }; - 2B7A32CBCCAE8AB83DA3CB95667709E3 /* MBProgressHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.release.xcconfig; sourceTree = ""; }; - 2B7C62DACFDBE481DDA82F7BE3396A68 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; - 2BAFAB49E37FE01E69DA8AF02F372885 /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; - 2C694B3CF0214D5165615510B34C3812 /* NSObject+MJKeyValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJKeyValue.m"; path = "MJExtension/NSObject+MJKeyValue.m"; sourceTree = ""; }; - 2C6B8E558F2970AA962D063345B79D19 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; - 2CA3017C0C359C5E90091B685A3A59EE /* AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-umbrella.h"; sourceTree = ""; }; - 2D1699A762F8D719D2565E3B0B508554 /* HWPanModalPresentationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationDelegate.m; path = Sources/Delegate/HWPanModalPresentationDelegate.m; sourceTree = ""; }; - 2D6996A5821977C26F6D8F02DE8CF8CD /* NSObject+MJClass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJClass.h"; path = "MJExtension/NSObject+MJClass.h"; sourceTree = ""; }; - 2D7205061D92FA9AEDA20BCF1B6FF9B7 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; - 2EE28E5F80B5EB3B89F864114E429417 /* DZNEmptyDataSet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DZNEmptyDataSet-Info.plist"; sourceTree = ""; }; - 2F3AD0011FB2CA087E42B18DDAD25253 /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; - 2F61547B42B4881FB5D37EF93F1C324C /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; - 30A4A3709BA82F970D60FE150EDB33D1 /* LKS_CustomAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.m; sourceTree = ""; }; - 310204C87FE20FAAF183EEE0D555B729 /* LKS_HierarchyDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.h; sourceTree = ""; }; - 315C5770DCC0584893C24972BAEDEB39 /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; - 31BB750A026F77ECDF9EFB2711DEC741 /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; - 31C99A570F5F1154C55309832EC47D0D /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; - 31F540B1617ECFBBE3A0FB1043BFB861 /* HWPanModalInteractiveAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalInteractiveAnimator.m; path = Sources/Animator/HWPanModalInteractiveAnimator.m; sourceTree = ""; }; - 343301F4ECFA1778F70E1EC266C1848F /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; - 352F171C72D103D96370080978C50788 /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; - 3583F45BB2A021FDC55DB56C5C606CB1 /* HWBackgroundConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWBackgroundConfig.h; path = Sources/View/HWBackgroundConfig.h; sourceTree = ""; }; + 2BB86632EEB3EB44D0413B3A6F7F6875 /* HWPanModalContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContainerView.m; path = Sources/View/PanModal/HWPanModalContainerView.m; sourceTree = ""; }; + 2BEAAFCDD4CD23AABA4CD7359454B646 /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; + 2BF8D28C7089A47299DB62B980D954C8 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; + 2CAA34C64434033ACBB7F68A74F4D15B /* HWPanModalContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContentView.h; path = Sources/View/PanModal/HWPanModalContentView.h; sourceTree = ""; }; + 2CE7B5832F4AC9648A3CEB7DD03473E4 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; + 2E5DB75D5C223CDC5703FA115447A148 /* SDImageAWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAWebPCoder.m; path = SDWebImage/Core/SDImageAWebPCoder.m; sourceTree = ""; }; + 2E70DDAD553B6A4AC2379D01C3F133EF /* KeyValueObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KeyValueObserver.h; path = Sources/KVO/KeyValueObserver.h; sourceTree = ""; }; + 2E80EA469F2079302F38A991886C4B5A /* LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServer.h; path = Src/Main/Server/LookinServer.h; sourceTree = ""; }; + 2E96574DDD94EB958E64B0AD7C7B20F2 /* JXCategoryFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryFactory.h; path = Sources/Common/JXCategoryFactory.h; sourceTree = ""; }; + 2ECB40CAF1E6F3F4A5F02F74E30B95E8 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; + 2ED4FAFE5BD7891D4471852209337077 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; + 2F4A1CCB21DB7EA5A2ACEB11E374FBCA /* JXPagingView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = JXPagingView; path = JXPagingView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2FED06425BD958CD54FC4A96C6FF1992 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; + 3125F7D904D9F1F20C7699EF5186B19F /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; + 31894250FE81D510485178A2F984B715 /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; + 3201B19667C12026E1C92EA1DD973BB7 /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; + 32CCCC7F014C0FE2CA551D9AF48EEF89 /* NSBezierPath+SDRoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+SDRoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.h"; sourceTree = ""; }; + 32DEFB57DAEAFA1A97A9826678533D16 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; + 32F3C5B0B7D11631504E27D25E8CB5A2 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; + 3381742E54E03DCDB9DD644DF65C4689 /* JXCategoryIndicatorTriangleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorTriangleView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.h; sourceTree = ""; }; + 3415299E0D5D7B9C22E99D16B6F89983 /* MJRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJRefresh.modulemap; sourceTree = ""; }; + 3416384E4A531494C7B12CDD1AEA74A1 /* Lookin_PTUSBHub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTUSBHub.h; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.h; sourceTree = ""; }; + 342267EEBD80FDDCEAA647EFBE0EB6BD /* MJRefreshNormalTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.h; sourceTree = ""; }; + 3422D3CB84719A98D68CD9DE2857E694 /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; + 3474F65ACB0FE00EF732580936B91D06 /* UIViewController+PanModalDefault.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalDefault.m"; path = "Sources/Presentable/UIViewController+PanModalDefault.m"; sourceTree = ""; }; + 34C31D8DFEC22296E69E97BC5CEAE316 /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; + 3504487D6CA5438A7FB00D149564DDFC /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; + 35205291EDA412911A7CCBF5DB6087EB /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; + 35269DC2485E9AA07A892FDEB96B16C7 /* Lookin_PTChannel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTChannel.h; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.h; sourceTree = ""; }; + 3545C9AC3AD500CD4E48A3E2630C521B /* JXCategoryTitleCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleCellModel.m; path = Sources/Title/JXCategoryTitleCellModel.m; sourceTree = ""; }; + 359AD735B8CFD982730F6CEB0F56A487 /* JXPagerListRefreshView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerListRefreshView.h; path = Sources/JXPagerView/JXPagerListRefreshView.h; sourceTree = ""; }; 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-keyBoard.debug.xcconfig"; sourceTree = ""; }; - 360B7B34B46811D44994D83FAC09E663 /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; - 361FBE2595D99942EB88F5C0D34EB2DA /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; - 3663272D41C8B58200506DDA7E7A2903 /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; - 37526D876665DA3E019DF167F09B21F4 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; - 37B5AAFF8675170D1D643B53FECA47E3 /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; - 37B6B4596E25AE5CE5BE1FE14A6AF93B /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; - 387AF8AF8500E50CC311582863B31CFF /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; + 35DC020855ECA02C5E2568299594E9C0 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; + 360A9029323DBF687A82BCD2C22F386C /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 36457C61634F1414F6DDF4C701ABF567 /* LKS_TraceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_TraceManager.m; path = Src/Main/Server/Others/LKS_TraceManager.m; sourceTree = ""; }; + 3653F678D1C9DBE34F6262A65263C642 /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; + 367088C36E8BF33957802AE4A6256CC1 /* MJPropertyKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyKey.h; path = MJExtension/MJPropertyKey.h; sourceTree = ""; }; + 367DF77D41DE010B9FA86137928C7C44 /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; + 368AF39857A6659131D7CD15698E6867 /* UIColor+SDHexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SDHexString.h"; path = "SDWebImage/Private/UIColor+SDHexString.h"; sourceTree = ""; }; + 36A28302FD0C37C0A56E64EA97977A8E /* FLAnimatedImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.debug.xcconfig; sourceTree = ""; }; + 3753072CB1EE987F4CDC7E86385B9A99 /* UIViewController+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LookinServer.h"; path = "Src/Main/Server/Category/UIViewController+LookinServer.h"; sourceTree = ""; }; + 3791DA4B477B236E8816C08DD01E3B45 /* UITextView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextView+LookinServer.m"; path = "Src/Main/Server/Category/UITextView+LookinServer.m"; sourceTree = ""; }; + 3875C6FE72ED2368D3701E9901F883B7 /* JXCategoryIndicatorCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorCellModel.m; path = Sources/Indicator/JXCategoryIndicatorCellModel.m; sourceTree = ""; }; + 38A98EA0745C9E839DCFD56B22BF1256 /* LKS_Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_Helper.m; path = Src/Main/Server/Others/LKS_Helper.m; sourceTree = ""; }; + 38E107BE978505B98A952E3564F532AA /* LKS_CustomAttrSetterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrSetterManager.h; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.h; sourceTree = ""; }; + 390647665D633FF246584D1E27162F0D /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LSTPopView; path = LSTPopView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 39D285C0DD3F1106B921412AD679ADEC /* Lookin_PTChannel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTChannel.h; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.h; sourceTree = ""; }; - 3AF690E545719F23D7E97E6C1F82121E /* LSTTimer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTTimer-Info.plist"; sourceTree = ""; }; - 3BC0E1D78C95F4CC731325A284A8FC80 /* LKS_CustomAttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.m; sourceTree = ""; }; - 3BE50AD720E95B8938AAE668F71561B7 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; - 3C53F73CEF747A7A78B5CACAF16E5FCE /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; - 3C880A37C8BD02476827078E98C08810 /* HWPanModalPresentationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationController.h; path = Sources/Controller/HWPanModalPresentationController.h; sourceTree = ""; }; + 3A2E4F46AFE1B8413F8C1C81323B5831 /* JXPagerSmoothView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerSmoothView.h; path = Sources/JXPagerView/JXPagerSmoothView.h; sourceTree = ""; }; + 3A8DC30D2C209AB66D8E812915E6F319 /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; + 3A8EB0FE66AD3E48C10CDD802521D146 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; + 3A94C1FE25186BE811E6EC878BFA019B /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; + 3B26E1BE3EBF37131688F5656289ACA2 /* NSObject+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+LookinServer.h"; path = "Src/Main/Server/Category/NSObject+LookinServer.h"; sourceTree = ""; }; + 3B2ACD52F18B25CE1FB40A0F1DF81B4A /* LKS_CustomAttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.h; sourceTree = ""; }; + 3B3FF5D113848A5A9AC244C579FF1441 /* JXCategoryIndicatorCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorCellModel.h; path = Sources/Indicator/JXCategoryIndicatorCellModel.h; sourceTree = ""; }; + 3B56A01456E5166288620482B2A2180C /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; + 3BC6BE1672FC4A4AA70F4CBD7E23C808 /* JXPagerListContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerListContainerView.m; path = Sources/JXPagerView/JXPagerListContainerView.m; sourceTree = ""; }; 3CB13D51E717D347023EEB57263E3072 /* Pods-CustomKeyboard-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CustomKeyboard-dummy.m"; sourceTree = ""; }; - 3D2A884E58C9EFE4F57508CA7855F449 /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; - 3D832408A734647A9D2C62473FE11EFB /* LookinAppInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAppInfo.m; path = Src/Main/Shared/LookinAppInfo.m; sourceTree = ""; }; - 3DF4E1CE47903B976C738C7A1DB7C650 /* LKS_ConnectionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ConnectionManager.h; path = Src/Main/Server/Connection/LKS_ConnectionManager.h; sourceTree = ""; }; - 3E5C8F44BD62EB86605C88FA434E57ED /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; - 3EDF0BD9574A366871EF5B3FBEFB906D /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; - 3F01F027ADEF8C49A4605D787E41BD1C /* SDImageFramePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFramePool.m; path = SDWebImage/Private/SDImageFramePool.m; sourceTree = ""; }; - 3F3611B9193976C6AC5268E458B3F9F6 /* SDImageAWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAWebPCoder.m; path = SDWebImage/Core/SDImageAWebPCoder.m; sourceTree = ""; }; - 3F6EA8BCC592FC8C87F6AB86D1783731 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; - 4056B0FA7CFCA3F0B3BA1F921297B1CC /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; - 4082EEAE9AC1F17D236D83E99200EA70 /* MJRefreshNormalTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.h; sourceTree = ""; }; - 40D46544DD0F8DC61B909F5E02739172 /* LKS_CustomDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.h; sourceTree = ""; }; - 42D65971D9F40DBD6785D6A1D0AEBFBD /* AFNetworking.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.release.xcconfig; sourceTree = ""; }; - 43936D8CC7E56B4026AF09D6B9E1B1BD /* LookinServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LookinServer-Info.plist"; sourceTree = ""; }; + 3D1EF86D80B6333688465CCC41BA33F7 /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; + 3D3112C49688EF3F713F0D64A22E6E66 /* LKS_HierarchyDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.m; sourceTree = ""; }; + 3DAB18271BAF2DB3E49BCAF049FC4F01 /* HWPanModalInteractiveAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalInteractiveAnimator.h; path = Sources/Animator/HWPanModalInteractiveAnimator.h; sourceTree = ""; }; + 3E42525F0D8B91406B2C7015E3E52B29 /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; + 3E8FEF4AED255508CB8E745D200EDE89 /* ResourceBundle-JXCategoryView-JXCategoryView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-JXCategoryView-JXCategoryView-Info.plist"; sourceTree = ""; }; + 3EA0FACBE46F43AB7A99266BBBF20510 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; + 3F5F8D57BABE5A9AD2D0BC75B55D1A52 /* LSTTimer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-umbrella.h"; sourceTree = ""; }; + 3F77AB571A5252972C84B67134918B5F /* UIScrollView+EmptyDataSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+EmptyDataSet.m"; path = "Source/UIScrollView+EmptyDataSet.m"; sourceTree = ""; }; + 3FAF0BE8296496D28F5C6AA6974B39E8 /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; + 401F0F0AAEEDDA40C2D25DB817C9B5C6 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; + 402826B784C1198142F399AD251F2A3A /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; + 40380EFCFB5E34558C193A723D077BE3 /* UITableView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+LookinServer.h"; path = "Src/Main/Server/Category/UITableView+LookinServer.h"; sourceTree = ""; }; + 41B90877BBAECA72C2F67A5E39E1E87A /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; + 41EF7420DD5FC6E4D1134632895868F3 /* LookinAttrIdentifiers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttrIdentifiers.m; path = Src/Main/Shared/LookinAttrIdentifiers.m; sourceTree = ""; }; + 42EF67A85226C8C14C983E81C71F392D /* MJRefreshConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConfig.m; path = MJRefresh/MJRefreshConfig.m; sourceTree = ""; }; + 42F934D080B2CC7F2CD859E2B472A585 /* HWPanModalAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalAnimator.h; path = Sources/Animator/HWPanModalAnimator.h; sourceTree = ""; }; + 433A3E0D94E768912FBBE36F7C961678 /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "MJExtension-MJExtension"; path = MJExtension.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 4489DCEC1C15912F15C69BF8BADBDA34 /* Bugly.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bugly.framework; sourceTree = ""; }; - 44DDF1AA5625A95CA1C76B7546758226 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; - 452B8DD5CBF29E80E794E957D7ACEE0F /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; - 45AD4A83CCB38F4F8C699AACEC09A405 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SDWebImage-SDWebImage-Info.plist"; sourceTree = ""; }; - 4610142EAB51ECDD8FC137942A59F231 /* NSString+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Lookin.m"; path = "Src/Main/Shared/Category/NSString+Lookin.m"; sourceTree = ""; }; - 46BD456754A833616748AAFE8A1AF2F2 /* MJRefresh.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.debug.xcconfig; sourceTree = ""; }; - 473462854899532931D29986CBD25F4A /* Masonry.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Masonry.modulemap; sourceTree = ""; }; - 47C4451B7E17B800D4088E7182C1025D /* LookinCustomDisplayItemInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomDisplayItemInfo.h; path = Src/Main/Shared/LookinCustomDisplayItemInfo.h; sourceTree = ""; }; - 47F9AD4ED221D6EEDB441FAF35299C66 /* LookinObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinObject.h; path = Src/Main/Shared/LookinObject.h; sourceTree = ""; }; - 4816EA2348DC71F3330B4D2743758FEF /* UIViewController+PanModalDefault.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalDefault.h"; path = "Sources/Presentable/UIViewController+PanModalDefault.h"; sourceTree = ""; }; - 48B9B4465675824F9DA134FE2253901E /* LookinDisplayItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItem.h; path = Src/Main/Shared/LookinDisplayItem.h; sourceTree = ""; }; - 4968882808F027C34D91341E2DBD71E2 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; - 499DFA9F01A96B26620A744AC7C94DB7 /* LKS_ConnectionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ConnectionManager.m; path = Src/Main/Server/Connection/LKS_ConnectionManager.m; sourceTree = ""; }; - 4A4F0899D1AD5593F9373F8225D28188 /* HWPanModalPresentable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentable.h; path = Sources/Presentable/HWPanModalPresentable.h; sourceTree = ""; }; - 4A980D9B3DB04133A466725A1C6C22F8 /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; - 4AA6F90EC76FE7C2ACDF3266FD792D7A /* LookinAttributesGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesGroup.h; path = Src/Main/Shared/LookinAttributesGroup.h; sourceTree = ""; }; - 4B01E4A62621F02DCAF2B380FECD12A8 /* MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJExtension-Info.plist"; sourceTree = ""; }; - 4D8DA2BACDEA7D78265D10D62F7A3BF7 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; - 4DCD76BA1FFEFDEEE2F9331ECD0796D4 /* LookinCodingValueType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCodingValueType.h; path = Src/Main/Shared/LookinCodingValueType.h; sourceTree = ""; }; - 4E03AEFAD237B8966FCFA45B3312FEE7 /* LookinHierarchyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyInfo.h; path = Src/Main/Shared/LookinHierarchyInfo.h; sourceTree = ""; }; - 4F3DBAC2BF3E2D408BCB049042B8B067 /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; - 4FA72F287E0DE573DD735BAE9AD7E816 /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; - 4FBCAF641C4059BE19811532C4E3A0A2 /* NSArray+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Lookin.m"; path = "Src/Main/Shared/Category/NSArray+Lookin.m"; sourceTree = ""; }; - 5030EF25D193EB41CCA5DF24FE48C1DF /* HWPanModalContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContainerView.m; path = Sources/View/PanModal/HWPanModalContainerView.m; sourceTree = ""; }; - 506D2884030F20EC06A10DCFA7347584 /* LookinServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.release.xcconfig; sourceTree = ""; }; - 5157E3FB4160ED0759A1F38EFDEC5877 /* MJRefresh.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.release.xcconfig; sourceTree = ""; }; - 51B83EEE0D453B8B01D8275D3EEBF4BF /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; - 51E9651B0CFE7B40336ABD29412D3C39 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; - 524E9F65E894111FFD9563F30298E596 /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; - 529CC0A76A69631EEA57BEAB673D76B9 /* UITextField+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+LookinServer.h"; path = "Src/Main/Server/Category/UITextField+LookinServer.h"; sourceTree = ""; }; + 43F4AA149B8B7307ED5DA363EBC93DBF /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; + 44ABB514E2C8BB7AA8881283E1F0FE47 /* LKS_ExportManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ExportManager.m; path = Src/Main/Server/Others/LKS_ExportManager.m; sourceTree = ""; }; + 44CB5B4F2C2351C8F32C675C94C2EAC0 /* JXCategoryNumberView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryNumberView.m; path = Sources/Number/JXCategoryNumberView.m; sourceTree = ""; }; + 45505B1DFA133379CEE6DD6D8148013D /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; + 4561971E2CF7A1F1B00AC6091B3448DE /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; + 45880427FEDFE00B81EA46DB6F5AFD52 /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; + 46461C91DF1586852C84C6489E5ED4BA /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; + 4688EE09ADCEE19CD4BDF95833F7E81D /* MJPropertyType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyType.m; path = MJExtension/MJPropertyType.m; sourceTree = ""; }; + 471A02E298FA363A6051045C83C8BE05 /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; + 47655EC4466A20F4BEC0C76B8F4C5440 /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; + 47A777C7602E23E11AE500103D52A253 /* MJExtensionConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJExtensionConst.m; path = MJExtension/MJExtensionConst.m; sourceTree = ""; }; + 47F474CA83A8EC338136568BDBFF8343 /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; + 491DFACE04BF80FD0F37C4ECFE908522 /* SDCallbackQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDCallbackQueue.h; path = SDWebImage/Core/SDCallbackQueue.h; sourceTree = ""; }; + 4A2FC8CB1CFEB2812A4E5E466940232C /* LKS_ObjectRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ObjectRegistry.h; path = Src/Main/Server/Others/LKS_ObjectRegistry.h; sourceTree = ""; }; + 4A970B89D7ECEFF994ACF22A5493E001 /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; + 4A984C0F36AC5CCB478D87C1F7E4019D /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; + 4AA7B1CA514C2D6FAA50ACF865AF4203 /* JXCategoryView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "JXCategoryView-Info.plist"; sourceTree = ""; }; + 4AD6EDFD2A6C9CC51CFC6A4BAA9C72A9 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; + 4B0139E3193D3960F1A46D73064CA34A /* JXCategoryIndicatorComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorComponentView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.h; sourceTree = ""; }; + 4B98EB1E5D5490C1C17C90E124262C80 /* HWPanModalPresentationUpdateProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationUpdateProtocol.h; path = Sources/Presentable/HWPanModalPresentationUpdateProtocol.h; sourceTree = ""; }; + 4BC6F317480167EA6C97C3ED771D57CA /* UIBlurEffect+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIBlurEffect+LookinServer.h"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.h"; sourceTree = ""; }; + 4C4CB24406FFC32C73C615D12F0532C7 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; + 4CF942497E18FEE75DD2CDC6779A790A /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; + 4D000260D6BB658E0BB519087E88F883 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; + 4D4A62A4549AC17B0296FF7D29E15454 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = ""; }; + 4D93DBFF5810549335063D430FB33721 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; + 4DE32E1B12FEE2A9EAE1F5A67697D6E8 /* HWPanIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanIndicatorView.h; path = Sources/View/HWPanIndicatorView.h; sourceTree = ""; }; + 4E2D9F4632DB7036D701CB57007800AB /* MJPropertyType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyType.h; path = MJExtension/MJPropertyType.h; sourceTree = ""; }; + 4E5F2B584A65C9246E3E8A7A856FF44D /* JXCategoryIndicatorParamsModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorParamsModel.h; path = Sources/Common/JXCategoryIndicatorParamsModel.h; sourceTree = ""; }; + 4ED1A3436209E7EBF3356CEC094C7391 /* LookinConnectionResponseAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionResponseAttachment.m; path = Src/Main/Shared/LookinConnectionResponseAttachment.m; sourceTree = ""; }; + 4F81509596D525489E9AA55CE4C0B4C1 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; + 50BCF4AA1A75105CC04AA446B0DB9B40 /* JXCategoryDotView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryDotView.h; path = Sources/Dot/JXCategoryDotView.h; sourceTree = ""; }; + 5107F5A871AC7AEDAD8C78C1F1AB8E40 /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; + 5128E7CF3F35BE25186575F63661EEF6 /* MJRefreshTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshTrailer.m; path = MJRefresh/Base/MJRefreshTrailer.m; sourceTree = ""; }; + 51E7542749774862B8EB9AAB7010F1AA /* JXCategoryBaseCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryBaseCellModel.m; path = Sources/Base/JXCategoryBaseCellModel.m; sourceTree = ""; }; 5327DD01C6533D102D66E1636B3827F3 /* Pods-keyBoard-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-keyBoard-acknowledgements.plist"; sourceTree = ""; }; - 53CC6A09F682C54055F6035F0D6E29FA /* MJRefreshTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshTrailer.m; path = MJRefresh/Base/MJRefreshTrailer.m; sourceTree = ""; }; - 53EC2576F6D68ECA3E1920A896AE4E4F /* HWPanModal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModal.h; path = Sources/HWPanModal.h; sourceTree = ""; }; - 54E07E4DAA97DEDC8F59F58429664909 /* LKS_AttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.h; sourceTree = ""; }; - 5593F84C8F2583B27ACE6E149D4B8B0E /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; - 55CB47F746B1E99E4F1E11247844A401 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; - 56083A8D73CF98D49960B5783A36797F /* FLAnimatedImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-umbrella.h"; sourceTree = ""; }; - 56951EB060616356F951F35CBD9A6E42 /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; - 56A664809217C1D10A7EC649E972D6AB /* HWPanModalPresentableHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentableHandler.h; path = Sources/Mediator/HWPanModalPresentableHandler.h; sourceTree = ""; }; - 56A89B114742BBA3282DA6CDF9871F36 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; - 56BB70CC7870B5212EFAD74AF8199F17 /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; - 5703D16A54AB62E92D3E21CC6E5EA55B /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; - 57AA794BD50692239409E574C7FD0846 /* HWPanModalShadow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalShadow.h; path = Sources/View/HWPanModalShadow.h; sourceTree = ""; }; - 581F1A0410E8F8E85A8C2E596B4C7F40 /* LKS_AttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.m; sourceTree = ""; }; - 5839F6C7ABFF6E515370151D7E470262 /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; - 584341F234CCB4128A1A3854A3371179 /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; - 587808BB0F9012792B17999F0BB495C4 /* LookinIvarTrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinIvarTrace.h; path = Src/Base/LookinIvarTrace.h; sourceTree = ""; }; - 589A748D16780600B35F1BC7E7CEB243 /* UILabel+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+LookinServer.h"; path = "Src/Main/Server/Category/UILabel+LookinServer.h"; sourceTree = ""; }; - 58F1F1A0BBD025ADF47D37EB3545A1EA /* MJExtension.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJExtension.modulemap; sourceTree = ""; }; - 5909B734EE0396CAA42A403A6DCD4D27 /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; - 595622377DEA1856384D2D262C52C73F /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; - 5973F7F7FB04C5938E91F05D46F22B54 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; - 5A03E64C6033C8C1C7D8822CDE785EEB /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; - 5A12BDC5E6446CAD91BA1C47C211ED2E /* LKS_ExportManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ExportManager.h; path = Src/Main/Server/Others/LKS_ExportManager.h; sourceTree = ""; }; - 5A4E8FC1A8280B0B2C51BA4C08DA78B3 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; - 5A5823526F694533978DE523241FEDE9 /* MJFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJFoundation.h; path = MJExtension/MJFoundation.h; sourceTree = ""; }; - 5A9184E6EEBE4764FF941193DF28C44D /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; - 5AD771C5136CD5549FAE44B9E4C2DFD2 /* UIScrollView+EmptyDataSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+EmptyDataSet.h"; path = "Source/UIScrollView+EmptyDataSet.h"; sourceTree = ""; }; - 5B099323376948696DA373792CC4983D /* UITextView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextView+LookinServer.h"; path = "Src/Main/Server/Category/UITextView+LookinServer.h"; sourceTree = ""; }; - 5B1C14811A97739A8455D69D9EF8F1AA /* HWPanModal-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-umbrella.h"; sourceTree = ""; }; - 5B6CB7D56E64BDB8EB50D17E5CEC7C8F /* NSObject+MJCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJCoding.h"; path = "MJExtension/NSObject+MJCoding.h"; sourceTree = ""; }; - 5CC308EFB0F9E5B050F606DDD3E7A44F /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; - 5CD0546B82DCACC9EF9FE9B72325B901 /* NSSet+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSSet+Lookin.h"; path = "Src/Main/Shared/Category/NSSet+Lookin.h"; sourceTree = ""; }; + 5409A465D5BE745D21B9F8847B798BD5 /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; + 54CBDA1EBC8A896E6DB3A15D5332DB1C /* JXCategoryTitleVerticalZoomCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleVerticalZoomCell.h; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.h; sourceTree = ""; }; + 552D2F14AF7B393E80A67680A66A34D4 /* HWPanModalPresentationAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationAnimator.h; path = Sources/Animator/HWPanModalPresentationAnimator.h; sourceTree = ""; }; + 55A76B2979ED12495977612719BE47A2 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; + 55E89941A6B7A73D479A0770A9C96C14 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; + 56642F6C221107F2F8D033758EEB482A /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; + 567674319F769F7E8B80920BBBD444B6 /* LKS_CustomAttrSetterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrSetterManager.m; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.m; sourceTree = ""; }; + 5716AF79F54782358457FBB452B73975 /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; + 5731585BDD8DA229201CF537357BCA56 /* HWPanModalHeight.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalHeight.h; path = Sources/Presentable/HWPanModalHeight.h; sourceTree = ""; }; + 5734E5CBE9E63CD37E71A375796587B5 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; + 57D32F597DFAC06B9198FA1F48D2995D /* LookinAttributesGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesGroup.h; path = Src/Main/Shared/LookinAttributesGroup.h; sourceTree = ""; }; + 580E2C96AABF74B3FD0C199D09864253 /* MJRefresh.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.release.xcconfig; sourceTree = ""; }; + 595E9691CC1A487C44431E51893A1D01 /* LookinConnectionAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionAttachment.m; path = Src/Main/Shared/LookinConnectionAttachment.m; sourceTree = ""; }; + 5A6A16B78780399804F5DD15816ADE2B /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; + 5AEB6DDDE2B74ABEB1D68CE037D784DC /* HWPresentingVCAnimatedTransitioning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPresentingVCAnimatedTransitioning.h; path = Sources/Animator/HWPresentingVCAnimatedTransitioning.h; sourceTree = ""; }; + 5B4EF64EB8018D8E9CE7C8CB5FACCD5B /* NSString+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+MJExtension.m"; path = "MJExtension/NSString+MJExtension.m"; sourceTree = ""; }; + 5B609960A71B1FE2AB814B679D9E7609 /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; + 5C519E29CD93815AEE0C119E2109F0A2 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; + 5C560A21071D707C98AE6CD75AED8BFD /* UIImageView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+LookinServer.m"; path = "Src/Main/Server/Category/UIImageView+LookinServer.m"; sourceTree = ""; }; + 5DA1EEEB5386D6FCA6523BE43601C382 /* LookinAutoLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAutoLayoutConstraint.m; path = Src/Main/Shared/LookinAutoLayoutConstraint.m; sourceTree = ""; }; 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DZNEmptyDataSet; path = DZNEmptyDataSet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5EAFD6E7E63CC2D3E074450E9124493C /* LookinServerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServerDefines.h; path = Src/Main/Server/Others/LookinServerDefines.h; sourceTree = ""; }; - 5EF9433AE70A3B3667F4B208CC88432A /* LookinServer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-prefix.pch"; sourceTree = ""; }; - 5F369D00927FCA59283AE71B174D2D1D /* UIViewController+LayoutHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LayoutHelper.h"; path = "Sources/Presentable/UIViewController+LayoutHelper.h"; sourceTree = ""; }; - 5F618581DFE1104C16FA02EB2B00F1B9 /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; - 5F62EE3A88E154ADAC90DDF6BC60DFB6 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; - 5F9D4F9A4CA404E7287B2F6CBFF382D1 /* UIColor+SDHexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SDHexString.m"; path = "SDWebImage/Private/UIColor+SDHexString.m"; sourceTree = ""; }; - 610BD8934663142C5DDE2AF00042FD13 /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; - 610E7F99F72A12BE4DBEF2C1ABF10115 /* LookinDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDefines.h; path = Src/Main/Shared/LookinDefines.h; sourceTree = ""; }; - 622B25C415B746B0A4DE004201B6C241 /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; - 6233A7302725D50AFE344EFD05C9C870 /* LKSConfigManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKSConfigManager.m; path = Src/Main/Server/Others/LKSConfigManager.m; sourceTree = ""; }; - 624CC6F33BF93A1458307F73823C3E10 /* LookinAttributeModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributeModification.m; path = Src/Main/Shared/LookinAttributeModification.m; sourceTree = ""; }; - 62C98AF2DC89D542692AC64CD9F01818 /* MJRefreshConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConfig.h; path = MJRefresh/MJRefreshConfig.h; sourceTree = ""; }; - 62ED382544D99079829F5E202E6E84A7 /* UIBlurEffect+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIBlurEffect+LookinServer.m"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.m"; sourceTree = ""; }; - 63277FA9AFB139990459DF6C57B238F5 /* MJRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-umbrella.h"; sourceTree = ""; }; - 636EE1928B5BC8BC35DF1648C1BF1467 /* MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJProperty.m; path = MJExtension/MJProperty.m; sourceTree = ""; }; - 63746C791045958FEE981F032ACCAECE /* NSBezierPath+SDRoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+SDRoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.m"; sourceTree = ""; }; + 5DB99CA546DA98A4F2641B6CD4635589 /* LookinServer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-prefix.pch"; sourceTree = ""; }; + 5DEBBB0A3F6FE82FAB648C476116F8AF /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SDWebImage-SDWebImage-Info.plist"; sourceTree = ""; }; + 5E8666C77464C3B683AB0F8D4DEA6951 /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; + 5F31829B35104CCEC70FD712B1D4D4E2 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; + 5F35F0E5B188FD04E8E889503DEA5841 /* LSTPopViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopViewProtocol.h; path = LSTPopView/Classes/Code/LSTPopViewProtocol.h; sourceTree = ""; }; + 5F4DF3FAFAFDE0BEC7606CB8D4C2C98B /* LookinServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LookinServer-dummy.m"; sourceTree = ""; }; + 5FD7A1D3C3D9D8E6D3476B7C2093A431 /* HWPanModalShadow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalShadow.m; path = Sources/View/HWPanModalShadow.m; sourceTree = ""; }; + 603287955CE071E6EBDC96A98AB97750 /* JXPagerListRefreshView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerListRefreshView.m; path = Sources/JXPagerView/JXPagerListRefreshView.m; sourceTree = ""; }; + 60461DAD42E3B1F75AD82553A6C40C64 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; + 60913F6F25D56976457BFFCFF2C2FADC /* LKS_ConnectionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ConnectionManager.h; path = Src/Main/Server/Connection/LKS_ConnectionManager.h; sourceTree = ""; }; + 60A68C8A5D160FE046F60DF6C446111D /* JXCategoryTitleVerticalZoomCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleVerticalZoomCellModel.h; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.h; sourceTree = ""; }; + 61080F57DD92AB8ABC811791B547090C /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; + 6194A35582043CD8893F293567547D72 /* HWDimmedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWDimmedView.m; path = Sources/View/HWDimmedView.m; sourceTree = ""; }; + 61A0FA60F5E41A8B04C442FE582DA298 /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; + 61A7EBF5198D90CFC9C01A0BA03924D8 /* MJFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJFoundation.m; path = MJExtension/MJFoundation.m; sourceTree = ""; }; + 6260795D5ABBA18F8EFECC2CEB871872 /* HWPanModal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModal.h; path = Sources/HWPanModal.h; sourceTree = ""; }; + 62C28B0ACA1E8D749FA6E65D70CFCB2D /* HWShoppingCartPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWShoppingCartPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m; sourceTree = ""; }; + 62CDFF5EFD0FE66B2DEECF2E904EBEC1 /* JXCategoryIndicatorLineView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorLineView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.h; sourceTree = ""; }; + 63000DF25140BBB4F03EDFC289F2B197 /* LookinHierarchyFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyFile.h; path = Src/Main/Shared/LookinHierarchyFile.h; sourceTree = ""; }; + 6315771A902975A20B41342DD5234115 /* DZNEmptyDataSet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.debug.xcconfig; sourceTree = ""; }; + 634BE374E20F830B5B77550EFCF89612 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; + 635235003B3FEDB8B457A8FFF46C69E3 /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 6407DC7FD67C9C74E0C3BA6B778AE0CD /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; + 639A45B880AEBFE1C16D4A9F3AA3D49C /* JXCategoryTitleImageCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleImageCell.h; path = Sources/TitleImage/JXCategoryTitleImageCell.h; sourceTree = ""; }; 641251D3092FFCF2B6259BF8676A212E /* Pods-CustomKeyboard-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CustomKeyboard-Info.plist"; sourceTree = ""; }; - 64BE9723ECB5FEB2D176E2AB31482F57 /* NSObject+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Lookin.h"; path = "Src/Main/Shared/Category/NSObject+Lookin.h"; sourceTree = ""; }; - 654D22CCA8871E0E0A65AB7C50503EB4 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; - 65EE0AA02CCB84E9D0C6987A57196DE0 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; - 662D6F244CE3008639589EE4EA829B53 /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; - 66C0C4029B17B8E45FF492CEEBD834E3 /* UIScrollView+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+Helper.m"; path = "Sources/Category/UIScrollView+Helper.m"; sourceTree = ""; }; - 672AB6E0839CC099E7CA7CF49761A5D7 /* Masonry-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-umbrella.h"; sourceTree = ""; }; - 67D554550B250775795416CCAF8BD370 /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; - 683586601FF42469125B58BBB8DF2429 /* LookinObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinObject.m; path = Src/Main/Shared/LookinObject.m; sourceTree = ""; }; - 68BFCD31885FD8664001BB1EFAC74751 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; - 690D12C73095E1091E4B6AB8B11A064E /* NSObject+MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJProperty.m"; path = "MJExtension/NSObject+MJProperty.m"; sourceTree = ""; }; - 6AB2A681F27544128FA8BFDF04B2B4BB /* UIScrollView+EmptyDataSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+EmptyDataSet.m"; path = "Source/UIScrollView+EmptyDataSet.m"; sourceTree = ""; }; - 6B130ACC8A24ECD0BF3BD07D5AF21E4D /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; - 6B6DBCFC84C1E1F5D3AF983520203544 /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; - 6C39336AE39057C3014C954C694C278F /* UIView+LSTPV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LSTPV.h"; path = "LSTPopView/Classes/Code/UIView+LSTPV.h"; sourceTree = ""; }; - 6EDACCA592A0A0FC0428384009A75BD5 /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; - 6EDC641564DA302B6FFCBFCFFFAC5BA7 /* UIView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LookinServer.h"; path = "Src/Main/Server/Category/UIView+LookinServer.h"; sourceTree = ""; }; - 6EFC403B9948A5A5D2DC7D8B3D9188A9 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; - 6F886C315967D7AADA95C37B717FE5A2 /* Lookin_PTUSBHub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTUSBHub.h; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.h; sourceTree = ""; }; - 6F98986A52AAB68B64127A983F8CB7D9 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; - 70ABAEE0904B02D3CE9045A0A088E18F /* HWPanModalPresentationUpdateProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationUpdateProtocol.h; path = Sources/Presentable/HWPanModalPresentationUpdateProtocol.h; sourceTree = ""; }; - 70D5B55A578973F4D162548B46979D49 /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; - 71086CB516DC09CA5D29736469412558 /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; - 710E437843F202473C82F6B19F6E51D8 /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; - 72FF1B2D48227EDD9EB762579BA5D936 /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; }; - 73EFE9F07FF04A733446FD7A74A02718 /* LKS_MultiplatformAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_MultiplatformAdapter.h; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.h; sourceTree = ""; }; - 741395EF99DABB64E0E04129DB222FD2 /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; - 741B32704926AB941D9209B2D37E2B8F /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; - 7577D873945C0C370C14EE971C3509FB /* Lookin_PTProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTProtocol.h; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.h; sourceTree = ""; }; - 758F54E0A75ADEC48F8924BFE16AEB3B /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; - 75F935C6D49A90EF2E215985C8EBF76F /* MJExtension-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-prefix.pch"; sourceTree = ""; }; - 76DC37DEAFA5D12B1D7F9040EFB03DA5 /* LSTPopViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopViewProtocol.h; path = LSTPopView/Classes/Code/LSTPopViewProtocol.h; sourceTree = ""; }; - 776331A7467F397FCD02F62B233A6E93 /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; - 779E8085B0101C4CB480F794DECA558B /* HWPanModal.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.release.xcconfig; sourceTree = ""; }; - 77A510DEE4CCFDB66B19F133A209CDF3 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; - 77EBE36C10B9452DC1931AC9779D7F79 /* MJFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJFoundation.m; path = MJExtension/MJFoundation.m; sourceTree = ""; }; - 77EC014BA0072D21D1B86EE5C78C59EA /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = ""; }; + 64891F4568CD87380D133019B00B2324 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; + 648C72C63334BCDFD466058863FCDAC9 /* MBProgressHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.debug.xcconfig; sourceTree = ""; }; + 6549E81907E05317DA862F329B2D4DDC /* JXCategoryTitleVerticalZoomCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleVerticalZoomCellModel.m; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.m; sourceTree = ""; }; + 658F3554D0CFB5BC5E252408F8CD5317 /* JXCategoryIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorView.h; path = Sources/Indicator/JXCategoryIndicatorView.h; sourceTree = ""; }; + 659E6E588427268237F9F2C40D2F6CBD /* LookinAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttribute.h; path = Src/Main/Shared/LookinAttribute.h; sourceTree = ""; }; + 65F97EE1352D7FC02982C03FB1D0FBEB /* JXCategoryBaseCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseCellModel.h; path = Sources/Base/JXCategoryBaseCellModel.h; sourceTree = ""; }; + 6645D9E2FCEC9ED435B284460DEDDF89 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; + 6736D1FBB305C05AEAB982F817CD80C1 /* LKS_HierarchyDetailsHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDetailsHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.m; sourceTree = ""; }; + 673B42B9F094B1F5ED808EE1BA26FC30 /* CALayer+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+Lookin.m"; path = "Src/Main/Shared/Category/CALayer+Lookin.m"; sourceTree = ""; }; + 6749EA453DC312E08B14CE8AFDB79F3C /* HWPanModalPresentationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationDelegate.m; path = Sources/Delegate/HWPanModalPresentationDelegate.m; sourceTree = ""; }; + 6999AA4E4990D39E732B0FABF0CBB3CA /* JXCategoryCollectionView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryCollectionView.h; path = Sources/Common/JXCategoryCollectionView.h; sourceTree = ""; }; + 69AE4F19374B51CFBF6330CC5F82B32A /* Lookin_PTChannel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTChannel.m; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.m; sourceTree = ""; }; + 6A2C1D3548C9E3091DE847DA61A18E5B /* ResourceBundle-MJExtension-MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJExtension-MJExtension-Info.plist"; sourceTree = ""; }; + 6A34A08E72CC7EE2DEDDC6F48148CD79 /* UIColor+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+LookinServer.h"; path = "Src/Main/Server/Category/UIColor+LookinServer.h"; sourceTree = ""; }; + 6A632B4F7EA06C55CADB3BF7C49D7860 /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; + 6A91961A508CA556983A4A3F57FB3133 /* MJRefreshTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshTrailer.h; path = MJRefresh/Base/MJRefreshTrailer.h; sourceTree = ""; }; + 6B5C2096D95608EEB566217452868E46 /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; + 6B857386E2ABDB8C3FD8B5797430DF26 /* LookinAttrIdentifiers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrIdentifiers.h; path = Src/Main/Shared/LookinAttrIdentifiers.h; sourceTree = ""; }; + 6BEFA0A1959620AC394975A01082A23B /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; + 6C07CC30774DAAE34D68C477CE151A36 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; + 6C2FE2279B0EA1E9F949E0AF58D09E3B /* LKS_InbuiltAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_InbuiltAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.h; sourceTree = ""; }; + 6C338AB8936504A929CF0929B7D23C9F /* MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJExtension-Info.plist"; sourceTree = ""; }; + 6C34880EFF82114AECCB354A57C47E7C /* JXCategoryTitleCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleCellModel.h; path = Sources/Title/JXCategoryTitleCellModel.h; sourceTree = ""; }; + 6C3B1F50C3A3E82B67AE98F2BAAD5C3C /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; + 6C70C9B1AD0F41A4C5E9026F5AF7F65F /* JXCategoryListContainerRTLCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryListContainerRTLCell.m; path = Sources/Common/JXCategoryListContainerRTLCell.m; sourceTree = ""; }; + 6CE2A9B22B9FC87A02A230599E72D4F1 /* NSObject+MJKeyValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJKeyValue.m"; path = "MJExtension/NSObject+MJKeyValue.m"; sourceTree = ""; }; + 6D2CC2D1F9AB2D4CFC68B6327C2793C5 /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; + 6D390F38F6574F6D973E2C4A52D004A1 /* JXCategoryTitleVerticalZoomCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleVerticalZoomCell.m; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.m; sourceTree = ""; }; + 6DB3789FF1142F1817E52B4F6C9BA1B6 /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; + 6DD8CB4B9EF9002F59BC7DE12F17ED7E /* Lookin_PTPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTPrivate.h; path = Src/Main/Shared/Peertalk/Lookin_PTPrivate.h; sourceTree = ""; }; + 6EF0D4A56B002AB1528A77EBDA7EC804 /* HWPanIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanIndicatorView.m; path = Sources/View/HWPanIndicatorView.m; sourceTree = ""; }; + 6FDFBF5B5FE03EAE7CBA31ED300F848E /* Peertalk.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Peertalk.h; path = Src/Main/Shared/Peertalk/Peertalk.h; sourceTree = ""; }; + 7032D81BB8B12F48732F1EBEA7A020D7 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; + 709DA7415B508D723EE552B201284026 /* AFNetworking-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "AFNetworking-Info.plist"; sourceTree = ""; }; + 71D68B7747CE473E42AF5D55F07BB002 /* DZNEmptyDataSet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-prefix.pch"; sourceTree = ""; }; + 72F67C5C9E4A93AFE6FF113487609183 /* JXCategoryBaseView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryBaseView.m; path = Sources/Base/JXCategoryBaseView.m; sourceTree = ""; }; + 731627030A2BE88955F55A35D6DCABC1 /* JXPagingView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = JXPagingView.modulemap; sourceTree = ""; }; + 732327FB0ADC252437B580203795D95F /* CALayer+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+Lookin.h"; path = "Src/Main/Shared/Category/CALayer+Lookin.h"; sourceTree = ""; }; + 74444E41B3920B9EB4DA66DCD2975612 /* JXCategoryIndicatorBackgroundView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorBackgroundView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.m; sourceTree = ""; }; + 7446E6EDA4118B08C0D538CAA41C47AA /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; + 75A91D4BB6118442A9B7E27598AE7C99 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 75B6A4916D912131001F61C28CCA6565 /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; + 761A654F557EA15B24079623AF9184F9 /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/include/FLAnimatedImage.h; sourceTree = ""; }; + 7626DD9951DC84318DF6E875CD7A8C20 /* MJRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-umbrella.h"; sourceTree = ""; }; + 765DBAD68AB5F355FB80870758AFB22C /* LookinIvarTrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinIvarTrace.h; path = Src/Base/LookinIvarTrace.h; sourceTree = ""; }; + 76724C714C93839E6993DF68B545F17B /* UIViewController+LayoutHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LayoutHelper.m"; path = "Sources/Presentable/UIViewController+LayoutHelper.m"; sourceTree = ""; }; + 76DCA3DD0D37AD6B5C7C65D7829AE3A8 /* LSTPopView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTPopView.modulemap; sourceTree = ""; }; + 7707C9BBD69232F1162D6ACABE70B7ED /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; + 7755C313C99E29481B2A9849C31152BE /* DZNEmptyDataSet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.release.xcconfig; sourceTree = ""; }; + 7778E8300903006F261959B2010A06D2 /* JXCategoryImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageView.m; path = Sources/Image/JXCategoryImageView.m; sourceTree = ""; }; + 77BA4318333FADE07B128DB446EA0F64 /* HWPanModalContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContentView.m; path = Sources/View/PanModal/HWPanModalContentView.m; sourceTree = ""; }; 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = HWPanModal; path = HWPanModal.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7859E48715647D45C428FB82F31DB2BA /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; - 79B0D13A04128B711BB3AFF0676EC3D0 /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; - 79D13E836577BF8A934C5D3D24826BD0 /* LookinEventHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinEventHandler.m; path = Src/Main/Shared/LookinEventHandler.m; sourceTree = ""; }; - 7AF90BBEF3A681BE8314F80257F1182C /* HWPanModalAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalAnimator.m; path = Sources/Animator/HWPanModalAnimator.m; sourceTree = ""; }; - 7CF635A9AE952B4C70F06837B227DDCC /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; + 7965DB1FD06E64A9C5B34CB6D9909B3A /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; + 797DE6794620B6AD238FF0B8B61A1B32 /* UIScrollView+EmptyDataSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+EmptyDataSet.h"; path = "Source/UIScrollView+EmptyDataSet.h"; sourceTree = ""; }; + 7A60D0CF9AE4E6671E2A6BBECEE57E4D /* JXCategoryIndicatorBallView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorBallView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.m; sourceTree = ""; }; + 7A60F6547480237BC04A6287158556B4 /* LookinTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinTuple.m; path = Src/Main/Shared/LookinTuple.m; sourceTree = ""; }; + 7A8A3FC6E6388A4864974A3D3B9C02F6 /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; + 7A9939FAA68717870D107439064CEFF4 /* JXCategoryView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXCategoryView.release.xcconfig; sourceTree = ""; }; + 7B4337532A4911F88E85BB14DE78FBB7 /* JXCategoryTitleVerticalZoomView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleVerticalZoomView.m; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.m; sourceTree = ""; }; + 7C0E4900E01624D5262A1ED1DF2F6D35 /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; + 7C2B7AF68C3BEF4AD97A93A90F9EFF44 /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; + 7C36F83AF55E2873F497777F59071760 /* JXCategoryListContainerRTLCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryListContainerRTLCell.h; path = Sources/Common/JXCategoryListContainerRTLCell.h; sourceTree = ""; }; + 7CAEC579F15CFFDB2E384C98A046EA76 /* LookinEventHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinEventHandler.m; path = Src/Main/Shared/LookinEventHandler.m; sourceTree = ""; }; + 7CF7F647B9D3AA2FB234C1CC5BB53582 /* LKS_CustomAttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.m; sourceTree = ""; }; + 7D7FC4156E6779F82E6B8036FA7A1307 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; + 7E02457FB07FECD161E03C2A1A8B72B3 /* LookinAttributesGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesGroup.m; path = Src/Main/Shared/LookinAttributesGroup.m; sourceTree = ""; }; 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "MJRefresh-MJRefresh.Privacy"; path = MJRefresh.Privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 7E3DC362C663E7C7DAB5B7DC796C5507 /* LookinAttrType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrType.h; path = Src/Main/Shared/LookinAttrType.h; sourceTree = ""; }; - 7F2363FB988E5DC9705FE22B29B7B4F8 /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; - 7FCA5CF6F4A026896316D8731B3E493F /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; - 802213010DCF77864E95B3A910F64EA0 /* LookinServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LookinServer-dummy.m"; sourceTree = ""; }; - 802FB1A32618485AA28D17584662FBAF /* HWPanContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanContainerView.h; path = Sources/View/HWPanContainerView.h; sourceTree = ""; }; - 80A4C5F30966DCCAF12719455CE5BA94 /* LSTPopView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTPopView.m; path = LSTPopView/Classes/Code/LSTPopView.m; sourceTree = ""; }; - 80E15D4BAC4857AD45CC8CDC40384F0F /* UIVisualEffectView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIVisualEffectView+LookinServer.m"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.m"; sourceTree = ""; }; - 8166AA98A11AE7F3F46DBF2C481F6DF5 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; - 817B07C3E952A5A5F2082BE15C3C500E /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; - 81A6154946F38EFB8836E3145513AAE9 /* NSArray+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Lookin.h"; path = "Src/Main/Shared/Category/NSArray+Lookin.h"; sourceTree = ""; }; - 81B71B9BB50BFCB7CBC2B6455296C14B /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; - 81E56B3079089075E57FE56264F80F1E /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; - 8204B00622081F3C51B1FC2D83A2D0D0 /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; - 820CCFAA740875554C05F59A0958E53B /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; - 82512BA24900AE369D9A35A08C7187CC /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; - 83E75619300BC832136529DA87152075 /* LKS_InbuiltAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_InbuiltAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.m; sourceTree = ""; }; - 84DD851B5FDE16625FA07D9C4D1622E4 /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; - 85937FAC419CB28614ECAA70CE249673 /* NSObject+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Lookin.m"; path = "Src/Main/Shared/Category/NSObject+Lookin.m"; sourceTree = ""; }; - 875E237862F4488FBFC692D1AB2DBB91 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; - 8769FA429275709C356B4C8A5DDEC26E /* LSTTimer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.debug.xcconfig; sourceTree = ""; }; - 882CA8EEAEB3525FB7AD66F6FFC2CF6A /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; - 883D06418312C016F973700D20558656 /* HWPanModalShadow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalShadow.m; path = Sources/View/HWPanModalShadow.m; sourceTree = ""; }; - 889630ECFAA2151C2C1F334458A5C110 /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; - 88C23FF116C3257A27A26A897D5AE6DB /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; - 88E8C1FFE2A2D6CB9741EF2354A3B30E /* HWPanIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanIndicatorView.m; path = Sources/View/HWPanIndicatorView.m; sourceTree = ""; }; - 8927ADAF60DF7D3D91B390580BD36295 /* HWShoppingCartPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWShoppingCartPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m; sourceTree = ""; }; - 8983C7CF18477B6B6E981751F1C09853 /* LookinConnectionResponseAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionResponseAttachment.m; path = Src/Main/Shared/LookinConnectionResponseAttachment.m; sourceTree = ""; }; - 899D158EA21A86AFAE75EACD2CFC106B /* Lookin_PTUSBHub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTUSBHub.m; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.m; sourceTree = ""; }; - 8A46088339E0DB93FCE586878F070297 /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; - 8A73FC0CD1FAD2820E17CD48DE8962BA /* UIImage+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+LookinServer.m"; path = "Src/Main/Server/Category/UIImage+LookinServer.m"; sourceTree = ""; }; - 8B25FB3699225E9D90B118E0F624383B /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; - 8B417F374DC024262C256083E5EB6F70 /* LookinCustomDisplayItemInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomDisplayItemInfo.m; path = Src/Main/Shared/LookinCustomDisplayItemInfo.m; sourceTree = ""; }; - 8B8786CBA6B78647E486B3CA129F2DAD /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; + 7E8762E22AB8C87B76E6D94D44665136 /* SDCallbackQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDCallbackQueue.m; path = SDWebImage/Core/SDCallbackQueue.m; sourceTree = ""; }; + 7F178706A5ED2B8C0CCCEA56CC4A04B6 /* JXPagerSmoothView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerSmoothView.m; path = Sources/JXPagerView/JXPagerSmoothView.m; sourceTree = ""; }; + 7FBDD10C8770914A56998AB2021E385B /* JXCategoryTitleImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleImageView.h; path = Sources/TitleImage/JXCategoryTitleImageView.h; sourceTree = ""; }; + 806C18993732E8D418AEA50EC6162EDC /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; + 807026E96F55910EB566C0F4535DF3EB /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; + 8087FD233990CE787D9977700977D0B8 /* JXPagerMainTableView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerMainTableView.h; path = Sources/JXPagerView/JXPagerMainTableView.h; sourceTree = ""; }; + 81157F73840FB0C9186268E78281D33C /* FLAnimatedImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FLAnimatedImage.modulemap; sourceTree = ""; }; + 8127266FF8D9AAE89CDF3511D05BB245 /* LKS_ObjectRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ObjectRegistry.m; path = Src/Main/Server/Others/LKS_ObjectRegistry.m; sourceTree = ""; }; + 8179AB093F869B4BCCBBF8427F69555B /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; + 819B57A54180667AB9476455F95835CA /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; + 81C5F42CC1579DEC553C5D34C274FD68 /* LSTTimer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTTimer-Info.plist"; sourceTree = ""; }; + 81D1103F43F39D4BF9AE80E76478FA69 /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; + 81D4FD0C7D7C987D10815371E729DAC0 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; + 824A8DE6460C98A565B1EDD8B4432F50 /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = ""; }; + 82BDCD67CE12306B5AF6A9E3DB88E0DA /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; + 82C5C527FD40FDC2434064E6DE931921 /* HWPanModalPresentationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationDelegate.h; path = Sources/Delegate/HWPanModalPresentationDelegate.h; sourceTree = ""; }; + 82F0AA3C9E3854CEA18B30E16DC474FC /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; + 83B5308ADA544D7E6FCE86EFD21D5CBB /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; + 83D5AD11F2E32B53BA1869D6DE812341 /* HWPanModalPresentable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentable.h; path = Sources/Presentable/HWPanModalPresentable.h; sourceTree = ""; }; + 83FBF1722FEB1FC5E339C64BC2275D81 /* HWPanModal-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-umbrella.h"; sourceTree = ""; }; + 846CA0BB8166DB9008D71F59F4A301EA /* MJRefreshStateTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h; sourceTree = ""; }; + 84C7B13561A207799480933E11856D99 /* JXCategoryView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXCategoryView-umbrella.h"; sourceTree = ""; }; + 8532F3DD3C373C14A106D14F67A3C301 /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; + 85E262E36BEDDEA0E7B4F4A870DA4314 /* JXPagingView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXPagingView-umbrella.h"; sourceTree = ""; }; + 8618BF2AA2A260801FDF48131074A906 /* JXCategoryTitleImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleImageView.m; path = Sources/TitleImage/JXCategoryTitleImageView.m; sourceTree = ""; }; + 862F24C5813636BD088499E062B47C78 /* HWPanModal-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "HWPanModal-Info.plist"; sourceTree = ""; }; + 874DD2FA3B20B6BCBCBEE03BEEBE1281 /* JXCategoryNumberCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryNumberCell.h; path = Sources/Number/JXCategoryNumberCell.h; sourceTree = ""; }; + 877837A5816B3B110C5B763CCBD0ECFD /* UITextField+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+LookinServer.m"; path = "Src/Main/Server/Category/UITextField+LookinServer.m"; sourceTree = ""; }; + 87DD67829823038B4E0D04582C0CB95C /* FLAnimatedImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-umbrella.h"; sourceTree = ""; }; + 886E6269011F3D0F924F30F32F08508F /* LookinWeakContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinWeakContainer.h; path = Src/Main/Shared/LookinWeakContainer.h; sourceTree = ""; }; + 88D5019FBBC4DC80F31FB68B1820A427 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; + 88D7B291E3BCDB41106F548FA3B84901 /* HWPanModalAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalAnimator.m; path = Sources/Animator/HWPanModalAnimator.m; sourceTree = ""; }; + 898DE7614EA3416744425477D130D9C7 /* JXCategoryIndicatorDotLineView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorDotLineView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.h; sourceTree = ""; }; + 89DA873F803BF9043720F615E8BC4CD5 /* LookinIvarTrace.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinIvarTrace.m; path = Src/Base/LookinIvarTrace.m; sourceTree = ""; }; + 8A0C74EF09B54680C98CCBF1F2BD297A /* JXCategoryIndicatorBallView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorBallView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.h; sourceTree = ""; }; + 8A6F594F279129456C02C7701DE5EDC3 /* AFNetworking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.debug.xcconfig; sourceTree = ""; }; + 8B0013F9906622545E27B913F2092F22 /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; + 8B0B848DED77C21AEA127E58094EE39E /* ResourceBundle-JXPagerView-JXPagingView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-JXPagerView-JXPagingView-Info.plist"; sourceTree = ""; }; 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MBProgressHUD; path = MBProgressHUD.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8C63EE1B9AB32B647D64489A498987B3 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; - 8CBF9C8DF911E4E9B2C6A4628B5BC93B /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; - 8D7D197A108D97B04C3BA390CD4499D8 /* HWVisualEffectView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWVisualEffectView.h; path = Sources/View/HWVisualEffectView.h; sourceTree = ""; }; - 8D9EC3F78C9EBFBAA2A4A0F3EE3D27AB /* MJPropertyType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyType.m; path = MJExtension/MJPropertyType.m; sourceTree = ""; }; - 8DDCF4465DE05312EF540D3B5319ADAF /* LookinIvarTrace.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinIvarTrace.m; path = Src/Base/LookinIvarTrace.m; sourceTree = ""; }; - 8EDBEC1105ABEB5730250B28CB605E44 /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; - 8EE2F8245BCEBA174A7A8891FBE03ECB /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; - 8FBE26B2A8BA76D5AA3E371D3CA2EAE6 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; - 9005237D68B29ED337A382B01C2917F8 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; - 9118BCB61472BB3349D3BC26BBAA9EE0 /* AFNetworking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.debug.xcconfig; sourceTree = ""; }; - 92B30D23B01D493E996B4DF061CC3062 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; - 92F9229FF7CD4EFBE6BB07684D5118E4 /* Masonry-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Masonry-Info.plist"; sourceTree = ""; }; - 9358338FB49CFCB7417D22C85E339488 /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; - 93A142314C8E6BF405461AFD41E16D08 /* HWPanModalPresentationAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationAnimator.h; path = Sources/Animator/HWPanModalPresentationAnimator.h; sourceTree = ""; }; - 93D6767143B7C5D00675B75D54B0AFEF /* LSTTimer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-umbrella.h"; sourceTree = ""; }; - 93DAC06B5293787BAAAA04E673812C59 /* LSTPopView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTPopView-dummy.m"; sourceTree = ""; }; - 95F5264D9ED9939AE536B5201D80DB5E /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; - 9694A97A95DD31F14A6A155FCCFE7837 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; + 8CE6BF39C6199FC5B55217046DDE2CDB /* UIVisualEffectView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIVisualEffectView+LookinServer.m"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.m"; sourceTree = ""; }; + 8E1682EACA92F366216BAB7320C375AA /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; + 8E8C0DD47533304FD7479FB5A47A4E3B /* SDImageFramePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFramePool.m; path = SDWebImage/Private/SDImageFramePool.m; sourceTree = ""; }; + 8F0F258366D8ED06A7D9EAD3DFCD004E /* LookinCustomDisplayItemInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomDisplayItemInfo.m; path = Src/Main/Shared/LookinCustomDisplayItemInfo.m; sourceTree = ""; }; + 8FD309B3FADE968B4258080AC443EFCB /* NSObject+MJCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJCoding.m"; path = "MJExtension/NSObject+MJCoding.m"; sourceTree = ""; }; + 903038F34EE93C82A3EF6A1F6BDF857B /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; + 908A8A591A12931E59C177277E1D126D /* LKS_AttrModificationPatchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrModificationPatchHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.m; sourceTree = ""; }; + 908BDA99457974AD8998A674A0C0FB12 /* LookinAppInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAppInfo.h; path = Src/Main/Shared/LookinAppInfo.h; sourceTree = ""; }; + 911E6F5D1D17453D35BE3FA4A9086972 /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; + 920CD059C1364A6BD18420074E635F40 /* UIViewController+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LookinServer.m"; path = "Src/Main/Server/Category/UIViewController+LookinServer.m"; sourceTree = ""; }; + 92B0AD9AA2CE09EEB0EF8C040E103B97 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; + 93081A25D8BCD8327365F5FAC77C46F3 /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; + 93A6F66AA21D4921B2C52643DAEF998F /* Masonry.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.debug.xcconfig; sourceTree = ""; }; + 9421B0E41FC583CAD966F98C60445BAB /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; + 94807C278EC259800EBCD3A346749877 /* UITextField+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+LookinServer.h"; path = "Src/Main/Server/Category/UITextField+LookinServer.h"; sourceTree = ""; }; + 94D99E2E2730992302FB9BAA7CCE2A1C /* HWPanModalPresentationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationController.m; path = Sources/Controller/HWPanModalPresentationController.m; sourceTree = ""; }; + 94DB79C6893EAE9D1A7D3559B485BCC5 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; + 9545413A1EE5D2E50A21E8D9794A771A /* Lookin_PTProtocol.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTProtocol.m; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.m; sourceTree = ""; }; + 956C8FF42F553F12124DED23E19FE31D /* Bugly.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.release.xcconfig; sourceTree = ""; }; + 95BD516A8F354C5C9CD65BFD30C9BED7 /* HWPanModalPanGestureDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPanGestureDelegate.h; path = Sources/Presentable/HWPanModalPanGestureDelegate.h; sourceTree = ""; }; + 95E2C10E638AC6421FE377F88DA72A45 /* UITableView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+LookinServer.m"; path = "Src/Main/Server/Category/UITableView+LookinServer.m"; sourceTree = ""; }; + 95EB1D88070F8207A333D4573DA43A15 /* LookinTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinTuple.h; path = Src/Main/Shared/LookinTuple.h; sourceTree = ""; }; 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-keyBoard-dummy.m"; sourceTree = ""; }; - 96AA5B4DE9A3DA12F53F6CB5D9AC99E2 /* LookinServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-umbrella.h"; sourceTree = ""; }; - 96B0036686E5E0170AC065045503F785 /* UIVisualEffectView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIVisualEffectView+LookinServer.h"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.h"; sourceTree = ""; }; - 972173A04BB5350B482CEE39EFFBE0EF /* DZNEmptyDataSet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-umbrella.h"; sourceTree = ""; }; - 979F4BB7A6CE1AF72F02D7E7F5EC0D7F /* DZNEmptyDataSet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DZNEmptyDataSet-dummy.m"; sourceTree = ""; }; - 97C8222012D0B30C2E5C40B4867A1AAF /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; - 981BA7AE91A568EC43916303978CE501 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; - 98AC0F8649D533FEA089C0D7C8018ABC /* UIImageView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+LookinServer.m"; path = "Src/Main/Server/Category/UIImageView+LookinServer.m"; sourceTree = ""; }; - 99462BD5694E37EA26675903E46200AD /* DZNEmptyDataSet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DZNEmptyDataSet.modulemap; sourceTree = ""; }; - 995AA67533265367D116C78944065262 /* UIViewController+PanModalPresenter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalPresenter.h"; path = "Sources/Presenter/UIViewController+PanModalPresenter.h"; sourceTree = ""; }; - 996E03E4CC36DB69F10AD9C8F02472C6 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; - 9B55BC4062AFBC21B6F27CA6801F7F45 /* LookinAttributesSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesSection.h; path = Src/Main/Shared/LookinAttributesSection.h; sourceTree = ""; }; - 9B6321B292B6BCA48E9BD6268BB60C34 /* AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AFNetworking.modulemap; sourceTree = ""; }; - 9B9528B0058E986186BACF5E7A40A742 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; - 9BC9B980A57804E48A923737AE36ACB0 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; - 9C27FE20E006C874307EF5F2B30AA69E /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; - 9C55508E3B8FCF1A927848A4CFAA53D0 /* UIBlurEffect+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIBlurEffect+LookinServer.h"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.h"; sourceTree = ""; }; - 9C6E20B7CDAEE04E340BBA081726D5AC /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; - 9C92B663B045144AB6926F9C7A3DA791 /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; - 9CC6285CEC9BC9D5CBF28149790EF660 /* LSTTimer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTTimer.h; path = LSTTimer/Classes/LSTTimer.h; sourceTree = ""; }; - 9CE0E20C019F9D3D3297E4BD9E854459 /* MJExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.debug.xcconfig; sourceTree = ""; }; - 9D3649A7CA35A3580F58B4481D9820AF /* NSObject+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+LookinServer.h"; path = "Src/Main/Server/Category/NSObject+LookinServer.h"; sourceTree = ""; }; + 96BA563F965A1054AC53D0F3D5BD3AFE /* NSObject+MJClass.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJClass.m"; path = "MJExtension/NSObject+MJClass.m"; sourceTree = ""; }; + 97428E2E54CAC989DD7A12908613EE16 /* LookinAttributesSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesSection.m; path = Src/Main/Shared/LookinAttributesSection.m; sourceTree = ""; }; + 9777292C62AA2375C63BAEF75D1F940C /* NSObject+MJCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJCoding.h"; path = "MJExtension/NSObject+MJCoding.h"; sourceTree = ""; }; + 979A3BAC302F65855776332D6027B80C /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; + 97E0EEAE3EFB0492B434EC2A704903DE /* LSTPopView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTPopView-dummy.m"; sourceTree = ""; }; + 9820AAA1C732351179414BB46300A1B7 /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; + 989150BD3DA7E7AE5D05E2F37E778A8D /* LookinConnectionResponseAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionResponseAttachment.h; path = Src/Main/Shared/LookinConnectionResponseAttachment.h; sourceTree = ""; }; + 98D2F9331639FC6D12A4091DD5F47C96 /* JXCategoryDotCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryDotCell.h; path = Sources/Dot/JXCategoryDotCell.h; sourceTree = ""; }; + 98EB3787337AAE5AD71D422A832D852F /* UIBlurEffect+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIBlurEffect+LookinServer.m"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.m"; sourceTree = ""; }; + 99302CD0854353E1FA9C8EE70F3FCF59 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; + 99CBD01AD35AF793B343AC0ACF2CF164 /* UICollectionViewLayout+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewLayout+MJRefresh.m"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.m"; sourceTree = ""; }; + 9AFDFE95B53BDA0F282212CF3E9B940F /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; + 9B2F1B06BC651834D7B3EA1FBC96E466 /* LSTPopView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTPopView.m; path = LSTPopView/Classes/Code/LSTPopView.m; sourceTree = ""; }; + 9B89E97BE59B9448BC63E348FA77F055 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; + 9BAC219B4754C1E13B6929143780BE52 /* UIViewController+PanModalDefault.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalDefault.h"; path = "Sources/Presentable/UIViewController+PanModalDefault.h"; sourceTree = ""; }; + 9C599636DAB63CB63CC65E368E1BAAFC /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; + 9CE19B5D21ECCFC76311F186D2B3F651 /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; + 9D31ED01216EF87422BD04709990AFA0 /* LookinDashboardBlueprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDashboardBlueprint.h; path = Src/Main/Shared/LookinDashboardBlueprint.h; sourceTree = ""; }; 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 9D7E450C43D308EE4C1B879D0B60A4BF /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; 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; }; + 9DA5F48CB9575D0E2C775D8D7C262C14 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; + 9DC4AC8D166AB2BD8B557BFA9FA9872C /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; 9DDD0462C32F55EF5E9CB1056459809F /* Pods-CustomKeyboard-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CustomKeyboard-umbrella.h"; sourceTree = ""; }; + 9E18E15D3A7901E5A84136DADC023216 /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; + 9E285AA5C9AFC477B5336B5AC2C863D1 /* UILabel+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+LookinServer.m"; path = "Src/Main/Server/Category/UILabel+LookinServer.m"; sourceTree = ""; }; + 9E54C32C4CB68C01C57E81C03350F4B2 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; + 9E9F380E4292210FA99A8F5918C667C3 /* JXCategoryFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryFactory.m; path = Sources/Common/JXCategoryFactory.m; sourceTree = ""; }; + 9F0B0B2E800350D0E38B61EF43E6CE75 /* LKS_AttrModificationPatchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrModificationPatchHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.h; sourceTree = ""; }; + 9F3CA71777F849F0196634A7AB215BDC /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 9F69E397FB4534DAE86CE36E624729DC /* NSObject+MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJProperty.h"; path = "MJExtension/NSObject+MJProperty.h"; sourceTree = ""; }; - 9FC0CB167AF5751B03431E60D722046F /* SDCallbackQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDCallbackQueue.h; path = SDWebImage/Core/SDCallbackQueue.h; sourceTree = ""; }; - 9FDBCFE0DF35F1346C9E17295438B88A /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; - A0368DACE23383F23784ADE51EC66773 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; - A0C23E787A5997AF276176CBB988D241 /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; - A0FE1EF8C4E4226EA31F342E982E620B /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; - A14004EB25D5BC99B439F5543C20E8CF /* MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJProperty.h; path = MJExtension/MJProperty.h; sourceTree = ""; }; - A16C385BAD6F9C544C59D31A650946CC /* LSTPopView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.release.xcconfig; sourceTree = ""; }; - A187D3CE401AEF4272748BA58A834812 /* NSBezierPath+SDRoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+SDRoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.h"; sourceTree = ""; }; - A1A1675F7ED6C653EC09CB7ED0E5281E /* HWPanModal-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-prefix.pch"; sourceTree = ""; }; - A1CAA004ADB375344EE1C0A0FF7E804F /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; - A20F0D257E58B1A870FF109778CD4B25 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; - A28F16D63BCA40F7DC78734CFE3A235D /* LookinDashboardBlueprint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDashboardBlueprint.m; path = Src/Main/Shared/LookinDashboardBlueprint.m; sourceTree = ""; }; + 9F94B604866DB37515D32D88635EFEE2 /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; + 9FD83B41506E28893BC297C4BDAB1B46 /* NSObject+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Lookin.h"; path = "Src/Main/Shared/Category/NSObject+Lookin.h"; sourceTree = ""; }; + 9FEF42DD4D5BC001DB0C88A7EB3DB63B /* LookinServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LookinServer-Info.plist"; sourceTree = ""; }; + A020A834828880C972FE2E839A9DD2B4 /* FLAnimatedImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FLAnimatedImage-Info.plist"; sourceTree = ""; }; + A05508640C7796358B45E0B5C0C73183 /* DZNEmptyDataSet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-umbrella.h"; sourceTree = ""; }; + A1067B051CF7A4C36817E6F668A3E7A6 /* AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-umbrella.h"; sourceTree = ""; }; + A1E84842FBF29954156976CB6DD0F275 /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; + A2309A5B4A1B9C14AF7AEDEC1036F76E /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; + A237C0F799BD0639307F9DF3E58B71CE /* MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJRefresh-Info.plist"; sourceTree = ""; }; + A2C056F5D1231FA94F92AA3712D545C2 /* JXCategoryIndicatorImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorImageView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.m; sourceTree = ""; }; A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-keyBoard-umbrella.h"; sourceTree = ""; }; - A34081EC91EFEC16FB92BEE1A470458E /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; - A3F7C5007915361DF90A13BBA8CD3EFF /* UIViewController+Presentation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+Presentation.h"; path = "Sources/Presentable/UIViewController+Presentation.h"; sourceTree = ""; }; - A4288DFF17DF27DEEB1590D7281FBBD7 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; - A43798E6CE0478C1CA6ECFD6AE110593 /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; - A4685A3F7A42EE78A5B66190A100B3C2 /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; - A4F699C3287866E6143CDE3B9C0C8BAA /* LSTTimer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-prefix.pch"; sourceTree = ""; }; + A4D8DE877E59C1B5596F10D0213ADC5D /* UIView+LSTPV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LSTPV.m"; path = "LSTPopView/Classes/Code/UIView+LSTPV.m"; sourceTree = ""; }; A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = AFNetworking; path = AFNetworking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A65F19FCE0D1235D1B87CDFD5146518C /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; - A6B7C52A59144554A5C4CCBAF9A65AC8 /* SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SDWebImage-Info.plist"; sourceTree = ""; }; + A5262AA56B4C8511CBA390D4808E37F2 /* UIView+LSTPV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LSTPV.h"; path = "LSTPopView/Classes/Code/UIView+LSTPV.h"; sourceTree = ""; }; + A56B5A6CAF35241FF9D41CAC7DC1D6D2 /* UITextView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextView+LookinServer.h"; path = "Src/Main/Server/Category/UITextView+LookinServer.h"; sourceTree = ""; }; + A5C74D4E7CA539C956587A3615702D24 /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; + A5FC57ACB22E21DCA20F2B582D18A03F /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; + A67C49E3D329D82553E5FEBB4951ABD7 /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; + A697ED78520252C2C8CA71D13BA57F79 /* AFNetworking.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.release.xcconfig; sourceTree = ""; }; A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-keyBoard.release.xcconfig"; sourceTree = ""; }; - A701AEED09FE2183269AA89DFA8E4B7A /* CALayer+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+Lookin.h"; path = "Src/Main/Shared/Category/CALayer+Lookin.h"; sourceTree = ""; }; - A732383A60ACA7498BD810AAC8E31192 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; - A73F313A18713E36B251C92C66806CE8 /* MJPropertyKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyKey.h; path = MJExtension/MJPropertyKey.h; sourceTree = ""; }; - A75653F7F6754FE7D26DA5C94A641DE8 /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; - A75ADFE775EE09236D1DF5672ACB9A4C /* LKS_TraceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_TraceManager.h; path = Src/Main/Server/Others/LKS_TraceManager.h; sourceTree = ""; }; - A8107C05A5879CBA4916F6AD4685D772 /* LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServer.h; path = Src/Main/Server/LookinServer.h; sourceTree = ""; }; - A89D8D8B71AD9A723D88B13AF519A214 /* CALayer+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+LookinServer.h"; path = "Src/Main/Server/Category/CALayer+LookinServer.h"; sourceTree = ""; }; - A8A5F422D3A80975E78C20D9980BBAE7 /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; - A8CED6128E73E0F84131EFEF369AFB64 /* FLAnimatedImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FLAnimatedImage-Info.plist"; sourceTree = ""; }; - A923EA60F7DA10F8B88FCD5E16702406 /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; - AA356D7B80B205861FCCD6FECB42DDE3 /* LookinWeakContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinWeakContainer.h; path = Src/Main/Shared/LookinWeakContainer.h; sourceTree = ""; }; - AA4F3775DDC9BAD8BC30D51376A765F0 /* LookinCustomAttrModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomAttrModification.h; path = Src/Main/Shared/LookinCustomAttrModification.h; sourceTree = ""; }; - AA574A6EA7EECCE7D1E086B964FA3C65 /* LookinAttrIdentifiers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrIdentifiers.h; path = Src/Main/Shared/LookinAttrIdentifiers.h; sourceTree = ""; }; - AA75F2BBB1F8188D75855FF34D8A7AE3 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; - AB547BD41867170F26173D27CE44DCE6 /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; - AB771D1A9F6BE6B15418DB387EE5ADF3 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; - AB93341F4852834DE8BA29DAB3E69371 /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = ""; }; - ABF08650352052DEA4797A89BFD856FF /* SDImageFramePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFramePool.h; path = SDWebImage/Private/SDImageFramePool.h; sourceTree = ""; }; - ACDFCFE3242922DD1C6F9C0911E0A56B /* LookinWeakContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinWeakContainer.m; path = Src/Main/Shared/LookinWeakContainer.m; sourceTree = ""; }; - AD1C2B98D240951DA7BD821093E6C395 /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; - AD7824F87B7A4AC0EB49B7B856736BF2 /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; - AE403DA6C5955C67D130890FCA703778 /* LKS_RequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_RequestHandler.h; path = Src/Main/Server/Connection/LKS_RequestHandler.h; sourceTree = ""; }; - AE6F296D300159E8673214D526F10584 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; - AE979EFDEE516846488B7EE0D6F7EED8 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; - AE9EAD92339D5CAFE9DD672B7A3B6E7D /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; - AF32E35E8F4552F6AF08F140AD085FE4 /* KeyValueObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KeyValueObserver.h; path = Sources/KVO/KeyValueObserver.h; sourceTree = ""; }; - AFC953B00F77A76AF38E0FA2C8AB5F03 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; - AFF39BEB58B97CA8F3DFDE7996909112 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; - AFFA5747833468A5901D8AA31E822627 /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; - B0023999B588A745D2530760778D09F9 /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; - B0B0D3A4B05EE4A8AA2F56AF68EA3ADF /* MBProgressHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.debug.xcconfig; sourceTree = ""; }; + A75069F0A291D74DCBF8F50AA213D806 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; + A76F5B96F548930505FADC6CE9430C2D /* LSTTimer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.debug.xcconfig; sourceTree = ""; }; + A7A769F7014A1F30EE6690E054898162 /* LookinStaticAsyncUpdateTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinStaticAsyncUpdateTask.h; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.h; sourceTree = ""; }; + A8105D73597438386DADF22233AAD4B3 /* LookinHierarchyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyInfo.h; path = Src/Main/Shared/LookinHierarchyInfo.h; sourceTree = ""; }; + A87C5BAF6B8038E9EE8A33551A798606 /* HWPanModalContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContainerView.h; path = Sources/View/PanModal/HWPanModalContainerView.h; sourceTree = ""; }; + A8CBDE62F720E1751DB8B8E4DF3B0E9F /* Masonry-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-umbrella.h"; sourceTree = ""; }; + A96A60100BE610809D6E0C7741CF992C /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; + A98C5DE93CCDA0FE6E6A916B05B69DCC /* LookinServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-umbrella.h"; sourceTree = ""; }; + A98C848E174628ED3A950CA220B4CB9A /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; + A9B0E721EBB3914236D06250E333F1E9 /* LKS_HierarchyDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.h; sourceTree = ""; }; + AAF02F3D4DFB903955A463298716DCE2 /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; + AAFEF3383472BCA83D71A7DAAC5522CC /* JXCategoryIndicatorParamsModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorParamsModel.m; path = Sources/Common/JXCategoryIndicatorParamsModel.m; sourceTree = ""; }; + AB253C473EBD2DF633A230C7FAA304B7 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; + ABD4819FE00A1A954ABDDF0893C72587 /* JXCategoryDotCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryDotCellModel.h; path = Sources/Dot/JXCategoryDotCellModel.h; sourceTree = ""; }; + AC558AE5F168E24878BD4ACF3EE1274A /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; + ACC63F439241C64C221C18A8991C569B /* HWBackgroundConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWBackgroundConfig.h; path = Sources/View/HWBackgroundConfig.h; sourceTree = ""; }; + AD28EF542A0B7F210E7C92D1D9DEC003 /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; + AE09548D63659FAE72F5C6F1EBF230FC /* MJExtension-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-umbrella.h"; sourceTree = ""; }; + AEB0E8A16F89DAA71F5718EDBF3E2A83 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; + AED1D348255F77CE4BB2B0BB61E22F08 /* Bugly.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bugly.framework; sourceTree = ""; }; + AF302A5E7BA56F9F631A8591DA72D3C3 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; + AFBCBD9F77FD5CF26B2BEBE02B1E19D9 /* JXPagingView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JXPagingView-dummy.m"; sourceTree = ""; }; + AFC299E1B60C8759EA1F35B7A91019A4 /* LookinDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDefines.h; path = Src/Main/Shared/LookinDefines.h; sourceTree = ""; }; + B05FD8A103E2A06EE08BE59B38FC36B4 /* UIViewController+PanModalPresenter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalPresenter.m"; path = "Sources/Presenter/UIViewController+PanModalPresenter.m"; sourceTree = ""; }; + B072B2B3BF7FE061CC694AE00BCF5858 /* UIView+WebCacheState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheState.h"; path = "SDWebImage/Core/UIView+WebCacheState.h"; sourceTree = ""; }; B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SDWebImage; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B12BB85356FB25DB1C8CA459600D3F8E /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; - B1ABBFCC8D2F6B393D3F4389129E97F5 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; - B21F4D087C3795EA326FE588C03028CC /* MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJRefresh-Info.plist"; sourceTree = ""; }; - B2770F360CD876399FE83C30619DBC24 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; - B354D25F9AAB5A1E64BA7AAED1BA9991 /* UIView+WebCacheState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheState.h"; path = "SDWebImage/Core/UIView+WebCacheState.h"; sourceTree = ""; }; - B36F0D1046FE48DF23AE7AB21CD678D3 /* LookinDisplayItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItem.m; path = Src/Main/Shared/LookinDisplayItem.m; sourceTree = ""; }; - B4E40A4D926E9D870172CB05C27151FC /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; - B51F28BC73CA22D31949B1635AF8CAE1 /* UIView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LookinServer.m"; path = "Src/Main/Server/Category/UIView+LookinServer.m"; sourceTree = ""; }; - B53B6AA90E9FBFBBE4E4275DE10531D3 /* CALayer+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+Lookin.m"; path = "Src/Main/Shared/Category/CALayer+Lookin.m"; sourceTree = ""; }; - B647311E2487029EA920B923258697D2 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJExtension/PrivacyInfo.xcprivacy; sourceTree = ""; }; - B686FCB243BCB66C7BB1F42E6A4B3417 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; - B68B9359B3F4863CD16BC4AF1031EDD1 /* CALayer+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+LookinServer.m"; path = "Src/Main/Server/Category/CALayer+LookinServer.m"; sourceTree = ""; }; - B71D1DE227720C6548D26CB1380A595F /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; - B772F3922ED9C416DBFEA6651FBB3930 /* LKS_HierarchyDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.m; sourceTree = ""; }; - B876DE6F099D679F03040B8EF24E5C82 /* HWPanModalPresentableHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentableHandler.m; path = Sources/Mediator/HWPanModalPresentableHandler.m; sourceTree = ""; }; - B896A10F9115068B682B35E4774898B6 /* LSTTimer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTTimer.modulemap; sourceTree = ""; }; - B8F37F4AA285AB6E2540A4063D8B802F /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; - B90789CA4A099321E01CFF8CB566B5F3 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; - B9D9760D282FEC09C3A5774993001829 /* MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtension.h; path = MJExtension/MJExtension.h; sourceTree = ""; }; - BAD931CF8729677FC0BD6248B49E6631 /* LookinConnectionResponseAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionResponseAttachment.h; path = Src/Main/Shared/LookinConnectionResponseAttachment.h; sourceTree = ""; }; - BAF401BA2295E570793228F6E0B37E3F /* MJRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJRefresh.modulemap; sourceTree = ""; }; - BC24AF9FD32062D15DE214E94B0E828F /* LKS_GestureTargetActionsSearcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_GestureTargetActionsSearcher.m; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.m; sourceTree = ""; }; - BC5A2383372F42B2452808A886E02C6B /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; - BC686BE8B7F5AC6B3A652ABBA6EAE87A /* LKS_CustomAttrSetterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrSetterManager.h; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.h; sourceTree = ""; }; - BDC5D95848173A06A25E49216A4BEFDC /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; + B26771C31428D52F8DFB859AE1AC3503 /* MJRefreshStateTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.m; sourceTree = ""; }; + B2D84B5B7090CE22D8AFB107E403CA13 /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; + B3F518DFA534AD602991065542FADB29 /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; + B4121F7B04BCCD0FB01ED16A27F6E571 /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; + B444EEABD213A46C07AC5F1B8D73FBF1 /* UIView+HW_Frame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+HW_Frame.m"; path = "Sources/Category/UIView+HW_Frame.m"; sourceTree = ""; }; + B46184374613AB561CB67E0F1EF14DD8 /* JXCategoryViewAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryViewAnimator.m; path = Sources/Common/JXCategoryViewAnimator.m; sourceTree = ""; }; + B46DF40E1300BE3FC009F0D7D5CF5ED0 /* UIViewController+PanModalPresenter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalPresenter.h"; path = "Sources/Presenter/UIViewController+PanModalPresenter.h"; sourceTree = ""; }; + B5C750768FB8EE26E8F613C1D910045B /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; + B5EF3518EEE6DB69526EE34FF9D58DFD /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; + B63B552A0A52E65141ED8027A3FCCB0D /* UIView+HW_Frame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+HW_Frame.h"; path = "Sources/Category/UIView+HW_Frame.h"; sourceTree = ""; }; + B7498A05A9D7A9FEE19E027CABE6B9DD /* JXCategoryImageCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageCell.m; path = Sources/Image/JXCategoryImageCell.m; sourceTree = ""; }; + B74F835090D47DFE066B4DAD231882AC /* LookinAttributesSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesSection.h; path = Src/Main/Shared/LookinAttributesSection.h; sourceTree = ""; }; + B79CB4484CF793AF65C86B424D955922 /* LSTPopView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.release.xcconfig; sourceTree = ""; }; + B7AD3647BEEBE4C691B28F5746D51E7D /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; + B8E404753BE7BE627A458AE982427654 /* HWPanModalPresentableHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentableHandler.m; path = Sources/Mediator/HWPanModalPresentableHandler.m; sourceTree = ""; }; + B8E77F018E5BE1F8C021ACB0978497F6 /* LookinServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.release.xcconfig; sourceTree = ""; }; + B937D529B74DB9581A000F395FF3B6F7 /* NSArray+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Lookin.h"; path = "Src/Main/Shared/Category/NSArray+Lookin.h"; sourceTree = ""; }; + B9C3A1374DADDEAE813F69F05F5A2564 /* HWShoppingCartPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWShoppingCartPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h; sourceTree = ""; }; + B9D007BE64FBA88DB3F5D92E0EAEDEAD /* LKS_RequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_RequestHandler.h; path = Src/Main/Server/Connection/LKS_RequestHandler.h; sourceTree = ""; }; + BB4D65769822C57911F4A84B9F8FADFA /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; + BB4F011171FCB76B1AEBE390F843E930 /* JXCategoryView-JXCategoryView */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "JXCategoryView-JXCategoryView"; path = JXCategoryView.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + BBB6E7BC9BF649910D7654B98B396BD4 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; + BBC2FF6B1D45486A6893E456C4B85E05 /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; + BBC5ED786070BB7777881EF2B55FF369 /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; + BC38AB7DAEDA3DEEFFAC64BDA7FA3C88 /* Lookin_PTUSBHub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTUSBHub.m; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.m; sourceTree = ""; }; + BC5B799F7FC71DC9649AD62AE8B34DC7 /* HWVisualEffectView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWVisualEffectView.h; path = Sources/View/HWVisualEffectView.h; sourceTree = ""; }; + BC88BA608872DDF711D78498FD36C1AA /* LKS_GestureTargetActionsSearcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_GestureTargetActionsSearcher.m; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.m; sourceTree = ""; }; + BCAF03C4FF87945F86C061039CB2443F /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; + BCE8E065BE01E56E0D55097E36AB8FC2 /* LookinDisplayItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItem.m; path = Src/Main/Shared/LookinDisplayItem.m; sourceTree = ""; }; + BD89A8E0323AB57CE283C150C3D4C556 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/include/FLAnimatedImageView.h; sourceTree = ""; }; + BDE2764DE3EEF78845A18DB898232DC0 /* NSObject+MJKeyValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJKeyValue.h"; path = "MJExtension/NSObject+MJKeyValue.h"; sourceTree = ""; }; BDEE6097B6411333154FEF90A280E3E4 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - BE0B0E1A9A292EDE11246C6685B3FF8A /* NSObject+MJCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJCoding.m"; path = "MJExtension/NSObject+MJCoding.m"; sourceTree = ""; }; - BE11DDB27A20A87C02AE0F91342FA9E9 /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; - BF559CBB24F4A49720F72A32ADDCCFE2 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; - BF5EC4E67D9695435096AE8FFF0726FA /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; - BF679003FB79C12E8A8221EC19044EC3 /* HWPanModalIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalIndicatorProtocol.h; path = Sources/View/HWPanModalIndicatorProtocol.h; sourceTree = ""; }; - BFC6D8F98A0A99B4F62553DD6B2DE362 /* HWPanContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanContainerView.m; path = Sources/View/HWPanContainerView.m; sourceTree = ""; }; - BFD36E41E270B32316CAE346D73B1BB4 /* LKS_EventHandlerMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_EventHandlerMaker.m; path = Src/Main/Server/Others/LKS_EventHandlerMaker.m; sourceTree = ""; }; - BFFCEECD2573D5472737D9AFB10A0BB2 /* LKS_ObjectRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ObjectRegistry.h; path = Src/Main/Server/Others/LKS_ObjectRegistry.h; sourceTree = ""; }; - C02050360407C95F57A46E3425089760 /* MJPropertyType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyType.h; path = MJExtension/MJPropertyType.h; sourceTree = ""; }; - C0E2F76DB6A01DBF448BF55D94414007 /* LKS_CustomDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.m; sourceTree = ""; }; - C15066DB017692FFB93D6BF3C34128D3 /* HWVisualEffectView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWVisualEffectView.m; path = Sources/View/HWVisualEffectView.m; sourceTree = ""; }; - C1EC495C820AD2FE568E285440075D82 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; - C246D6EBE3F2F29765C86C55F130AD3F /* Color+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Color+Lookin.h"; path = "Src/Main/Shared/Category/Color+Lookin.h"; sourceTree = ""; }; - C2641A163910BF7346FA6273237FDB7D /* Lookin_PTProtocol.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTProtocol.m; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.m; sourceTree = ""; }; - C387114CB39CEE512E07F38E4439D4D8 /* UIView+HW_Frame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+HW_Frame.h"; path = "Sources/Category/UIView+HW_Frame.h"; sourceTree = ""; }; - C45F5D95A727E9121E38DFEFADA82094 /* UICollectionViewLayout+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewLayout+MJRefresh.m"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.m"; sourceTree = ""; }; - C49E916A72175489DFFC49A15E87403D /* HWPanModalHeight.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalHeight.h; path = Sources/Presentable/HWPanModalHeight.h; sourceTree = ""; }; - C4D31F6949E2640BBC06F6F5E862EA6B /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; - C5830BBF390FC8D9CCA3C6BDBE65DD04 /* LookinAttributesGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesGroup.m; path = Src/Main/Shared/LookinAttributesGroup.m; sourceTree = ""; }; - C59475012E53558600AFA4F7685E8F9E /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; - C657F16F9FE7919D2B27F05D611C2F2D /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; - C685758668AFAC91E0AE4675AEA80600 /* SDImageAWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAWebPCoder.h; path = SDWebImage/Core/SDImageAWebPCoder.h; sourceTree = ""; }; - C6B393724F3296B6116FF029FBA74D60 /* AFNetworking-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "AFNetworking-Info.plist"; sourceTree = ""; }; - C7586CB0CDC6CAF19F6A64083B6C8C0F /* HWPanModalPresentationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationController.m; path = Sources/Controller/HWPanModalPresentationController.m; sourceTree = ""; }; - C77A046F5E5912D1BF11BAA897F3C198 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; - C7B7F069BA04D7981F13F5FA41B3BAB5 /* LKS_HierarchyDetailsHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDetailsHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.h; sourceTree = ""; }; - C7CA2BC79CB47B27F4A1481476747F49 /* DZNEmptyDataSet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-prefix.pch"; sourceTree = ""; }; - C7E35B5D53702D7A355AD38231170EAB /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; - C82B001CD34AC553F11A55D1E576C902 /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; - C84FAFE47B2E31104A515395A5239442 /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; - C8667A6D81C45427108730E481B7134F /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; - C88E60EA597845949F0925B844477F63 /* MJExtensionConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtensionConst.h; path = MJExtension/MJExtensionConst.h; sourceTree = ""; }; - C8974089710AB7F8A65D77241AA70557 /* FLAnimatedImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.debug.xcconfig; sourceTree = ""; }; - C930EDADB5661C1F591CA4E0A60BCA26 /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; - CA040E4FC9E6D5254278E66354DE0995 /* LookinAppInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAppInfo.h; path = Src/Main/Shared/LookinAppInfo.h; sourceTree = ""; }; + BE09431A1BE57A882CA02B1E434916A8 /* NSObject+MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJProperty.h"; path = "MJExtension/NSObject+MJProperty.h"; sourceTree = ""; }; + BE10A2A4B13E0F15A962DBEA161DE595 /* LKS_AttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.h; sourceTree = ""; }; + BE6EFE785E6216D9C7C1D6B7A4EEA5EA /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; + BEB32B7BEE20F8A74F80D03511F02260 /* JXCategoryDotCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryDotCell.m; path = Sources/Dot/JXCategoryDotCell.m; sourceTree = ""; }; + BEC06B30EADD5F0931B350F94CD4D15C /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; + BEE43BCA7C1A101BFC7A5856F8793387 /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; + BF40FB09CDD92326BB3177C14DF172AD /* LSTPopView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopView.h; path = LSTPopView/Classes/Code/LSTPopView.h; sourceTree = ""; }; + BF9910B7B2FF86AF620A45955A338072 /* JXCategoryIndicatorCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorCell.h; path = Sources/Indicator/JXCategoryIndicatorCell.h; sourceTree = ""; }; + BFEF7CB304E59179EBDA954FA636E74D /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; + C02B6DB0CED9923894E4B972F8B03882 /* NSSet+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSSet+Lookin.m"; path = "Src/Main/Shared/Category/NSSet+Lookin.m"; sourceTree = ""; }; + C06B04E0ABEA41660753A9D5F58572EE /* FLAnimatedImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.release.xcconfig; sourceTree = ""; }; + C0ECED1A3FCBB93D40B1BFFF5AE2F27D /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; + C1227D6957584FA14F5EFE311854C54A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = WebImage/PrivacyInfo.xcprivacy; sourceTree = ""; }; + C181D8B9B1142624BE8BFFA787AA2854 /* LSTTimer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTTimer-dummy.m"; sourceTree = ""; }; + C1F534C5FFF39633128C9B99F1BBF1B5 /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; + C205DB74EDBD3C80FB36923BD2255DBB /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; + C371FCAC7DF4BD1C57C3D164BD5A8759 /* JXCategoryView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXCategoryView-prefix.pch"; sourceTree = ""; }; + C3A46B03C308EEEB11F2A62BA5D2E8BE /* JXCategoryView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = JXCategoryView; path = JXCategoryView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C4A783F974F95D31DCCDA721D4F965EC /* LSTTimer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTTimer.h; path = LSTTimer/Classes/LSTTimer.h; sourceTree = ""; }; + C4B0E298E792EE24705C7E8457669228 /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; + C55730A1966B5DF338B0554ACC4B0B16 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; + C5719A8B6A945982F0856B5A616B379E /* NSObject+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+LookinServer.m"; path = "Src/Main/Server/Category/NSObject+LookinServer.m"; sourceTree = ""; }; + C5A25B7B454717DB3993591B5E8B612E /* NSBezierPath+SDRoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+SDRoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.m"; sourceTree = ""; }; + C5A9A86ABA54140CD0A5B6CD44C79740 /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; + C5FD92D35D7D1F18C67D17C9DD534533 /* LSTTimer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-prefix.pch"; sourceTree = ""; }; + C617C2D863C4AC28AF0370EDC02120A9 /* JXCategoryViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryViewDefines.h; path = Sources/Common/JXCategoryViewDefines.h; sourceTree = ""; }; + C626E0F07BD081EBE5955DEA5669BF14 /* UIColor+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+LookinServer.m"; path = "Src/Main/Server/Category/UIColor+LookinServer.m"; sourceTree = ""; }; + C63ECE6EA6AB3C1B9F676C1A2510CA67 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; + C6B15D5B29642260AB882050F51A8AE5 /* HWPanModal.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.debug.xcconfig; sourceTree = ""; }; + C6B6ABC9B259D86AA3C2451E682BE701 /* JXCategoryNumberView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryNumberView.h; path = Sources/Number/JXCategoryNumberView.h; sourceTree = ""; }; + C746AE302AD12A4D0F6E287CACA690C6 /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; + C74AFAA0D49E0563D9312CEA70CCF8B3 /* JXCategoryNumberCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryNumberCellModel.h; path = Sources/Number/JXCategoryNumberCellModel.h; sourceTree = ""; }; + C7E392E347A9555F1447E0FBB3E777E5 /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; + C806BECAA1C722F04FE4A89D9B14A0E0 /* UIViewController+Presentation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+Presentation.m"; path = "Sources/Presentable/UIViewController+Presentation.m"; sourceTree = ""; }; + C8B51A0410EE632DF42E1C298E25B221 /* MJPropertyKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyKey.m; path = MJExtension/MJPropertyKey.m; sourceTree = ""; }; + C8BABB078FC5FF697A3609C777FC51FC /* HWPanModalIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalIndicatorProtocol.h; path = Sources/View/HWPanModalIndicatorProtocol.h; sourceTree = ""; }; + C947209A5CDFABA11FEBE5D709864961 /* HWPageSheetPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPageSheetPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m; sourceTree = ""; }; + C9DDC2FE19D7DC5621872F440C5E8A37 /* MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJProperty.m; path = MJExtension/MJProperty.m; sourceTree = ""; }; + C9F0D4D92726FF95FE428AA975E93DE2 /* LookinAttributeModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributeModification.h; path = Src/Main/Shared/LookinAttributeModification.h; sourceTree = ""; }; + CA18A067DCACA93C5FD4591EBC943217 /* HWPanModal.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.release.xcconfig; sourceTree = ""; }; + CAD02815855109CE0DDD83222F913EF8 /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; CAD1D653361EAFCC0E4FFD8252FC1E74 /* Pods-CustomKeyboard.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-CustomKeyboard.modulemap"; sourceTree = ""; }; - CB1BEFB1C0257A74B80CAF80DB336894 /* LSTTimer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.release.xcconfig; sourceTree = ""; }; - CB56ABA66093040F0D62AF378BB66DBE /* LKS_CustomAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.h; sourceTree = ""; }; - CB96704A28B66FFCFA6B43392123348C /* LookinAttrIdentifiers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttrIdentifiers.m; path = Src/Main/Shared/LookinAttrIdentifiers.m; sourceTree = ""; }; - CC87F6E60998716F313AD85E3F2F0C78 /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; - CD29BD8633F552915B08BF15C7E0DFFF /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; - CDEC5449CBECD6C324B9864AD284EC55 /* Image+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Image+Lookin.m"; path = "Src/Main/Shared/Category/Image+Lookin.m"; sourceTree = ""; }; - CE1FC58856D64F439A2DB39A5CBEAF01 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; - CE8561E7F90B3736EA348E5236FECB1C /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; - CE909BA066F9B44E9C2F036FF3FD44FE /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; - CEFEE7CEBA57AF6426BA05F18F444C4E /* NSString+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Lookin.h"; path = "Src/Main/Shared/Category/NSString+Lookin.h"; sourceTree = ""; }; + CAD21419CFC8A372DB941E7983ADDD9D /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; + CB40236F7A3DB0EECDBA370753BEDDD4 /* LookinAppInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAppInfo.m; path = Src/Main/Shared/LookinAppInfo.m; sourceTree = ""; }; + CBA389E7DB380F4012EFBD733C81D43A /* JXCategoryView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JXCategoryView-dummy.m"; sourceTree = ""; }; + CC8BAAD188938B05A876ECFEAA39F2E6 /* JXCategoryIndicatorRainbowLineView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorRainbowLineView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.m; sourceTree = ""; }; + CCA4AAE27B9CAF06CC2B0A3C0A3F0594 /* UIScrollView+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+Helper.m"; path = "Sources/Category/UIScrollView+Helper.m"; sourceTree = ""; }; + CDE98EE96840F02E6074E842D456A2E3 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; + CE3837EC7E52B2C2855416D01CB974C7 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; + CE77C4D90418C342647C55D75A5C1AE8 /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; + CF0E98CA3E42AAC3B854E232BB1AF7FB /* LookinCustomDisplayItemInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomDisplayItemInfo.h; path = Src/Main/Shared/LookinCustomDisplayItemInfo.h; sourceTree = ""; }; CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "SDWebImage-SDWebImage"; path = SDWebImage.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - CF38798B2D107B8F8B096B856DF98A24 /* Lookin_PTPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTPrivate.h; path = Src/Main/Shared/Peertalk/Lookin_PTPrivate.h; sourceTree = ""; }; - CF585038948BE5BD9FDE25D090C77A52 /* HWPanModalAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalAnimator.h; path = Sources/Animator/HWPanModalAnimator.h; sourceTree = ""; }; - CF5E2B29305178430BD510351FDD6C99 /* MJRefreshNormalTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.m; sourceTree = ""; }; - CFBE4CFC0231291954B6CBE560F2D503 /* LSTPopView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTPopView-Info.plist"; sourceTree = ""; }; - D08B8F280C5811F6505EA1AE7983082B /* LookinStaticAsyncUpdateTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinStaticAsyncUpdateTask.m; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.m; sourceTree = ""; }; - D0B5D7F39DA4B830F1B68A7D9273B85E /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; - D1995E5A7C78EB3AC4764F06A4A7E676 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; - D1A874AEEF141E292D730F9161627B04 /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/include/FLAnimatedImage.h; sourceTree = ""; }; - D1F143BC4A879AC2B9896478CE4FF798 /* LookinAutoLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAutoLayoutConstraint.h; path = Src/Main/Shared/LookinAutoLayoutConstraint.h; sourceTree = ""; }; - D2892265E5746B87D5D6CDB4D0215238 /* LookinServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LookinServer.modulemap; sourceTree = ""; }; - D2ADA0495E5FE9068CEDD520D7AB4D72 /* LKS_CustomAttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.h; sourceTree = ""; }; - D2E3EA9E3A659E147112B9E7A63EEC56 /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; - D3576B2FF83DF230E75AA05AB2DB6B4D /* UIViewController+PanModalPresenter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalPresenter.m"; path = "Sources/Presenter/UIViewController+PanModalPresenter.m"; sourceTree = ""; }; - D37BD8FF05E69B29FC64F9CEB3CA7255 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/include/FLAnimatedImageView.h; sourceTree = ""; }; - D3831111080859754E7A75FF007ED40F /* LKS_HierarchyDetailsHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDetailsHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.m; sourceTree = ""; }; - D4EB28525886DCE45DC1BBE08F77BCDF /* LookinHierarchyFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyFile.h; path = Src/Main/Shared/LookinHierarchyFile.h; sourceTree = ""; }; - D52AD9DE99C02DF34E22E59E4A970F45 /* UIColor+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+LookinServer.h"; path = "Src/Main/Server/Category/UIColor+LookinServer.h"; sourceTree = ""; }; - D5D847654327E7F1E333D40CD9665067 /* UIColor+SDHexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SDHexString.h"; path = "SDWebImage/Private/UIColor+SDHexString.h"; sourceTree = ""; }; - D7117B22CB4967C93BC27DD5B1BA9865 /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; - D72EC9997A8CA1698A3020135CE8BC2E /* UIViewController+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LookinServer.h"; path = "Src/Main/Server/Category/UIViewController+LookinServer.h"; sourceTree = ""; }; + CF64931699D303A3C9AE1FFC4682E257 /* JXCategoryIndicatorCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorCell.m; path = Sources/Indicator/JXCategoryIndicatorCell.m; sourceTree = ""; }; + CF85D3EF505C17C565E691AC344CCE5C /* JXPagerListContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerListContainerView.h; path = Sources/JXPagerView/JXPagerListContainerView.h; sourceTree = ""; }; + CF9BCBE90C3B7C448764C897685CB0E3 /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; + CFD12B92C17E28346EDC2EC75D0BF494 /* NSObject+MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJProperty.m"; path = "MJExtension/NSObject+MJProperty.m"; sourceTree = ""; }; + D013F3B6606D04CFD12051F02350DB55 /* UIVisualEffectView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIVisualEffectView+LookinServer.h"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.h"; sourceTree = ""; }; + D0317376A8F5B09CBBAC757A9410CF00 /* LSTPopView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.debug.xcconfig; sourceTree = ""; }; + D03FDB7D5A636ED3DC51EF05677C546A /* LookinServerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServerDefines.h; path = Src/Main/Server/Others/LookinServerDefines.h; sourceTree = ""; }; + D16058E57E3F07CA628E8A17A3B944C1 /* LKSConfigManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKSConfigManager.h; path = Src/Main/Server/Others/LKSConfigManager.h; sourceTree = ""; }; + D2F471FC57FF6DD1F698134B35D27C95 /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; + D31BFB25B2F3620735E09AC6DE1CBFE3 /* JXPagerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerView.m; path = Sources/JXPagerView/JXPagerView.m; sourceTree = ""; }; + D3543E70B7F1B6F0CB25AB731CA0DFBE /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; + D3CF8B366EB9A41FEDB94035F404215D /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; + D3F906D47799FB7ED8D4AA1C036BF3BC /* JXPagerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerView.h; path = Sources/JXPagerView/JXPagerView.h; sourceTree = ""; }; + D40BB639047461966566FFED666B3ACF /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; + D40E6AE30D19137ABA0A5D046329BCCD /* NSSet+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSSet+Lookin.h"; path = "Src/Main/Shared/Category/NSSet+Lookin.h"; sourceTree = ""; }; + D48043130F64D218A676B16D2CDA0ED8 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; + D4AA530BA675D0E78BDD9644338B48A3 /* JXCategoryTitleImageCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleImageCell.m; path = Sources/TitleImage/JXCategoryTitleImageCell.m; sourceTree = ""; }; + D4BC45247918896A52CA0C54F038B447 /* NSArray+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Lookin.m"; path = "Src/Main/Shared/Category/NSArray+Lookin.m"; sourceTree = ""; }; + D4C17E87C77E85F28C83D98FAB4AB7F4 /* JXCategoryImageCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryImageCellModel.h; path = Sources/Image/JXCategoryImageCellModel.h; sourceTree = ""; }; + D4E6C9FAE7DD5348F64FBD66AA03DA5B /* JXCategoryIndicatorComponentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorComponentView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m; sourceTree = ""; }; + D4ECB35518D14625B419D0EC58050171 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; sourceTree = ""; }; + D5100072476E008E3F5E024784855C6A /* MBProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-umbrella.h"; sourceTree = ""; }; + D5140E810D9AB3FD3FA724CCDD59D3AD /* Masonry.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Masonry.modulemap; sourceTree = ""; }; + D52171C8DB630868289299203B4ECD0C /* NSObject+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Lookin.m"; path = "Src/Main/Shared/Category/NSObject+Lookin.m"; sourceTree = ""; }; + D547696F5943987BC61D389F16B201E8 /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; + D58A6363674921528AA6EC052D65C890 /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; + D5D75E71D2ABCC5D3DDCC662DACBFAED /* JXCategoryIndicatorImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorImageView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.h; sourceTree = ""; }; + D675E9EED90BA5941D43EB2C520A01B8 /* WKWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "WKWebView+AFNetworking.m"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.m"; sourceTree = ""; }; + D68B54EB4EEB9AF6B9ED16CAB83E16BA /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; + D6F5B88F49EB151A388B58319A67E2A1 /* JXCategoryIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorProtocol.h; path = Sources/Common/JXCategoryIndicatorProtocol.h; sourceTree = ""; }; D742A7EF918BC67B0884AF366F7415FD /* Pods-CustomKeyboard-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CustomKeyboard-acknowledgements.plist"; sourceTree = ""; }; - D85D1D9B369469B71D9FE49138927707 /* LookinEventHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinEventHandler.h; path = Src/Main/Shared/LookinEventHandler.h; sourceTree = ""; }; - D9879EAF15EB971D024F6726C4E07562 /* HWShoppingCartPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWShoppingCartPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h; sourceTree = ""; }; - D9F0FAF97F68F13F21EE3D8E18046926 /* LookinCustomAttrModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomAttrModification.m; path = Src/Main/Shared/LookinCustomAttrModification.m; sourceTree = ""; }; - D9FB07B277FA3212774D9D7EF2156759 /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; - DA0B23D302091DCF531627DB2F06A5BA /* NSString+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+MJExtension.h"; path = "MJExtension/NSString+MJExtension.h"; sourceTree = ""; }; - DA7F2EDBF237046CD345C29806E0A756 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; - DA876A02B80932A6284AB2ACAB8135A6 /* LookinDisplayItemDetail.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItemDetail.m; path = Src/Main/Shared/LookinDisplayItemDetail.m; sourceTree = ""; }; - DC490DD3FFABA4122C58404F7DFAD348 /* LookinConnectionAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionAttachment.h; path = Src/Main/Shared/LookinConnectionAttachment.h; sourceTree = ""; }; - DC75CCA31193BB63063F364267DBCF2D /* LKS_ExportManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ExportManager.m; path = Src/Main/Server/Others/LKS_ExportManager.m; sourceTree = ""; }; + D744043462D81E4ED2BB1ECAE8E9F696 /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; + D7708C3743D0A5955D7A50F4A72818A5 /* JXCategoryView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXCategoryView.debug.xcconfig; sourceTree = ""; }; + D7DFD14540146731FB9E466FA1EB81F0 /* LookinAttrType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrType.h; path = Src/Main/Shared/LookinAttrType.h; sourceTree = ""; }; + D843F393C308E0D3BCB88A0B04FDB291 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; + D9922CA9D57AA94D9EE06129264F7958 /* Masonry-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Masonry-Info.plist"; sourceTree = ""; }; + D9DA60EBF6A57B0D3224E3ACD3E51971 /* JXCategoryCollectionView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryCollectionView.m; path = Sources/Common/JXCategoryCollectionView.m; sourceTree = ""; }; + D9EC522C5B6A10C53A05FE81CED85983 /* NSString+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Lookin.m"; path = "Src/Main/Shared/Category/NSString+Lookin.m"; sourceTree = ""; }; + DA5203B4ACDB110F236306ADB5531C98 /* MJExtension-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-prefix.pch"; sourceTree = ""; }; + DAB0E506E749384DE93170FA1EE1FD3B /* HWPanContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanContainerView.h; path = Sources/View/HWPanContainerView.h; sourceTree = ""; }; + DACDF6DBB7030D05CC43C7DB516265EE /* HWVisualEffectView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWVisualEffectView.m; path = Sources/View/HWVisualEffectView.m; sourceTree = ""; }; + DACFBFCC588CFB73AE8A6DB153DEA42F /* JXCategoryView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryView.h; path = Sources/JXCategoryView.h; sourceTree = ""; }; + DAFBC54BDE2AC21397492351C31C587A /* HWPanModalPresentableHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentableHandler.h; path = Sources/Mediator/HWPanModalPresentableHandler.h; sourceTree = ""; }; + DB3619AB8798CD8CAE31E140F80F2DC0 /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; + DB3CBBCBF7B8B49A86FAC8D0A1741C77 /* UIImage+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+LookinServer.h"; path = "Src/Main/Server/Category/UIImage+LookinServer.h"; sourceTree = ""; }; + DB866CD01C61417D45924946690C442B /* HWPanModal.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HWPanModal.modulemap; sourceTree = ""; }; + DBE1F0821F32567F3E84359D65C8422C /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; + DBE3855004E17CACAC82F75DF8EFEBD4 /* LSTPopView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-umbrella.h"; sourceTree = ""; }; + DC0451732A9C9A896EEC15BEC88B3151 /* LKS_InbuiltAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_InbuiltAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.m; sourceTree = ""; }; + DC285A6C8053D7E2AE423BE51B24E8AE /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; + DC82DAFD220FAA7899CE21078C2C649D /* UIView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LookinServer.h"; path = "Src/Main/Server/Category/UIView+LookinServer.h"; sourceTree = ""; }; + DC870A534B766E7815C7744EE9E7E3E1 /* SDImageAWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAWebPCoder.h; path = SDWebImage/Core/SDImageAWebPCoder.h; sourceTree = ""; }; DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-keyBoard"; path = Pods_keyBoard.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DCB59AEF88556057BC2FD85427D2EFE7 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; DCFE00F3CC8CED67258D7F7DD13F3156 /* Pods-keyBoard-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-keyBoard-frameworks.sh"; sourceTree = ""; }; - DD391D4FA7F38A97455407F9DA5DA8F0 /* HWPanModalContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContentView.m; path = Sources/View/PanModal/HWPanModalContentView.m; sourceTree = ""; }; - DDA24856F33C6E655A624699241CFD6D /* ResourceBundle-MJExtension-MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJExtension-MJExtension-Info.plist"; sourceTree = ""; }; - DDD6B4DA641B2F94F2D426AC2D4A5E7E /* FLAnimatedImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.release.xcconfig; sourceTree = ""; }; + DD1439668AF92748DEFAD18BF418CE55 /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; + DD3BFE6DB15E8FF64920F720EA31EEDE /* MJRefreshNormalTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.m; sourceTree = ""; }; + DD3CC2F2CD0FD607BD99AA89E970269A /* HWPageSheetPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPageSheetPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h; sourceTree = ""; }; + DDA8FA3EA27827F124700F1B6176E4CE /* Bugly.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.debug.xcconfig; sourceTree = ""; }; + DDAA59B8AF34E0C4765874AEE69571F7 /* JXCategoryTitleImageCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleImageCellModel.h; path = Sources/TitleImage/JXCategoryTitleImageCellModel.h; sourceTree = ""; }; + DDDA744A029AF23E45515CE37C056256 /* LookinAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttribute.m; path = Src/Main/Shared/LookinAttribute.m; sourceTree = ""; }; DE19C7D984CBC535E4768F5543458A1E /* LSTTimer */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LSTTimer; path = LSTTimer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DE26DBA97E2F7B5B4805533E6C020C30 /* HWPanModalPanGestureDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPanGestureDelegate.h; path = Sources/Presentable/HWPanModalPanGestureDelegate.h; sourceTree = ""; }; - DE5FC1FDACC1A466A889091A6DD9D1B4 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; - DE9ADECB39002B8ABC9BF590B430634B /* UITextView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextView+LookinServer.m"; path = "Src/Main/Server/Category/UITextView+LookinServer.m"; sourceTree = ""; }; - DEA09040DACD7A53B041773DD59096FC /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; - DF4489E08CBFCDAD16CB71B168364F46 /* LSTPopView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTPopView.modulemap; sourceTree = ""; }; - DF4516C3B5E735B563E9749DFA6BCB51 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; sourceTree = ""; }; - E02C6844FCB15EFA12DE7936E2D89768 /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; - E0B73DB737A3D2CAAA90EA20B4BB23B3 /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; - E114D2723BCB64ADA9A307B95F5DE640 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; - E164F75EDECDE7B82945FA657EA41708 /* HWDimmedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWDimmedView.h; path = Sources/View/HWDimmedView.h; sourceTree = ""; }; - E1732483C75B01353EF9D04684480EE4 /* NSObject+MJClass.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJClass.m"; path = "MJExtension/NSObject+MJClass.m"; sourceTree = ""; }; - E19751E7E128A05C5F94C54CB5222006 /* LKS_EventHandlerMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_EventHandlerMaker.h; path = Src/Main/Server/Others/LKS_EventHandlerMaker.h; sourceTree = ""; }; - E1CED825638D1B3169A0C8EE7A57C720 /* Image+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Image+Lookin.h"; path = "Src/Main/Shared/Category/Image+Lookin.h"; sourceTree = ""; }; + DEDB698B7BC2AF63B53722CF1D2D8E57 /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; + DEDFC34DB720F4FD92E634E486425845 /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; + E032CFFEFE6D0B2BC568E604265CD74C /* DZNEmptyDataSet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DZNEmptyDataSet.modulemap; sourceTree = ""; }; + E03F152E95B6924D2486511337D24503 /* JXPagingView-JXPagerView */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "JXPagingView-JXPagerView"; path = JXPagerView.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + E075739451FCFAA914670EB353642C16 /* UIImage+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+LookinServer.m"; path = "Src/Main/Server/Category/UIImage+LookinServer.m"; sourceTree = ""; }; + E0A4E94FB3CF9B468E72117C85C2E773 /* JXCategoryViewAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryViewAnimator.h; path = Sources/Common/JXCategoryViewAnimator.h; sourceTree = ""; }; + E138C277A1DD60E5BB20AB4EC7CEBDB2 /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; + E152B4E044E172623798E791ACCC157E /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; + E1921A1332A20D950700741950E97126 /* CALayer+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+LookinServer.m"; path = "Src/Main/Server/Category/CALayer+LookinServer.m"; sourceTree = ""; }; + E1F236D1BF028AEAD75A9FB3C9DCAE0F /* KeyValueObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KeyValueObserver.m; path = Sources/KVO/KeyValueObserver.m; sourceTree = ""; }; E214C17CF404D45BDF92DD6C18D371FA /* Pods-keyBoard-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-keyBoard-acknowledgements.markdown"; sourceTree = ""; }; - E2E3CFC89381BAE830E4045CE02E25EB /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; - E382492BA0D4E5C9BEF289F10F029CAA /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; - E3EF6841A6A45FD5C11031ED861CFF06 /* LKS_InbuiltAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_InbuiltAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.h; sourceTree = ""; }; - E41E643057B645A4E6C5FEA5E52213CB /* SDWebImageOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = SDWebImage/Core/SDWebImageOperation.m; sourceTree = ""; }; - E49B94A4D72DB4B81F4E8CDC098BC388 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; + E259D7D54703B047363E50046A949F68 /* JXPagingView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "JXPagingView-Info.plist"; sourceTree = ""; }; + E25EECD78C776DB2FDB519D3AA7CB0BD /* JXCategoryListContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryListContainerView.h; path = Sources/Common/JXCategoryListContainerView.h; sourceTree = ""; }; + E29E39BBB558CC51A6DB91379351B72E /* UIColor+SDHexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SDHexString.m"; path = "SDWebImage/Private/UIColor+SDHexString.m"; sourceTree = ""; }; + E3535B97DCD1B05E059D045B16700F34 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; + E392F0E432282B33F9A7A49E5F6DFDE1 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; + E42238B57F88C70438DE479E184E4352 /* JXCategoryTitleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleView.h; path = Sources/Title/JXCategoryTitleView.h; sourceTree = ""; }; + E44ED3A05255119AA352B7DE0C64E994 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; + E48A50CB4DE0A87DE4F3E1BFE24DC7B7 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MJRefresh; path = MJRefresh.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E5BBE1866B6FDB7D5307A6075BE5F347 /* MJRefreshStateTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.m; sourceTree = ""; }; - E6EDBB7EFC23401D50E3438EB3430A58 /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; - E78C9A636C9E4C5CFBDECBA5127AF367 /* LKS_MultiplatformAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_MultiplatformAdapter.m; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.m; sourceTree = ""; }; - E8284A1808A9A014FA6F2F4E23F36835 /* WKWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "WKWebView+AFNetworking.m"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.m"; sourceTree = ""; }; - E8EA132DBE319D046C6BEFA0C4AB4940 /* NSSet+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSSet+Lookin.m"; path = "Src/Main/Shared/Category/NSSet+Lookin.m"; sourceTree = ""; }; - E9004778D6831458C102A879DA83C285 /* UIImage+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+LookinServer.h"; path = "Src/Main/Server/Category/UIImage+LookinServer.h"; sourceTree = ""; }; - E90228ED50408CEB55B1257A093A4B1A /* LSTPopView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-umbrella.h"; sourceTree = ""; }; - E95EEB52B039FDCAE4992EC84BF70332 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; - EA5F1011035F011FF8DB93B55405B76E /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; - EA60319FCBE8ADFF00A52058DBE7C157 /* LookinServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.debug.xcconfig; sourceTree = ""; }; - EA8BD469A978049C96BA8554A1F6D2D6 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; - EAE44CAA3E728CD13C43CF7D34627D80 /* LookinTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinTuple.h; path = Src/Main/Shared/LookinTuple.h; sourceTree = ""; }; - EBD791825D3A6F564E4BA3B31B0F2BFB /* UIImageView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+LookinServer.h"; path = "Src/Main/Server/Category/UIImageView+LookinServer.h"; sourceTree = ""; }; - ED1DD2A27A7141151DAB033BD707A1EF /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; - EEE26007FA20AE54DB39973E3D1D76FF /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; - EF5BED7A35D904E495E540434D07B398 /* UIView+WebCacheState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheState.m"; path = "SDWebImage/Core/UIView+WebCacheState.m"; sourceTree = ""; }; - EF66633D19CE6F4EBFF2331E624219EC /* Bugly.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.debug.xcconfig; sourceTree = ""; }; - EF6748BE01C63A0BA85DC20DBF82AD80 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; - EF96CCDE1944CF562A65CA60FCBAD8CC /* MJRefreshConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConfig.m; path = MJRefresh/MJRefreshConfig.m; sourceTree = ""; }; - F032CA5D8067C46163CF052F106C2A2D /* MJPropertyKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyKey.m; path = MJExtension/MJPropertyKey.m; sourceTree = ""; }; - F0CB265D0463DC2290A542EFCE210632 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; - F0F086732258C7153899AB5D8C678B02 /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; - F24C826B62D5E083C9293F7721C463C2 /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; - F24F9CCCB353131934224305105F7E49 /* FLAnimatedImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FLAnimatedImage.modulemap; sourceTree = ""; }; - F27AC2454398D7EA8C514D5B2F6469EF /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; - F2AA502A31D7ACB4F28AAE65C3561F31 /* MBProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-umbrella.h"; sourceTree = ""; }; - F2C18394D397CD373A1F089F0924F724 /* HWPanModal.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.debug.xcconfig; sourceTree = ""; }; - F47E18ADFFC71918AE70F42C18C32A89 /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; - F4AF21DC4288D196E2F556338C3101AE /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = WebImage/PrivacyInfo.xcprivacy; sourceTree = ""; }; - F522B03B0E818BE677108EC202F41472 /* LookinStaticAsyncUpdateTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinStaticAsyncUpdateTask.h; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.h; sourceTree = ""; }; - F5D51DADE6BB30185CA5DE0A026B674A /* HWPanModalContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContainerView.h; path = Sources/View/PanModal/HWPanModalContainerView.h; sourceTree = ""; }; - F68CF910ED994D45AAA3B5E5FABB6835 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; - F69E813A3DBBC0717A1A31E2B15A0606 /* UIViewController+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LookinServer.m"; path = "Src/Main/Server/Category/UIViewController+LookinServer.m"; sourceTree = ""; }; - F6E7A6844647C14F0728CBB9EC73AF19 /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; - F715A0DDAEC4B71182625E313DD4E413 /* LSTPopView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-prefix.pch"; sourceTree = ""; }; - F72D861CBD81CE860AF0AE80BBE0D883 /* NSString+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+MJExtension.m"; path = "MJExtension/NSString+MJExtension.m"; sourceTree = ""; }; - F738F2BE3FA2AD49A9764CC72FDBAFB2 /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; - F7A5B6B4FC335FF159BAE91EDDEC3320 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = ""; }; - F7C8B71EAA1C160D9B20E934869F7E16 /* LookinAttributeModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributeModification.h; path = Src/Main/Shared/LookinAttributeModification.h; sourceTree = ""; }; - F83A870FD420501FBBA293B2D6A26AD0 /* MJRefreshStateTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h; sourceTree = ""; }; - F8A410A1A4222EF3876A4FA11492EF05 /* MJRefreshTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshTrailer.h; path = MJRefresh/Base/MJRefreshTrailer.h; sourceTree = ""; }; - F9F21BFD087BDB0FF37B51B916F0A3DC /* LSTTimer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTTimer-dummy.m"; sourceTree = ""; }; - FA56E3002035BE556C5ED858D43F49DD /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; - FA721DB25EC176AA8EF0102082B67F5A /* UILabel+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+LookinServer.m"; path = "Src/Main/Server/Category/UILabel+LookinServer.m"; sourceTree = ""; }; + E5592C4FA7C5389CD5E3CCE2F804F447 /* HWPanModal-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-prefix.pch"; sourceTree = ""; }; + E5AA796F8B4298B625A467D39523F40F /* LKS_EventHandlerMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_EventHandlerMaker.h; path = Src/Main/Server/Others/LKS_EventHandlerMaker.h; sourceTree = ""; }; + E5B1C13BB84FC1E79BC9BB233B793A5A /* MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtension.h; path = MJExtension/MJExtension.h; sourceTree = ""; }; + E5EA191D7CFA74A3FEAFB27130A3FEC7 /* RTLManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RTLManager.m; path = Sources/RLTManager/RTLManager.m; sourceTree = ""; }; + E654A0C1F961A76933C784134A3D98E4 /* LookinServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.debug.xcconfig; sourceTree = ""; }; + E6B846D03C97210EDD55850D04A8F27A /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; + E74AC99A06CC9DE9D81D54044B013F98 /* LKS_CustomDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.m; sourceTree = ""; }; + E87C7E8B87671964EE3B94CB801C492E /* SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SDWebImage-Info.plist"; sourceTree = ""; }; + E889A3C02C6D9C2F5501AF30759E916C /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; + E8DC9FFB899510CE978017ADFAFE6D87 /* HWPanModalPresenterProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresenterProtocol.h; path = Sources/Presenter/HWPanModalPresenterProtocol.h; sourceTree = ""; }; + E9598F4E504AE0DA98A0B2DC305F1C83 /* MJRefreshConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConfig.h; path = MJRefresh/MJRefreshConfig.h; sourceTree = ""; }; + E95C47EFA2CADA467B5A46831F0EA87A /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; + E97B2ACE11733D7DD5ECA116979B91D5 /* LookinEventHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinEventHandler.h; path = Src/Main/Shared/LookinEventHandler.h; sourceTree = ""; }; + E9CB22320707CAEB4EE4C1DF62EB9E1A /* UIView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LookinServer.m"; path = "Src/Main/Server/Category/UIView+LookinServer.m"; sourceTree = ""; }; + EAEC3302C39E58E44D49A12FA8699A84 /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; + EB21E143FD58D712C16E9026FBFFE194 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; + EB3C413B4ED21D886E50FCBC0761408E /* LKS_ExportManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ExportManager.h; path = Src/Main/Server/Others/LKS_ExportManager.h; sourceTree = ""; }; + EC33F9EE9311F0E41E69AB2D40770217 /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; + EC4AC84F5855EC104608477917DF3145 /* JXCategoryIndicatorDotLineView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorDotLineView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.m; sourceTree = ""; }; + EC57F0405D7809ECABB52C0C041C6F2F /* JXCategoryImageCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageCellModel.m; path = Sources/Image/JXCategoryImageCellModel.m; sourceTree = ""; }; + EC9D66F9AD565D0A6E6595CFC812165E /* LookinStaticAsyncUpdateTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinStaticAsyncUpdateTask.m; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.m; sourceTree = ""; }; + ECA422AB0F45E3F4B650188FEE476C8C /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; + ED2932A528EF3931C345CFE64B9F95D6 /* SDWebImageOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = SDWebImage/Core/SDWebImageOperation.m; sourceTree = ""; }; + ED6F94603AF0AF72D292CADE8ABCEEB3 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; + ED71DE4537C6ECADC81696A80C943E64 /* HWBackgroundConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWBackgroundConfig.m; path = Sources/View/HWBackgroundConfig.m; sourceTree = ""; }; + ED8D9D4C66EB7593131560466A9EEB08 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; + EE1A5661BE1EACFB3D2C7F19D51BF011 /* NSString+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+MJExtension.h"; path = "MJExtension/NSString+MJExtension.h"; sourceTree = ""; }; + EE80578D9DB416BD158323BE4D5C76F4 /* HWPanModal-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HWPanModal-dummy.m"; sourceTree = ""; }; + EEB6F4442CB80A88D94B35721714C121 /* Color+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Color+Lookin.h"; path = "Src/Main/Shared/Category/Color+Lookin.h"; sourceTree = ""; }; + EED2C7FD129EA6F065286A12502B79B7 /* JXCategoryDotView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryDotView.m; path = Sources/Dot/JXCategoryDotView.m; sourceTree = ""; }; + EF3A8DFB97BB54D169F6E8AC578F498C /* JXCategoryDotCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryDotCellModel.m; path = Sources/Dot/JXCategoryDotCellModel.m; sourceTree = ""; }; + EF426A2B87D32263A2C56A13732C8201 /* LSTTimer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTTimer.m; path = LSTTimer/Classes/LSTTimer.m; sourceTree = ""; }; + F0FF9B39CB74F30B336CF7D4085E2AE0 /* UICollectionViewLayout+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewLayout+MJRefresh.h"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.h"; sourceTree = ""; }; + F15C652E7FDB0BE287A551718B00B6A8 /* JXCategoryNumberCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryNumberCellModel.m; path = Sources/Number/JXCategoryNumberCellModel.m; sourceTree = ""; }; + F1C50876E480E256FAA99FC38F2BC478 /* LKS_ConnectionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ConnectionManager.m; path = Src/Main/Server/Connection/LKS_ConnectionManager.m; sourceTree = ""; }; + F21EDB4000AA52958FC207353BC36367 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; + F246E4D58E65C83AB3493871F692FC9C /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; + F2698AC3972900E338490644A2E03A2A /* LookinCodingValueType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCodingValueType.h; path = Src/Main/Shared/LookinCodingValueType.h; sourceTree = ""; }; + F2A8643D9113999359ADC6C79DA48111 /* Color+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Color+Lookin.m"; path = "Src/Main/Shared/Category/Color+Lookin.m"; sourceTree = ""; }; + F2EB780D15F77D48AEC0D3A47833557E /* LSTPopView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-prefix.pch"; sourceTree = ""; }; + F3AD144DF03231D478D237DCFC615D36 /* LookinConnectionAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionAttachment.h; path = Src/Main/Shared/LookinConnectionAttachment.h; sourceTree = ""; }; + F451B2E12A8192978BB7FB1B45BF1E04 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; + F45F2EB9AE5E2D5BDC0F9860DB695385 /* UIImageView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+LookinServer.h"; path = "Src/Main/Server/Category/UIImageView+LookinServer.h"; sourceTree = ""; }; + F4D2D27159CC3A8AAABD93291FBA2B48 /* LookinServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LookinServer.modulemap; sourceTree = ""; }; + F549CCE65FFF5AC81AB62FDCCB6CB8DC /* AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AFNetworking.modulemap; sourceTree = ""; }; + F55015AACD21AF6274741BBDAC6148E2 /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; + F6CC661C43717D8BBB4405FD037BDC03 /* LookinCustomAttrModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomAttrModification.m; path = Src/Main/Shared/LookinCustomAttrModification.m; sourceTree = ""; }; + F7CD4CF41A222A66B3E435AB32DF697D /* NSObject+MJClass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJClass.h"; path = "MJExtension/NSObject+MJClass.h"; sourceTree = ""; }; + F7FE08919F8BE5AACFB3A1E812E57C03 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; + F86F79271CDA27370B63C4004FB83EF7 /* SDImageFramePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFramePool.h; path = SDWebImage/Private/SDImageFramePool.h; sourceTree = ""; }; + F8A31B7D92D4FBD879F8C39ED3139439 /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; + F904F7CF43AB518217FB1AB9236020D4 /* UIColor+JXAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+JXAdd.h"; path = "Sources/Common/UIColor+JXAdd.h"; sourceTree = ""; }; + F90D97C684BADB3FE9796E626B98C43A /* LookinDisplayItemDetail.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItemDetail.m; path = Src/Main/Shared/LookinDisplayItemDetail.m; sourceTree = ""; }; + FA395F2DBB98D70F218443EA65E0D442 /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; + FA6406A6E74DC06D367BE38EA6C60243 /* LKS_Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_Helper.h; path = Src/Main/Server/Others/LKS_Helper.h; sourceTree = ""; }; + FA94CFBBBF3DC429BAF55FD9493336B4 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FLAnimatedImage; path = FLAnimatedImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FADEEDA2729187D0D3E4FF58DCAE4F5E /* LookinDisplayItemDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItemDetail.h; path = Src/Main/Shared/LookinDisplayItemDetail.h; sourceTree = ""; }; - FB095F0736BB4D6DAB423B110675CCD9 /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; - FB689A278C80C26E3B3E80EDA3887106 /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; - FBDB01F2E84A23710184B78970DFEA2D /* MBProgressHUD-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MBProgressHUD-Info.plist"; sourceTree = ""; }; - FC070F9BCE8A8D0A21448F82A7DD5F5A /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; - FC504494ABD0D1144D620FD1501F0E00 /* WKWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "WKWebView+AFNetworking.h"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.h"; sourceTree = ""; }; - FCCAFE3B7FF5BB1E728A5F5834F651D8 /* HWPresentingVCAnimatedTransitioning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPresentingVCAnimatedTransitioning.h; path = Sources/Animator/HWPresentingVCAnimatedTransitioning.h; sourceTree = ""; }; - FD16DAAD0E6C1AF6207145BC463DF81D /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; - FD22D0365334ED54585130432CEF0912 /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; - FE45E33A4A0C09CD0EBB222B7E40EE72 /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; - FE4F3AC67FEAA51E07D9DCC83CAEB3D5 /* LKS_AttrModificationPatchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrModificationPatchHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.m; sourceTree = ""; }; - FED881DC5D7531317A8A2A309D96815F /* LKS_AttrModificationPatchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrModificationPatchHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.h; sourceTree = ""; }; - FF06402E5B9C49B794955B31F8067263 /* UITableView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+LookinServer.m"; path = "Src/Main/Server/Category/UITableView+LookinServer.m"; sourceTree = ""; }; - FF47B51E8368756DB1E42F174494224F /* HWPageSheetPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPageSheetPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h; sourceTree = ""; }; - FFB946957EE60C8096CD34FFD7880091 /* LKS_Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_Helper.m; path = Src/Main/Server/Others/LKS_Helper.m; sourceTree = ""; }; - FFF8ADD6067D862411385E3BFF71A8DA /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; + FAC311E0F10AA1170D905B6C90AE765F /* JXCategoryImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryImageView.h; path = Sources/Image/JXCategoryImageView.h; sourceTree = ""; }; + FB1E7E734FDF6F7CAC668B6BD6A2A014 /* Image+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Image+Lookin.m"; path = "Src/Main/Shared/Category/Image+Lookin.m"; sourceTree = ""; }; + FB334521D7F08199DE839AB68A37105C /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; + FB5DC78AEFAB6098819933CF81AAB15B /* Lookin_PTProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTProtocol.h; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.h; sourceTree = ""; }; + FBF4C669CA968A448B7E1DD3A141A41C /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; + FC52B8F222678A49BF1BA307CD9A7777 /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; + FD4AB223CCA1E3159EE2C805605A0657 /* JXCategoryIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorView.m; path = Sources/Indicator/JXCategoryIndicatorView.m; sourceTree = ""; }; + FD5B9F06C28C32AA434A5A2FFACDF89A /* JXCategoryIndicatorRainbowLineView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorRainbowLineView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.h; sourceTree = ""; }; + FD6EC1E4FB3615CE938900B23CEAD0F8 /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; + FDF2879588F648F9ACE28CEDF3C4F456 /* DZNEmptyDataSet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DZNEmptyDataSet-Info.plist"; sourceTree = ""; }; + FE8EB43019635F8DC34B96037E258505 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; + FED61E621A88CB9CE3C421FDEB1106FC /* LookinDisplayItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItem.h; path = Src/Main/Shared/LookinDisplayItem.h; sourceTree = ""; }; + FEF91306ED7817FCE47628D37A94BF1B /* JXCategoryIndicatorBackgroundView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorBackgroundView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.h; sourceTree = ""; }; + FF6C98975F33C466CDCC506B95080046 /* UIView+WebCacheState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheState.m"; path = "SDWebImage/Core/UIView+WebCacheState.m"; sourceTree = ""; }; + FFC39DF551599EB371EA8F85F9A9DDCF /* MJExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.debug.xcconfig; sourceTree = ""; }; + FFFC6DDC16F58E87A8A30CA92223320F /* DZNEmptyDataSet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DZNEmptyDataSet-dummy.m"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1352,21 +1598,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 30C44AB8C7DCA8E0F90C02BF12AC1ACC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3131D37BE47B5A01B63EFA14B2A9822F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B98BC635A537547CD8CA9B77C750304F /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 37145BAEB1B97BA7ADD7D6C3E86E99BD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1384,6 +1615,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 481273BD538BE69936DB3D2C8EB1E61B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8B47B7F220A2B9E121EFF5A28B477972 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 49A3D4697275EC0A7C6F38E45E2F0217 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 6328134103EDE3EF1EA3866C0B5CCA07 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1410,6 +1656,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 96D238A614CBDD553073EEECBB41281C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E516B5B11193439E020DD2A908700B79 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9E666AF8497E0DE090335A642D5B84EC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1418,13 +1672,43 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B4DC6EBA2E0A9BF13EE9B40E41669F40 /* Frameworks */ = { + A815DA3563AEC721C6EAF6B39395CDD4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; + AE750D3363286EC4504AB9516776E757 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 431023914A5D2653ABAE7AB54880C9AC /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AEC8B8EF401BFAE066232C67738FEB8F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B48A7E8CCFE81BBD4AEBA45C992E5F7F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C44502CD70E5B1200927F3A081A60365 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 72157F8282836C3F6D65008E2F193655 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; CA6527CF424B1AA12AF1D0BB36EBAF73 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1454,6 +1738,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D322DF9855308A001A820F202DCCBA75 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; E672724427269716049B769344D7C3DC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1463,393 +1754,284 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E84EAC027A0FB7CE91306C93FC676BFE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F69A92A5C344308FA427BBAED4888BA0 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 84065EC0D4446E7448D1BCFB4040230E /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 035E1FF1C6FC2C70E1C9A7412F5BC07F /* SDWebImage */ = { + 0727E8966E92BA27516AA23EF6747FF6 /* Security */ = { isa = PBXGroup; children = ( - F83577C0BD1D647CC9CF750D800647CB /* Core */, - B739A483873A111E644B8250F33F752D /* Support Files */, + 2AD36233DB657DAA0ACBB8EEEAEB38EA /* AFSecurityPolicy.h */, + 2458E327D6233EBA29A07B3E63113146 /* AFSecurityPolicy.m */, ); - name = SDWebImage; - path = SDWebImage; + name = Security; sourceTree = ""; }; - 0C71559E9A729C5B047179B43CABC936 /* Reachability */ = { + 0A1A9864A60D31E01F2EAB72403B1E95 /* NSURLSession */ = { isa = PBXGroup; children = ( - A1CAA004ADB375344EE1C0A0FF7E804F /* AFNetworkReachabilityManager.h */, - 6EDACCA592A0A0FC0428384009A75BD5 /* AFNetworkReachabilityManager.m */, - ); - name = Reachability; - sourceTree = ""; - }; - 16966B46BC1DE37AE221B0FB44232D79 /* Support Files */ = { - isa = PBXGroup; - children = ( - EF66633D19CE6F4EBFF2331E624219EC /* Bugly.debug.xcconfig */, - 090BA40A2CB6D8D73A78895D821E7E93 /* Bugly.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Bugly"; - sourceTree = ""; - }; - 1724889F583861283992342B8F084070 /* Support Files */ = { - isa = PBXGroup; - children = ( - DF4489E08CBFCDAD16CB71B168364F46 /* LSTPopView.modulemap */, - 93DAC06B5293787BAAAA04E673812C59 /* LSTPopView-dummy.m */, - CFBE4CFC0231291954B6CBE560F2D503 /* LSTPopView-Info.plist */, - F715A0DDAEC4B71182625E313DD4E413 /* LSTPopView-prefix.pch */, - E90228ED50408CEB55B1257A093A4B1A /* LSTPopView-umbrella.h */, - 0874A58BB3E268A75B1BD3D594CBAA2D /* LSTPopView.debug.xcconfig */, - A16C385BAD6F9C544C59D31A650946CC /* LSTPopView.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/LSTPopView"; - sourceTree = ""; - }; - 1F9EEB6CC879BACDBC385C6DBC24F7C9 /* NSURLSession */ = { - isa = PBXGroup; - children = ( - 2B7C62DACFDBE481DDA82F7BE3396A68 /* AFCompatibilityMacros.h */, - 981BA7AE91A568EC43916303978CE501 /* AFHTTPSessionManager.h */, - 0E7B3F97FDF9522DB3E4FADD3DB88700 /* AFHTTPSessionManager.m */, - 595622377DEA1856384D2D262C52C73F /* AFURLSessionManager.h */, - E95EEB52B039FDCAE4992EC84BF70332 /* AFURLSessionManager.m */, + 29C25E996193BA4D1FCBB5C2A7812FB9 /* AFCompatibilityMacros.h */, + 5F31829B35104CCEC70FD712B1D4D4E2 /* AFHTTPSessionManager.h */, + 9DA5F48CB9575D0E2C775D8D7C262C14 /* AFHTTPSessionManager.m */, + B2D84B5B7090CE22D8AFB107E403CA13 /* AFURLSessionManager.h */, + 55E89941A6B7A73D479A0770A9C96C14 /* AFURLSessionManager.m */, ); name = NSURLSession; sourceTree = ""; }; - 20214EA91148602FD46C19710C2B91EB /* Core */ = { + 0F19D22A7E286B575974CA8C2AD3F3DF /* Bugly */ = { isa = PBXGroup; children = ( - A701AEED09FE2183269AA89DFA8E4B7A /* CALayer+Lookin.h */, - B53B6AA90E9FBFBBE4E4275DE10531D3 /* CALayer+Lookin.m */, - A89D8D8B71AD9A723D88B13AF519A214 /* CALayer+LookinServer.h */, - B68B9359B3F4863CD16BC4AF1031EDD1 /* CALayer+LookinServer.m */, - C246D6EBE3F2F29765C86C55F130AD3F /* Color+Lookin.h */, - 19D6F69255AF25D760BE89366830A6F7 /* Color+Lookin.m */, - E1CED825638D1B3169A0C8EE7A57C720 /* Image+Lookin.h */, - CDEC5449CBECD6C324B9864AD284EC55 /* Image+Lookin.m */, - 54E07E4DAA97DEDC8F59F58429664909 /* LKS_AttrGroupsMaker.h */, - 581F1A0410E8F8E85A8C2E596B4C7F40 /* LKS_AttrGroupsMaker.m */, - FED881DC5D7531317A8A2A309D96815F /* LKS_AttrModificationPatchHandler.h */, - FE4F3AC67FEAA51E07D9DCC83CAEB3D5 /* LKS_AttrModificationPatchHandler.m */, - 3DF4E1CE47903B976C738C7A1DB7C650 /* LKS_ConnectionManager.h */, - 499DFA9F01A96B26620A744AC7C94DB7 /* LKS_ConnectionManager.m */, - D2ADA0495E5FE9068CEDD520D7AB4D72 /* LKS_CustomAttrGroupsMaker.h */, - 3BC0E1D78C95F4CC731325A284A8FC80 /* LKS_CustomAttrGroupsMaker.m */, - CB56ABA66093040F0D62AF378BB66DBE /* LKS_CustomAttrModificationHandler.h */, - 30A4A3709BA82F970D60FE150EDB33D1 /* LKS_CustomAttrModificationHandler.m */, - BC686BE8B7F5AC6B3A652ABBA6EAE87A /* LKS_CustomAttrSetterManager.h */, - 04D3C87C11221ADDA77670ED0731D145 /* LKS_CustomAttrSetterManager.m */, - 40D46544DD0F8DC61B909F5E02739172 /* LKS_CustomDisplayItemsMaker.h */, - C0E2F76DB6A01DBF448BF55D94414007 /* LKS_CustomDisplayItemsMaker.m */, - E19751E7E128A05C5F94C54CB5222006 /* LKS_EventHandlerMaker.h */, - BFD36E41E270B32316CAE346D73B1BB4 /* LKS_EventHandlerMaker.m */, - 5A12BDC5E6446CAD91BA1C47C211ED2E /* LKS_ExportManager.h */, - DC75CCA31193BB63063F364267DBCF2D /* LKS_ExportManager.m */, - 1D9DDC30D49B9BC3DFA8D9BC83722C14 /* LKS_GestureTargetActionsSearcher.h */, - BC24AF9FD32062D15DE214E94B0E828F /* LKS_GestureTargetActionsSearcher.m */, - 2262EDBC98A2795DB2EE27FB7D953E2C /* LKS_Helper.h */, - FFB946957EE60C8096CD34FFD7880091 /* LKS_Helper.m */, - C7B7F069BA04D7981F13F5FA41B3BAB5 /* LKS_HierarchyDetailsHandler.h */, - D3831111080859754E7A75FF007ED40F /* LKS_HierarchyDetailsHandler.m */, - 310204C87FE20FAAF183EEE0D555B729 /* LKS_HierarchyDisplayItemsMaker.h */, - B772F3922ED9C416DBFEA6651FBB3930 /* LKS_HierarchyDisplayItemsMaker.m */, - E3EF6841A6A45FD5C11031ED861CFF06 /* LKS_InbuiltAttrModificationHandler.h */, - 83E75619300BC832136529DA87152075 /* LKS_InbuiltAttrModificationHandler.m */, - 73EFE9F07FF04A733446FD7A74A02718 /* LKS_MultiplatformAdapter.h */, - E78C9A636C9E4C5CFBDECBA5127AF367 /* LKS_MultiplatformAdapter.m */, - BFFCEECD2573D5472737D9AFB10A0BB2 /* LKS_ObjectRegistry.h */, - 20466880B35C5065EE68BED96801035F /* LKS_ObjectRegistry.m */, - AE403DA6C5955C67D130890FCA703778 /* LKS_RequestHandler.h */, - 13527772A4A54A71A31658A3E36E2474 /* LKS_RequestHandler.m */, - A75ADFE775EE09236D1DF5672ACB9A4C /* LKS_TraceManager.h */, - 04A251837ED47D22FF5ACBFA97F91D4A /* LKS_TraceManager.m */, - 0D53461EC25E2C6DAE3F3C2ABD951A2B /* LKSConfigManager.h */, - 6233A7302725D50AFE344EFD05C9C870 /* LKSConfigManager.m */, - 39D285C0DD3F1106B921412AD679ADEC /* Lookin_PTChannel.h */, - 230DC3B27944D3472C6A06DA7EEAF194 /* Lookin_PTChannel.m */, - CF38798B2D107B8F8B096B856DF98A24 /* Lookin_PTPrivate.h */, - 7577D873945C0C370C14EE971C3509FB /* Lookin_PTProtocol.h */, - C2641A163910BF7346FA6273237FDB7D /* Lookin_PTProtocol.m */, - 6F886C315967D7AADA95C37B717FE5A2 /* Lookin_PTUSBHub.h */, - 899D158EA21A86AFAE75EACD2CFC106B /* Lookin_PTUSBHub.m */, - CA040E4FC9E6D5254278E66354DE0995 /* LookinAppInfo.h */, - 3D832408A734647A9D2C62473FE11EFB /* LookinAppInfo.m */, - 074925B1189A88BAA6297431490B8041 /* LookinAttribute.h */, - 25283803DB6704A7DFB24BD626A74C6E /* LookinAttribute.m */, - F7C8B71EAA1C160D9B20E934869F7E16 /* LookinAttributeModification.h */, - 624CC6F33BF93A1458307F73823C3E10 /* LookinAttributeModification.m */, - 4AA6F90EC76FE7C2ACDF3266FD792D7A /* LookinAttributesGroup.h */, - C5830BBF390FC8D9CCA3C6BDBE65DD04 /* LookinAttributesGroup.m */, - 9B55BC4062AFBC21B6F27CA6801F7F45 /* LookinAttributesSection.h */, - 0531DC0648DD160A9576D09368C28017 /* LookinAttributesSection.m */, - AA574A6EA7EECCE7D1E086B964FA3C65 /* LookinAttrIdentifiers.h */, - CB96704A28B66FFCFA6B43392123348C /* LookinAttrIdentifiers.m */, - 7E3DC362C663E7C7DAB5B7DC796C5507 /* LookinAttrType.h */, - D1F143BC4A879AC2B9896478CE4FF798 /* LookinAutoLayoutConstraint.h */, - 0175DE132412321B3302CBE48CE0F712 /* LookinAutoLayoutConstraint.m */, - 4DCD76BA1FFEFDEEE2F9331ECD0796D4 /* LookinCodingValueType.h */, - DC490DD3FFABA4122C58404F7DFAD348 /* LookinConnectionAttachment.h */, - 03BAE9F573ECB0A822C6757CBF10AB0E /* LookinConnectionAttachment.m */, - BAD931CF8729677FC0BD6248B49E6631 /* LookinConnectionResponseAttachment.h */, - 8983C7CF18477B6B6E981751F1C09853 /* LookinConnectionResponseAttachment.m */, - AA4F3775DDC9BAD8BC30D51376A765F0 /* LookinCustomAttrModification.h */, - D9F0FAF97F68F13F21EE3D8E18046926 /* LookinCustomAttrModification.m */, - 47C4451B7E17B800D4088E7182C1025D /* LookinCustomDisplayItemInfo.h */, - 8B417F374DC024262C256083E5EB6F70 /* LookinCustomDisplayItemInfo.m */, - 140B9E97F5B5BEB056AA3A4DFFA9891B /* LookinDashboardBlueprint.h */, - A28F16D63BCA40F7DC78734CFE3A235D /* LookinDashboardBlueprint.m */, - 610E7F99F72A12BE4DBEF2C1ABF10115 /* LookinDefines.h */, - 48B9B4465675824F9DA134FE2253901E /* LookinDisplayItem.h */, - B36F0D1046FE48DF23AE7AB21CD678D3 /* LookinDisplayItem.m */, - FADEEDA2729187D0D3E4FF58DCAE4F5E /* LookinDisplayItemDetail.h */, - DA876A02B80932A6284AB2ACAB8135A6 /* LookinDisplayItemDetail.m */, - D85D1D9B369469B71D9FE49138927707 /* LookinEventHandler.h */, - 79D13E836577BF8A934C5D3D24826BD0 /* LookinEventHandler.m */, - D4EB28525886DCE45DC1BBE08F77BCDF /* LookinHierarchyFile.h */, - 1A370DF72E817BB512D9A327AC45F76B /* LookinHierarchyFile.m */, - 4E03AEFAD237B8966FCFA45B3312FEE7 /* LookinHierarchyInfo.h */, - 274EF5BCECE08045C7BB130E4D6ED8E4 /* LookinHierarchyInfo.m */, - 587808BB0F9012792B17999F0BB495C4 /* LookinIvarTrace.h */, - 8DDCF4465DE05312EF540D3B5319ADAF /* LookinIvarTrace.m */, - 47F9AD4ED221D6EEDB441FAF35299C66 /* LookinObject.h */, - 683586601FF42469125B58BBB8DF2429 /* LookinObject.m */, - A8107C05A5879CBA4916F6AD4685D772 /* LookinServer.h */, - 5EAFD6E7E63CC2D3E074450E9124493C /* LookinServerDefines.h */, - F522B03B0E818BE677108EC202F41472 /* LookinStaticAsyncUpdateTask.h */, - D08B8F280C5811F6505EA1AE7983082B /* LookinStaticAsyncUpdateTask.m */, - EAE44CAA3E728CD13C43CF7D34627D80 /* LookinTuple.h */, - 20C42B1A5A080256AC39DD86D000ACD5 /* LookinTuple.m */, - AA356D7B80B205861FCCD6FECB42DDE3 /* LookinWeakContainer.h */, - ACDFCFE3242922DD1C6F9C0911E0A56B /* LookinWeakContainer.m */, - 81A6154946F38EFB8836E3145513AAE9 /* NSArray+Lookin.h */, - 4FBCAF641C4059BE19811532C4E3A0A2 /* NSArray+Lookin.m */, - 64BE9723ECB5FEB2D176E2AB31482F57 /* NSObject+Lookin.h */, - 85937FAC419CB28614ECAA70CE249673 /* NSObject+Lookin.m */, - 9D3649A7CA35A3580F58B4481D9820AF /* NSObject+LookinServer.h */, - 18C899184976415922E8F39B277C1766 /* NSObject+LookinServer.m */, - 5CD0546B82DCACC9EF9FE9B72325B901 /* NSSet+Lookin.h */, - E8EA132DBE319D046C6BEFA0C4AB4940 /* NSSet+Lookin.m */, - CEFEE7CEBA57AF6426BA05F18F444C4E /* NSString+Lookin.h */, - 4610142EAB51ECDD8FC137942A59F231 /* NSString+Lookin.m */, - 141D1CCF79DF1688C14B5C5A4CACC6E0 /* Peertalk.h */, - 9C55508E3B8FCF1A927848A4CFAA53D0 /* UIBlurEffect+LookinServer.h */, - 62ED382544D99079829F5E202E6E84A7 /* UIBlurEffect+LookinServer.m */, - D52AD9DE99C02DF34E22E59E4A970F45 /* UIColor+LookinServer.h */, - 1998A1E21783C0F00F27637B63C88F21 /* UIColor+LookinServer.m */, - E9004778D6831458C102A879DA83C285 /* UIImage+LookinServer.h */, - 8A73FC0CD1FAD2820E17CD48DE8962BA /* UIImage+LookinServer.m */, - EBD791825D3A6F564E4BA3B31B0F2BFB /* UIImageView+LookinServer.h */, - 98AC0F8649D533FEA089C0D7C8018ABC /* UIImageView+LookinServer.m */, - 589A748D16780600B35F1BC7E7CEB243 /* UILabel+LookinServer.h */, - FA721DB25EC176AA8EF0102082B67F5A /* UILabel+LookinServer.m */, - 2701A816C2728A79FA904E6F2AC8ADEB /* UITableView+LookinServer.h */, - FF06402E5B9C49B794955B31F8067263 /* UITableView+LookinServer.m */, - 529CC0A76A69631EEA57BEAB673D76B9 /* UITextField+LookinServer.h */, - 27339E9CA8A7C6DC7F3E8B828C3D0038 /* UITextField+LookinServer.m */, - 5B099323376948696DA373792CC4983D /* UITextView+LookinServer.h */, - DE9ADECB39002B8ABC9BF590B430634B /* UITextView+LookinServer.m */, - 6EDC641564DA302B6FFCBFCFFFAC5BA7 /* UIView+LookinServer.h */, - B51F28BC73CA22D31949B1635AF8CAE1 /* UIView+LookinServer.m */, - D72EC9997A8CA1698A3020135CE8BC2E /* UIViewController+LookinServer.h */, - F69E813A3DBBC0717A1A31E2B15A0606 /* UIViewController+LookinServer.m */, - 96B0036686E5E0170AC065045503F785 /* UIVisualEffectView+LookinServer.h */, - 80E15D4BAC4857AD45CC8CDC40384F0F /* UIVisualEffectView+LookinServer.m */, + 37D1A84159EF2DA3622D5B6253D94232 /* Frameworks */, + 453238A8EA177DEF4A00D8C859B1DA27 /* Support Files */, ); - name = Core; + name = Bugly; + path = Bugly; sourceTree = ""; }; - 2CEB54752AE867745CB29DF1C930135F /* MJExtension */ = { + 119FAC4028DEE3EECB43C1CA751847B8 /* Support Files */ = { isa = PBXGroup; children = ( - B9D9760D282FEC09C3A5774993001829 /* MJExtension.h */, - C88E60EA597845949F0925B844477F63 /* MJExtensionConst.h */, - 0BF099C561E70E7E4EDAC96628F02E58 /* MJExtensionConst.m */, - 5A5823526F694533978DE523241FEDE9 /* MJFoundation.h */, - 77EBE36C10B9452DC1931AC9779D7F79 /* MJFoundation.m */, - A14004EB25D5BC99B439F5543C20E8CF /* MJProperty.h */, - 636EE1928B5BC8BC35DF1648C1BF1467 /* MJProperty.m */, - A73F313A18713E36B251C92C66806CE8 /* MJPropertyKey.h */, - F032CA5D8067C46163CF052F106C2A2D /* MJPropertyKey.m */, - C02050360407C95F57A46E3425089760 /* MJPropertyType.h */, - 8D9EC3F78C9EBFBAA2A4A0F3EE3D27AB /* MJPropertyType.m */, - 2D6996A5821977C26F6D8F02DE8CF8CD /* NSObject+MJClass.h */, - E1732483C75B01353EF9D04684480EE4 /* NSObject+MJClass.m */, - 5B6CB7D56E64BDB8EB50D17E5CEC7C8F /* NSObject+MJCoding.h */, - BE0B0E1A9A292EDE11246C6685B3FF8A /* NSObject+MJCoding.m */, - 07752F7C2A34B933346F7E8E9D95461C /* NSObject+MJKeyValue.h */, - 2C694B3CF0214D5165615510B34C3812 /* NSObject+MJKeyValue.m */, - 9F69E397FB4534DAE86CE36E624729DC /* NSObject+MJProperty.h */, - 690D12C73095E1091E4B6AB8B11A064E /* NSObject+MJProperty.m */, - DA0B23D302091DCF531627DB2F06A5BA /* NSString+MJExtension.h */, - F72D861CBD81CE860AF0AE80BBE0D883 /* NSString+MJExtension.m */, - 37B575C4446BF19B0257C4C9AB6F1FED /* Resources */, - 96DE1775CF064EDD1FBB4071547380B9 /* Support Files */, + 81157F73840FB0C9186268E78281D33C /* FLAnimatedImage.modulemap */, + E3535B97DCD1B05E059D045B16700F34 /* FLAnimatedImage-dummy.m */, + A020A834828880C972FE2E839A9DD2B4 /* FLAnimatedImage-Info.plist */, + 12142FAAA1C74097D8F4441EAD4066E1 /* FLAnimatedImage-prefix.pch */, + 87DD67829823038B4E0D04582C0CB95C /* FLAnimatedImage-umbrella.h */, + 36A28302FD0C37C0A56E64EA97977A8E /* FLAnimatedImage.debug.xcconfig */, + C06B04E0ABEA41660753A9D5F58572EE /* FLAnimatedImage.release.xcconfig */, ); - name = MJExtension; - path = MJExtension; + name = "Support Files"; + path = "../Target Support Files/FLAnimatedImage"; sourceTree = ""; }; - 3558A467522318FD82C582513E547957 /* Code */ = { + 17AEA0C7D131B1C990249C70BBD62CDF /* Resources */ = { isa = PBXGroup; children = ( - 1EFF087B37DC1EFC63580C904061AC41 /* LSTPopView.h */, - 80A4C5F30966DCCAF12719455CE5BA94 /* LSTPopView.m */, - 76DC37DEAFA5D12B1D7F9040EFB03DA5 /* LSTPopViewProtocol.h */, - 6C39336AE39057C3014C954C694C278F /* UIView+LSTPV.h */, - 0CE9728E85B8432ED072CD0DC7926F20 /* UIView+LSTPV.m */, + 1C37C8F103EDECD09126133069B80115 /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; + 1CD312D2E666224315BB46AF04231D5D /* Products */ = { + isa = PBXGroup; + children = ( + A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */, + 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */, + FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */, + 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */, + C3A46B03C308EEEB11F2A62BA5D2E8BE /* JXCategoryView */, + BB4F011171FCB76B1AEBE390F843E930 /* JXCategoryView-JXCategoryView */, + 2F4A1CCB21DB7EA5A2ACEB11E374FBCA /* JXPagingView */, + E03F152E95B6924D2486511337D24503 /* JXPagingView-JXPagerView */, + 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */, + 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */, + DE19C7D984CBC535E4768F5543458A1E /* LSTTimer */, + 1FFED36A657123030ABB700256D73F15 /* Masonry */, + 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */, + 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */, + 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */, + E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */, + 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */, + 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */, + DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */, + B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */, + CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */, + ); + name = Products; + sourceTree = ""; + }; + 1F02F176B54A47E4D2768486D2B0A3DE /* Resources */ = { + isa = PBXGroup; + children = ( + 75A91D4BB6118442A9B7E27598AE7C99 /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; + 24E6D9CD604967D0A1CF25370DFD7865 /* Code */ = { + isa = PBXGroup; + children = ( + BF40FB09CDD92326BB3177C14DF172AD /* LSTPopView.h */, + 9B2F1B06BC651834D7B3EA1FBC96E466 /* LSTPopView.m */, + 5F35F0E5B188FD04E8E889503DEA5841 /* LSTPopViewProtocol.h */, + A5262AA56B4C8511CBA390D4808E37F2 /* UIView+LSTPV.h */, + A4D8DE877E59C1B5596F10D0213ADC5D /* UIView+LSTPV.m */, ); name = Code; sourceTree = ""; }; - 3781A0D3F34F1F7E995238764CEAD97B /* MJRefresh */ = { + 2DD7CD81F0AED96859289DDC12B0E9CF /* Support Files */ = { isa = PBXGroup; children = ( - 710E437843F202473C82F6B19F6E51D8 /* MJRefresh.h */, - A20F0D257E58B1A870FF109778CD4B25 /* MJRefreshAutoFooter.h */, - FFF8ADD6067D862411385E3BFF71A8DA /* MJRefreshAutoFooter.m */, - 741395EF99DABB64E0E04129DB222FD2 /* MJRefreshAutoGifFooter.h */, - 55CB47F746B1E99E4F1E11247844A401 /* MJRefreshAutoGifFooter.m */, - 8CBF9C8DF911E4E9B2C6A4628B5BC93B /* MJRefreshAutoNormalFooter.h */, - 02B660DF025FBF070A8248624E25ED79 /* MJRefreshAutoNormalFooter.m */, - 3C53F73CEF747A7A78B5CACAF16E5FCE /* MJRefreshAutoStateFooter.h */, - EA8BD469A978049C96BA8554A1F6D2D6 /* MJRefreshAutoStateFooter.m */, - 2288D70D4609F065E784F156F613AB62 /* MJRefreshBackFooter.h */, - AFFA5747833468A5901D8AA31E822627 /* MJRefreshBackFooter.m */, - F47E18ADFFC71918AE70F42C18C32A89 /* MJRefreshBackGifFooter.h */, - AA75F2BBB1F8188D75855FF34D8A7AE3 /* MJRefreshBackGifFooter.m */, - C59475012E53558600AFA4F7685E8F9E /* MJRefreshBackNormalFooter.h */, - E49B94A4D72DB4B81F4E8CDC098BC388 /* MJRefreshBackNormalFooter.m */, - BE11DDB27A20A87C02AE0F91342FA9E9 /* MJRefreshBackStateFooter.h */, - 0AE63A9BC3D50E34C84263A87F782ACA /* MJRefreshBackStateFooter.m */, - 758F54E0A75ADEC48F8924BFE16AEB3B /* MJRefreshComponent.h */, - 5A4E8FC1A8280B0B2C51BA4C08DA78B3 /* MJRefreshComponent.m */, - 62C98AF2DC89D542692AC64CD9F01818 /* MJRefreshConfig.h */, - EF96CCDE1944CF562A65CA60FCBAD8CC /* MJRefreshConfig.m */, - AE979EFDEE516846488B7EE0D6F7EED8 /* MJRefreshConst.h */, - E114D2723BCB64ADA9A307B95F5DE640 /* MJRefreshConst.m */, - A75653F7F6754FE7D26DA5C94A641DE8 /* MJRefreshFooter.h */, - 65EE0AA02CCB84E9D0C6987A57196DE0 /* MJRefreshFooter.m */, - 81E56B3079089075E57FE56264F80F1E /* MJRefreshGifHeader.h */, - 820CCFAA740875554C05F59A0958E53B /* MJRefreshGifHeader.m */, - 29AAA748545CCD9E566E6F15C52A44CB /* MJRefreshHeader.h */, - 6B6DBCFC84C1E1F5D3AF983520203544 /* MJRefreshHeader.m */, - 8B25FB3699225E9D90B118E0F624383B /* MJRefreshNormalHeader.h */, - A4685A3F7A42EE78A5B66190A100B3C2 /* MJRefreshNormalHeader.m */, - 4082EEAE9AC1F17D236D83E99200EA70 /* MJRefreshNormalTrailer.h */, - CF5E2B29305178430BD510351FDD6C99 /* MJRefreshNormalTrailer.m */, - 5909B734EE0396CAA42A403A6DCD4D27 /* MJRefreshStateHeader.h */, - B4E40A4D926E9D870172CB05C27151FC /* MJRefreshStateHeader.m */, - F83A870FD420501FBBA293B2D6A26AD0 /* MJRefreshStateTrailer.h */, - E5BBE1866B6FDB7D5307A6075BE5F347 /* MJRefreshStateTrailer.m */, - F8A410A1A4222EF3876A4FA11492EF05 /* MJRefreshTrailer.h */, - 53CC6A09F682C54055F6035F0D6E29FA /* MJRefreshTrailer.m */, - 77EC014BA0072D21D1B86EE5C78C59EA /* NSBundle+MJRefresh.h */, - AB93341F4852834DE8BA29DAB3E69371 /* NSBundle+MJRefresh.m */, - 2A350736EF0F4C89A3E43AA0BED8AC36 /* UICollectionViewLayout+MJRefresh.h */, - C45F5D95A727E9121E38DFEFADA82094 /* UICollectionViewLayout+MJRefresh.m */, - 8EE2F8245BCEBA174A7A8891FBE03ECB /* UIScrollView+MJExtension.h */, - E02C6844FCB15EFA12DE7936E2D89768 /* UIScrollView+MJExtension.m */, - 9C92B663B045144AB6926F9C7A3DA791 /* UIScrollView+MJRefresh.h */, - B90789CA4A099321E01CFF8CB566B5F3 /* UIScrollView+MJRefresh.m */, - FC070F9BCE8A8D0A21448F82A7DD5F5A /* UIView+MJExtension.h */, - E0B73DB737A3D2CAAA90EA20B4BB23B3 /* UIView+MJExtension.m */, - F714764FE1C9470C450626D766B18CA6 /* Resources */, - BE86B84F4BC9982281F5D2A106314CE2 /* Support Files */, + DB866CD01C61417D45924946690C442B /* HWPanModal.modulemap */, + EE80578D9DB416BD158323BE4D5C76F4 /* HWPanModal-dummy.m */, + 862F24C5813636BD088499E062B47C78 /* HWPanModal-Info.plist */, + E5592C4FA7C5389CD5E3CCE2F804F447 /* HWPanModal-prefix.pch */, + 83FBF1722FEB1FC5E339C64BC2275D81 /* HWPanModal-umbrella.h */, + C6B15D5B29642260AB882050F51A8AE5 /* HWPanModal.debug.xcconfig */, + CA18A067DCACA93C5FD4591EBC943217 /* HWPanModal.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/HWPanModal"; + sourceTree = ""; + }; + 2E6A5961188FF65067773B356D98FC06 /* JXCategoryView */ = { + isa = PBXGroup; + children = ( + 1A08646B05BD58116699CDFD07CA2977 /* JXCategoryBaseCell.h */, + 0B08ADE1A4FFE94FDBBE13FE7CC2C1E5 /* JXCategoryBaseCell.m */, + 65F97EE1352D7FC02982C03FB1D0FBEB /* JXCategoryBaseCellModel.h */, + 51E7542749774862B8EB9AAB7010F1AA /* JXCategoryBaseCellModel.m */, + 173BFB44F7DA63CD3AF5A497970B8203 /* JXCategoryBaseView.h */, + 72F67C5C9E4A93AFE6FF113487609183 /* JXCategoryBaseView.m */, + 6999AA4E4990D39E732B0FABF0CBB3CA /* JXCategoryCollectionView.h */, + D9DA60EBF6A57B0D3224E3ACD3E51971 /* JXCategoryCollectionView.m */, + 98D2F9331639FC6D12A4091DD5F47C96 /* JXCategoryDotCell.h */, + BEB32B7BEE20F8A74F80D03511F02260 /* JXCategoryDotCell.m */, + ABD4819FE00A1A954ABDDF0893C72587 /* JXCategoryDotCellModel.h */, + EF3A8DFB97BB54D169F6E8AC578F498C /* JXCategoryDotCellModel.m */, + 50BCF4AA1A75105CC04AA446B0DB9B40 /* JXCategoryDotView.h */, + EED2C7FD129EA6F065286A12502B79B7 /* JXCategoryDotView.m */, + 2E96574DDD94EB958E64B0AD7C7B20F2 /* JXCategoryFactory.h */, + 9E9F380E4292210FA99A8F5918C667C3 /* JXCategoryFactory.m */, + 0E2875C79F8461486A975B000C1ABDE3 /* JXCategoryImageCell.h */, + B7498A05A9D7A9FEE19E027CABE6B9DD /* JXCategoryImageCell.m */, + D4C17E87C77E85F28C83D98FAB4AB7F4 /* JXCategoryImageCellModel.h */, + EC57F0405D7809ECABB52C0C041C6F2F /* JXCategoryImageCellModel.m */, + FAC311E0F10AA1170D905B6C90AE765F /* JXCategoryImageView.h */, + 7778E8300903006F261959B2010A06D2 /* JXCategoryImageView.m */, + FEF91306ED7817FCE47628D37A94BF1B /* JXCategoryIndicatorBackgroundView.h */, + 74444E41B3920B9EB4DA66DCD2975612 /* JXCategoryIndicatorBackgroundView.m */, + 8A0C74EF09B54680C98CCBF1F2BD297A /* JXCategoryIndicatorBallView.h */, + 7A60D0CF9AE4E6671E2A6BBECEE57E4D /* JXCategoryIndicatorBallView.m */, + BF9910B7B2FF86AF620A45955A338072 /* JXCategoryIndicatorCell.h */, + CF64931699D303A3C9AE1FFC4682E257 /* JXCategoryIndicatorCell.m */, + 3B3FF5D113848A5A9AC244C579FF1441 /* JXCategoryIndicatorCellModel.h */, + 3875C6FE72ED2368D3701E9901F883B7 /* JXCategoryIndicatorCellModel.m */, + 4B0139E3193D3960F1A46D73064CA34A /* JXCategoryIndicatorComponentView.h */, + D4E6C9FAE7DD5348F64FBD66AA03DA5B /* JXCategoryIndicatorComponentView.m */, + 898DE7614EA3416744425477D130D9C7 /* JXCategoryIndicatorDotLineView.h */, + EC4AC84F5855EC104608477917DF3145 /* JXCategoryIndicatorDotLineView.m */, + D5D75E71D2ABCC5D3DDCC662DACBFAED /* JXCategoryIndicatorImageView.h */, + A2C056F5D1231FA94F92AA3712D545C2 /* JXCategoryIndicatorImageView.m */, + 62CDFF5EFD0FE66B2DEECF2E904EBEC1 /* JXCategoryIndicatorLineView.h */, + 1711B81346B8ED1944B5A8A478A4CF3F /* JXCategoryIndicatorLineView.m */, + 4E5F2B584A65C9246E3E8A7A856FF44D /* JXCategoryIndicatorParamsModel.h */, + AAFEF3383472BCA83D71A7DAAC5522CC /* JXCategoryIndicatorParamsModel.m */, + D6F5B88F49EB151A388B58319A67E2A1 /* JXCategoryIndicatorProtocol.h */, + FD5B9F06C28C32AA434A5A2FFACDF89A /* JXCategoryIndicatorRainbowLineView.h */, + CC8BAAD188938B05A876ECFEAA39F2E6 /* JXCategoryIndicatorRainbowLineView.m */, + 3381742E54E03DCDB9DD644DF65C4689 /* JXCategoryIndicatorTriangleView.h */, + 1E17CF24E4278604BB723E30B9997957 /* JXCategoryIndicatorTriangleView.m */, + 658F3554D0CFB5BC5E252408F8CD5317 /* JXCategoryIndicatorView.h */, + FD4AB223CCA1E3159EE2C805605A0657 /* JXCategoryIndicatorView.m */, + 7C36F83AF55E2873F497777F59071760 /* JXCategoryListContainerRTLCell.h */, + 6C70C9B1AD0F41A4C5E9026F5AF7F65F /* JXCategoryListContainerRTLCell.m */, + E25EECD78C776DB2FDB519D3AA7CB0BD /* JXCategoryListContainerView.h */, + 29EA07EA8EF3C7818A9505A783C4FF02 /* JXCategoryListContainerView.m */, + 874DD2FA3B20B6BCBCBEE03BEEBE1281 /* JXCategoryNumberCell.h */, + 1B8FD707DDEC1F98F5C5FE19647F0592 /* JXCategoryNumberCell.m */, + C74AFAA0D49E0563D9312CEA70CCF8B3 /* JXCategoryNumberCellModel.h */, + F15C652E7FDB0BE287A551718B00B6A8 /* JXCategoryNumberCellModel.m */, + C6B6ABC9B259D86AA3C2451E682BE701 /* JXCategoryNumberView.h */, + 44CB5B4F2C2351C8F32C675C94C2EAC0 /* JXCategoryNumberView.m */, + 00B67A73E7EE0522188FAE4145324D19 /* JXCategoryTitleCell.h */, + 057CD48F09C7A5468D77A9691A639803 /* JXCategoryTitleCell.m */, + 6C34880EFF82114AECCB354A57C47E7C /* JXCategoryTitleCellModel.h */, + 3545C9AC3AD500CD4E48A3E2630C521B /* JXCategoryTitleCellModel.m */, + 639A45B880AEBFE1C16D4A9F3AA3D49C /* JXCategoryTitleImageCell.h */, + D4AA530BA675D0E78BDD9644338B48A3 /* JXCategoryTitleImageCell.m */, + DDAA59B8AF34E0C4765874AEE69571F7 /* JXCategoryTitleImageCellModel.h */, + 04AE87BD26EBAF13B558201544C0E822 /* JXCategoryTitleImageCellModel.m */, + 7FBDD10C8770914A56998AB2021E385B /* JXCategoryTitleImageView.h */, + 8618BF2AA2A260801FDF48131074A906 /* JXCategoryTitleImageView.m */, + 54CBDA1EBC8A896E6DB3A15D5332DB1C /* JXCategoryTitleVerticalZoomCell.h */, + 6D390F38F6574F6D973E2C4A52D004A1 /* JXCategoryTitleVerticalZoomCell.m */, + 60A68C8A5D160FE046F60DF6C446111D /* JXCategoryTitleVerticalZoomCellModel.h */, + 6549E81907E05317DA862F329B2D4DDC /* JXCategoryTitleVerticalZoomCellModel.m */, + 059C3C014AA92686FDCE895211A108CE /* JXCategoryTitleVerticalZoomView.h */, + 7B4337532A4911F88E85BB14DE78FBB7 /* JXCategoryTitleVerticalZoomView.m */, + E42238B57F88C70438DE479E184E4352 /* JXCategoryTitleView.h */, + 202D2DE7A9C3209A4BF4D407CF1AB06A /* JXCategoryTitleView.m */, + DACFBFCC588CFB73AE8A6DB153DEA42F /* JXCategoryView.h */, + E0A4E94FB3CF9B468E72117C85C2E773 /* JXCategoryViewAnimator.h */, + B46184374613AB561CB67E0F1EF14DD8 /* JXCategoryViewAnimator.m */, + C617C2D863C4AC28AF0370EDC02120A9 /* JXCategoryViewDefines.h */, + 0E752820782AF474A360AC65F5EFA79D /* RTLManager.h */, + E5EA191D7CFA74A3FEAFB27130A3FEC7 /* RTLManager.m */, + F904F7CF43AB518217FB1AB9236020D4 /* UIColor+JXAdd.h */, + 137AD002D5B6FA89785842F03034A5B1 /* UIColor+JXAdd.m */, + 1F02F176B54A47E4D2768486D2B0A3DE /* Resources */, + C79383FD5154699A5CFAA9706E39AF6C /* Support Files */, + ); + name = JXCategoryView; + path = JXCategoryView; + sourceTree = ""; + }; + 36091ADDE4C749A4350E3A117CAA7398 /* MJRefresh */ = { + isa = PBXGroup; + children = ( + 1325B9E2F97C77F3E9191898C4045E7E /* MJRefresh.h */, + A96A60100BE610809D6E0C7741CF992C /* MJRefreshAutoFooter.h */, + BE6EFE785E6216D9C7C1D6B7A4EEA5EA /* MJRefreshAutoFooter.m */, + 3FAF0BE8296496D28F5C6AA6974B39E8 /* MJRefreshAutoGifFooter.h */, + 7D7FC4156E6779F82E6B8036FA7A1307 /* MJRefreshAutoGifFooter.m */, + DEDB698B7BC2AF63B53722CF1D2D8E57 /* MJRefreshAutoNormalFooter.h */, + 6D2CC2D1F9AB2D4CFC68B6327C2793C5 /* MJRefreshAutoNormalFooter.m */, + 02E945EEF3757BDF2B47E65C51C4D6D6 /* MJRefreshAutoStateFooter.h */, + 401F0F0AAEEDDA40C2D25DB817C9B5C6 /* MJRefreshAutoStateFooter.m */, + 17D9582F158C09F75D84ECE893151E91 /* MJRefreshBackFooter.h */, + 0A5E3A2C0C49EB165C854762A832D48A /* MJRefreshBackFooter.m */, + C746AE302AD12A4D0F6E287CACA690C6 /* MJRefreshBackGifFooter.h */, + 3A8EB0FE66AD3E48C10CDD802521D146 /* MJRefreshBackGifFooter.m */, + 3E42525F0D8B91406B2C7015E3E52B29 /* MJRefreshBackNormalFooter.h */, + C55730A1966B5DF338B0554ACC4B0B16 /* MJRefreshBackNormalFooter.m */, + 15D9AA9876374637F32E00BE13AA1880 /* MJRefreshBackStateFooter.h */, + DD1439668AF92748DEFAD18BF418CE55 /* MJRefreshBackStateFooter.m */, + 7C0E4900E01624D5262A1ED1DF2F6D35 /* MJRefreshComponent.h */, + 4F81509596D525489E9AA55CE4C0B4C1 /* MJRefreshComponent.m */, + E9598F4E504AE0DA98A0B2DC305F1C83 /* MJRefreshConfig.h */, + 42EF67A85226C8C14C983E81C71F392D /* MJRefreshConfig.m */, + 55A76B2979ED12495977612719BE47A2 /* MJRefreshConst.h */, + 7032D81BB8B12F48732F1EBEA7A020D7 /* MJRefreshConst.m */, + D40BB639047461966566FFED666B3ACF /* MJRefreshFooter.h */, + 2CE7B5832F4AC9648A3CEB7DD03473E4 /* MJRefreshFooter.m */, + C4B0E298E792EE24705C7E8457669228 /* MJRefreshGifHeader.h */, + A1E84842FBF29954156976CB6DD0F275 /* MJRefreshGifHeader.m */, + 195B648C25562B52954B1E7C1D8964C3 /* MJRefreshHeader.h */, + 1A2B6D97C6E9B5572232985B40BDA6C4 /* MJRefreshHeader.m */, + 367DF77D41DE010B9FA86137928C7C44 /* MJRefreshNormalHeader.h */, + CAD02815855109CE0DDD83222F913EF8 /* MJRefreshNormalHeader.m */, + 342267EEBD80FDDCEAA647EFBE0EB6BD /* MJRefreshNormalTrailer.h */, + DD3BFE6DB15E8FF64920F720EA31EEDE /* MJRefreshNormalTrailer.m */, + 13B6B935F583A1ED5234B7E3DF044521 /* MJRefreshStateHeader.h */, + 119F71892BB85FDC29B99AE148231087 /* MJRefreshStateHeader.m */, + 846CA0BB8166DB9008D71F59F4A301EA /* MJRefreshStateTrailer.h */, + B26771C31428D52F8DFB859AE1AC3503 /* MJRefreshStateTrailer.m */, + 6A91961A508CA556983A4A3F57FB3133 /* MJRefreshTrailer.h */, + 5128E7CF3F35BE25186575F63661EEF6 /* MJRefreshTrailer.m */, + 10B904BAC9CC3925EE6B4E2130826A6F /* NSBundle+MJRefresh.h */, + 824A8DE6460C98A565B1EDD8B4432F50 /* NSBundle+MJRefresh.m */, + F0FF9B39CB74F30B336CF7D4085E2AE0 /* UICollectionViewLayout+MJRefresh.h */, + 99CBD01AD35AF793B343AC0ACF2CF164 /* UICollectionViewLayout+MJRefresh.m */, + 23648E3B16301958DD4429C021EB223C /* UIScrollView+MJExtension.h */, + 433A3E0D94E768912FBBE36F7C961678 /* UIScrollView+MJExtension.m */, + 241FDB4FE9E3CE45C4854F0FEB6F8BAF /* UIScrollView+MJRefresh.h */, + 9AFDFE95B53BDA0F282212CF3E9B940F /* UIScrollView+MJRefresh.m */, + 47F474CA83A8EC338136568BDBFF8343 /* UIView+MJExtension.h */, + 239F725CB21A7ABF0EDB35FC92732A5C /* UIView+MJExtension.m */, + 4C55C9351E9FED232300EF60CC442288 /* Resources */, + 6095F5BA99A7BC3EDE17ABB647B490AD /* Support Files */, ); name = MJRefresh; path = MJRefresh; sourceTree = ""; }; - 37B575C4446BF19B0257C4C9AB6F1FED /* Resources */ = { + 37D1A84159EF2DA3622D5B6253D94232 /* Frameworks */ = { isa = PBXGroup; children = ( - B647311E2487029EA920B923258697D2 /* PrivacyInfo.xcprivacy */, + AED1D348255F77CE4BB2B0BB61E22F08 /* Bugly.framework */, ); - name = Resources; - sourceTree = ""; - }; - 3B43DD955EE30DAEC0EAAF7C261E2B86 /* HWPanModal */ = { - isa = PBXGroup; - children = ( - 3583F45BB2A021FDC55DB56C5C606CB1 /* HWBackgroundConfig.h */, - 11A5C3D2E3080F2A5EECFB7F1FC6C319 /* HWBackgroundConfig.m */, - E164F75EDECDE7B82945FA657EA41708 /* HWDimmedView.h */, - 10D1C021B7050EF6841A364EE9A0A570 /* HWDimmedView.m */, - FF47B51E8368756DB1E42F174494224F /* HWPageSheetPresentingAnimation.h */, - 25AB23A95A2135A43EF14C148E707F7A /* HWPageSheetPresentingAnimation.m */, - 802FB1A32618485AA28D17584662FBAF /* HWPanContainerView.h */, - BFC6D8F98A0A99B4F62553DD6B2DE362 /* HWPanContainerView.m */, - 03CB4C12A5B494B4ECDEC92BC32E7490 /* HWPanIndicatorView.h */, - 88E8C1FFE2A2D6CB9741EF2354A3B30E /* HWPanIndicatorView.m */, - 53EC2576F6D68ECA3E1920A896AE4E4F /* HWPanModal.h */, - CF585038948BE5BD9FDE25D090C77A52 /* HWPanModalAnimator.h */, - 7AF90BBEF3A681BE8314F80257F1182C /* HWPanModalAnimator.m */, - F5D51DADE6BB30185CA5DE0A026B674A /* HWPanModalContainerView.h */, - 5030EF25D193EB41CCA5DF24FE48C1DF /* HWPanModalContainerView.m */, - 0E5F47A6ED542F1D0EAA4DD94091B61C /* HWPanModalContentView.h */, - DD391D4FA7F38A97455407F9DA5DA8F0 /* HWPanModalContentView.m */, - C49E916A72175489DFFC49A15E87403D /* HWPanModalHeight.h */, - BF679003FB79C12E8A8221EC19044EC3 /* HWPanModalIndicatorProtocol.h */, - 10A8507648AC9DE21CFA0929B1ED0404 /* HWPanModalInteractiveAnimator.h */, - 31F540B1617ECFBBE3A0FB1043BFB861 /* HWPanModalInteractiveAnimator.m */, - DE26DBA97E2F7B5B4805533E6C020C30 /* HWPanModalPanGestureDelegate.h */, - 4A4F0899D1AD5593F9373F8225D28188 /* HWPanModalPresentable.h */, - 56A664809217C1D10A7EC649E972D6AB /* HWPanModalPresentableHandler.h */, - B876DE6F099D679F03040B8EF24E5C82 /* HWPanModalPresentableHandler.m */, - 93A142314C8E6BF405461AFD41E16D08 /* HWPanModalPresentationAnimator.h */, - 0004D14E99E5CD92EA09732F82694FF5 /* HWPanModalPresentationAnimator.m */, - 3C880A37C8BD02476827078E98C08810 /* HWPanModalPresentationController.h */, - C7586CB0CDC6CAF19F6A64083B6C8C0F /* HWPanModalPresentationController.m */, - 165D33815F330DB72870682C820A790B /* HWPanModalPresentationDelegate.h */, - 2D1699A762F8D719D2565E3B0B508554 /* HWPanModalPresentationDelegate.m */, - 70ABAEE0904B02D3CE9045A0A088E18F /* HWPanModalPresentationUpdateProtocol.h */, - 093706FD3573E105CD2368D496C2DF76 /* HWPanModalPresenterProtocol.h */, - 57AA794BD50692239409E574C7FD0846 /* HWPanModalShadow.h */, - 883D06418312C016F973700D20558656 /* HWPanModalShadow.m */, - FCCAFE3B7FF5BB1E728A5F5834F651D8 /* HWPresentingVCAnimatedTransitioning.h */, - D9879EAF15EB971D024F6726C4E07562 /* HWShoppingCartPresentingAnimation.h */, - 8927ADAF60DF7D3D91B390580BD36295 /* HWShoppingCartPresentingAnimation.m */, - 8D7D197A108D97B04C3BA390CD4499D8 /* HWVisualEffectView.h */, - C15066DB017692FFB93D6BF3C34128D3 /* HWVisualEffectView.m */, - AF32E35E8F4552F6AF08F140AD085FE4 /* KeyValueObserver.h */, - 05E1785189AB18B6B47ECD584144AA0F /* KeyValueObserver.m */, - 2B6E38C872CB24F91AFE94F3DF5EFCC2 /* UIScrollView+Helper.h */, - 66C0C4029B17B8E45FF492CEEBD834E3 /* UIScrollView+Helper.m */, - C387114CB39CEE512E07F38E4439D4D8 /* UIView+HW_Frame.h */, - 109CFCE9774385E51695E82E530412B8 /* UIView+HW_Frame.m */, - 5F369D00927FCA59283AE71B174D2D1D /* UIViewController+LayoutHelper.h */, - 0041D895443AAAA3D1BCD4056EBB4F37 /* UIViewController+LayoutHelper.m */, - 4816EA2348DC71F3330B4D2743758FEF /* UIViewController+PanModalDefault.h */, - 0DDEE4190CA21B03ED83225BEC5FAC7D /* UIViewController+PanModalDefault.m */, - 995AA67533265367D116C78944065262 /* UIViewController+PanModalPresenter.h */, - D3576B2FF83DF230E75AA05AB2DB6B4D /* UIViewController+PanModalPresenter.m */, - A3F7C5007915361DF90A13BBA8CD3EFF /* UIViewController+Presentation.h */, - 1D36CFCB34B6B2FF494AB70EC5024CFA /* UIViewController+Presentation.m */, - AABD58CAE3AC5D0D8560E01BA94341F0 /* Support Files */, - ); - name = HWPanModal; - path = HWPanModal; + name = Frameworks; sourceTree = ""; }; 4098ED899C8DF8E013F9F260ECFAA236 /* Pods-keyBoard */ = { @@ -1869,19 +2051,201 @@ path = "Target Support Files/Pods-keyBoard"; sourceTree = ""; }; - 463425673C27CDDB3B6077DA1769E98C /* Support Files */ = { + 4121134849DA04BCD3BB12CF65EEF182 /* Core */ = { isa = PBXGroup; children = ( - F24F9CCCB353131934224305105F7E49 /* FLAnimatedImage.modulemap */, - DCB59AEF88556057BC2FD85427D2EFE7 /* FLAnimatedImage-dummy.m */, - A8CED6128E73E0F84131EFEF369AFB64 /* FLAnimatedImage-Info.plist */, - 1E115C24A1085A18B17DA1956923425C /* FLAnimatedImage-prefix.pch */, - 56083A8D73CF98D49960B5783A36797F /* FLAnimatedImage-umbrella.h */, - C8974089710AB7F8A65D77241AA70557 /* FLAnimatedImage.debug.xcconfig */, - DDD6B4DA641B2F94F2D426AC2D4A5E7E /* FLAnimatedImage.release.xcconfig */, + 32CCCC7F014C0FE2CA551D9AF48EEF89 /* NSBezierPath+SDRoundedCorners.h */, + C5A25B7B454717DB3993591B5E8B612E /* NSBezierPath+SDRoundedCorners.m */, + 0A7095DB3527991440F374C9F9DB5050 /* NSButton+WebCache.h */, + 4A970B89D7ECEFF994ACF22A5493E001 /* NSButton+WebCache.m */, + 4561971E2CF7A1F1B00AC6091B3448DE /* NSData+ImageContentType.h */, + 2132EF8C73164960BCAFD57CF9C7A53F /* NSData+ImageContentType.m */, + F55015AACD21AF6274741BBDAC6148E2 /* NSImage+Compatibility.h */, + 102C92CE02746A6588B44F852322AB39 /* NSImage+Compatibility.m */, + 167D63F7114C5D501803C08C617324CA /* SDAnimatedImage.h */, + 5B609960A71B1FE2AB814B679D9E7609 /* SDAnimatedImage.m */, + 2BEAAFCDD4CD23AABA4CD7359454B646 /* SDAnimatedImagePlayer.h */, + 8532F3DD3C373C14A106D14F67A3C301 /* SDAnimatedImagePlayer.m */, + 807026E96F55910EB566C0F4535DF3EB /* SDAnimatedImageRep.h */, + FBF4C669CA968A448B7E1DD3A141A41C /* SDAnimatedImageRep.m */, + BEE43BCA7C1A101BFC7A5856F8793387 /* SDAnimatedImageView.h */, + 635235003B3FEDB8B457A8FFF46C69E3 /* SDAnimatedImageView.m */, + 13D84A2503CDD440D0A0063FF97A2EB4 /* SDAnimatedImageView+WebCache.h */, + D547696F5943987BC61D389F16B201E8 /* SDAnimatedImageView+WebCache.m */, + C0ECED1A3FCBB93D40B1BFFF5AE2F27D /* SDAssociatedObject.h */, + 9421B0E41FC583CAD966F98C60445BAB /* SDAssociatedObject.m */, + 9820AAA1C732351179414BB46300A1B7 /* SDAsyncBlockOperation.h */, + 5E8666C77464C3B683AB0F8D4DEA6951 /* SDAsyncBlockOperation.m */, + 491DFACE04BF80FD0F37C4ECFE908522 /* SDCallbackQueue.h */, + 7E8762E22AB8C87B76E6D94D44665136 /* SDCallbackQueue.m */, + F246E4D58E65C83AB3493871F692FC9C /* SDDeviceHelper.h */, + 4CF942497E18FEE75DD2CDC6779A790A /* SDDeviceHelper.m */, + CAD21419CFC8A372DB941E7983ADDD9D /* SDDiskCache.h */, + 45505B1DFA133379CEE6DD6D8148013D /* SDDiskCache.m */, + A5C74D4E7CA539C956587A3615702D24 /* SDDisplayLink.h */, + 61A0FA60F5E41A8B04C442FE582DA298 /* SDDisplayLink.m */, + 3201B19667C12026E1C92EA1DD973BB7 /* SDFileAttributeHelper.h */, + 41B90877BBAECA72C2F67A5E39E1E87A /* SDFileAttributeHelper.m */, + 3653F678D1C9DBE34F6262A65263C642 /* SDGraphicsImageRenderer.h */, + FC52B8F222678A49BF1BA307CD9A7777 /* SDGraphicsImageRenderer.m */, + FB334521D7F08199DE839AB68A37105C /* SDImageAPNGCoder.h */, + 92B0AD9AA2CE09EEB0EF8C040E103B97 /* SDImageAPNGCoder.m */, + D3543E70B7F1B6F0CB25AB731CA0DFBE /* SDImageAssetManager.h */, + 9F94B604866DB37515D32D88635EFEE2 /* SDImageAssetManager.m */, + DC870A534B766E7815C7744EE9E7E3E1 /* SDImageAWebPCoder.h */, + 2E5DB75D5C223CDC5703FA115447A148 /* SDImageAWebPCoder.m */, + BCAF03C4FF87945F86C061039CB2443F /* SDImageCache.h */, + 11EEC0D59FA31FAAD209A208EB338575 /* SDImageCache.m */, + 94DB79C6893EAE9D1A7D3559B485BCC5 /* SDImageCacheConfig.h */, + AEB0E8A16F89DAA71F5718EDBF3E2A83 /* SDImageCacheConfig.m */, + 7A8A3FC6E6388A4864974A3D3B9C02F6 /* SDImageCacheDefine.h */, + 6DB3789FF1142F1817E52B4F6C9BA1B6 /* SDImageCacheDefine.m */, + D744043462D81E4ED2BB1ECAE8E9F696 /* SDImageCachesManager.h */, + 25A5CCE05BC1D97AB685203E1D41C4B0 /* SDImageCachesManager.m */, + 9DC4AC8D166AB2BD8B557BFA9FA9872C /* SDImageCachesManagerOperation.h */, + E6B846D03C97210EDD55850D04A8F27A /* SDImageCachesManagerOperation.m */, + 471A02E298FA363A6051045C83C8BE05 /* SDImageCoder.h */, + 9D7E450C43D308EE4C1B879D0B60A4BF /* SDImageCoder.m */, + C7E392E347A9555F1447E0FBB3E777E5 /* SDImageCoderHelper.h */, + BBC5ED786070BB7777881EF2B55FF369 /* SDImageCoderHelper.m */, + 83B5308ADA544D7E6FCE86EFD21D5CBB /* SDImageCodersManager.h */, + 3D1EF86D80B6333688465CCC41BA33F7 /* SDImageCodersManager.m */, + 6C3B1F50C3A3E82B67AE98F2BAAD5C3C /* SDImageFrame.h */, + EAEC3302C39E58E44D49A12FA8699A84 /* SDImageFrame.m */, + F86F79271CDA27370B63C4004FB83EF7 /* SDImageFramePool.h */, + 8E8C0DD47533304FD7479FB5A47A4E3B /* SDImageFramePool.m */, + 911E6F5D1D17453D35BE3FA4A9086972 /* SDImageGIFCoder.h */, + CE77C4D90418C342647C55D75A5C1AE8 /* SDImageGIFCoder.m */, + B5EF3518EEE6DB69526EE34FF9D58DFD /* SDImageGraphics.h */, + 2504FFB7834ECCFC15329B28F3C9A331 /* SDImageGraphics.m */, + 0F050843F5053FDD98D8FE72C1E28A5F /* SDImageHEICCoder.h */, + 3125F7D904D9F1F20C7699EF5186B19F /* SDImageHEICCoder.m */, + 390647665D633FF246584D1E27162F0D /* SDImageIOAnimatedCoder.h */, + 3504487D6CA5438A7FB00D149564DDFC /* SDImageIOAnimatedCoder.m */, + 06077AACB035D8452C9F730B2E1F00DF /* SDImageIOAnimatedCoderInternal.h */, + 31894250FE81D510485178A2F984B715 /* SDImageIOCoder.h */, + D2F471FC57FF6DD1F698134B35D27C95 /* SDImageIOCoder.m */, + 9CE19B5D21ECCFC76311F186D2B3F651 /* SDImageLoader.h */, + FA395F2DBB98D70F218443EA65E0D442 /* SDImageLoader.m */, + E889A3C02C6D9C2F5501AF30759E916C /* SDImageLoadersManager.h */, + B3F518DFA534AD602991065542FADB29 /* SDImageLoadersManager.m */, + 61080F57DD92AB8ABC811791B547090C /* SDImageTransformer.h */, + AC558AE5F168E24878BD4ACF3EE1274A /* SDImageTransformer.m */, + 3422D3CB84719A98D68CD9DE2857E694 /* SDInternalMacros.h */, + 123714F0F2335CBE901933785D4D26FB /* SDInternalMacros.m */, + 82BDCD67CE12306B5AF6A9E3DB88E0DA /* SDMemoryCache.h */, + B7AD3647BEEBE4C691B28F5746D51E7D /* SDMemoryCache.m */, + 5A6A16B78780399804F5DD15816ADE2B /* SDmetamacros.h */, + 45880427FEDFE00B81EA46DB6F5AFD52 /* SDWeakProxy.h */, + C5A9A86ABA54140CD0A5B6CD44C79740 /* SDWeakProxy.m */, + BB4D65769822C57911F4A84B9F8FADFA /* SDWebImage.h */, + C205DB74EDBD3C80FB36923BD2255DBB /* SDWebImageCacheKeyFilter.h */, + 34C31D8DFEC22296E69E97BC5CEAE316 /* SDWebImageCacheKeyFilter.m */, + E95C47EFA2CADA467B5A46831F0EA87A /* SDWebImageCacheSerializer.h */, + 6BEFA0A1959620AC394975A01082A23B /* SDWebImageCacheSerializer.m */, + AB253C473EBD2DF633A230C7FAA304B7 /* SDWebImageCompat.h */, + 64891F4568CD87380D133019B00B2324 /* SDWebImageCompat.m */, + 8B0013F9906622545E27B913F2092F22 /* SDWebImageDefine.h */, + 9C599636DAB63CB63CC65E368E1BAAFC /* SDWebImageDefine.m */, + 402826B784C1198142F399AD251F2A3A /* SDWebImageDownloader.h */, + 2FED06425BD958CD54FC4A96C6FF1992 /* SDWebImageDownloader.m */, + E138C277A1DD60E5BB20AB4EC7CEBDB2 /* SDWebImageDownloaderConfig.h */, + 47655EC4466A20F4BEC0C76B8F4C5440 /* SDWebImageDownloaderConfig.m */, + 5716AF79F54782358457FBB452B73975 /* SDWebImageDownloaderDecryptor.h */, + DBE1F0821F32567F3E84359D65C8422C /* SDWebImageDownloaderDecryptor.m */, + 9B89E97BE59B9448BC63E348FA77F055 /* SDWebImageDownloaderOperation.h */, + D68B54EB4EEB9AF6B9ED16CAB83E16BA /* SDWebImageDownloaderOperation.m */, + AF302A5E7BA56F9F631A8591DA72D3C3 /* SDWebImageDownloaderRequestModifier.h */, + 02986FE530B6F5FD0ABF721900839DA5 /* SDWebImageDownloaderRequestModifier.m */, + EC33F9EE9311F0E41E69AB2D40770217 /* SDWebImageDownloaderResponseModifier.h */, + BBC2FF6B1D45486A6893E456C4B85E05 /* SDWebImageDownloaderResponseModifier.m */, + 109DC293F90D678E22D453F41A197049 /* SDWebImageError.h */, + F8A31B7D92D4FBD879F8C39ED3139439 /* SDWebImageError.m */, + AD28EF542A0B7F210E7C92D1D9DEC003 /* SDWebImageIndicator.h */, + 0A8F3B5ED5052E8AFF569E50436DC3C0 /* SDWebImageIndicator.m */, + 32DEFB57DAEAFA1A97A9826678533D16 /* SDWebImageManager.h */, + 2ED4FAFE5BD7891D4471852209337077 /* SDWebImageManager.m */, + 2ECB40CAF1E6F3F4A5F02F74E30B95E8 /* SDWebImageOperation.h */, + ED2932A528EF3931C345CFE64B9F95D6 /* SDWebImageOperation.m */, + 1FCD0CB41F1E259546B6F8A9BFF05378 /* SDWebImageOptionsProcessor.h */, + 6A632B4F7EA06C55CADB3BF7C49D7860 /* SDWebImageOptionsProcessor.m */, + C63ECE6EA6AB3C1B9F676C1A2510CA67 /* SDWebImagePrefetcher.h */, + E48A50CB4DE0A87DE4F3E1BFE24DC7B7 /* SDWebImagePrefetcher.m */, + 28EBA38DF7DE3C55A1DCF1C9536E3712 /* SDWebImageTransition.h */, + BFEF7CB304E59179EBDA954FA636E74D /* SDWebImageTransition.m */, + 2A543722998E5C6171A0B4A729D11BBB /* SDWebImageTransitionInternal.h */, + 4C4CB24406FFC32C73C615D12F0532C7 /* UIButton+WebCache.h */, + 21C74D93A3238750FF610EABE13EB50F /* UIButton+WebCache.m */, + 368AF39857A6659131D7CD15698E6867 /* UIColor+SDHexString.h */, + E29E39BBB558CC51A6DB91379351B72E /* UIColor+SDHexString.m */, + 75B6A4916D912131001F61C28CCA6565 /* UIImage+ExtendedCacheData.h */, + C1F534C5FFF39633128C9B99F1BBF1B5 /* UIImage+ExtendedCacheData.m */, + D843F393C308E0D3BCB88A0B04FDB291 /* UIImage+ForceDecode.h */, + 6645D9E2FCEC9ED435B284460DEDDF89 /* UIImage+ForceDecode.m */, + 21199D87A8FB4561900F6BC425147989 /* UIImage+GIF.h */, + 35205291EDA412911A7CCBF5DB6087EB /* UIImage+GIF.m */, + 06EFD395C240E38E2ED0DCAF40CE73FC /* UIImage+MemoryCacheCost.h */, + 5107F5A871AC7AEDAD8C78C1F1AB8E40 /* UIImage+MemoryCacheCost.m */, + 3EA0FACBE46F43AB7A99266BBBF20510 /* UIImage+Metadata.h */, + 6B5C2096D95608EEB566217452868E46 /* UIImage+Metadata.m */, + 35DC020855ECA02C5E2568299594E9C0 /* UIImage+MultiFormat.h */, + 5734E5CBE9E63CD37E71A375796587B5 /* UIImage+MultiFormat.m */, + B5C750768FB8EE26E8F613C1D910045B /* UIImage+Transform.h */, + A67C49E3D329D82553E5FEBB4951ABD7 /* UIImage+Transform.m */, + 806C18993732E8D418AEA50EC6162EDC /* UIImageView+HighlightedWebCache.h */, + 88D5019FBBC4DC80F31FB68B1820A427 /* UIImageView+HighlightedWebCache.m */, + F21EDB4000AA52958FC207353BC36367 /* UIImageView+WebCache.h */, + 1A1600286757D192233397A2BF1A2371 /* UIImageView+WebCache.m */, + 8179AB093F869B4BCCBBF8427F69555B /* UIView+WebCache.h */, + ECA422AB0F45E3F4B650188FEE476C8C /* UIView+WebCache.m */, + 634BE374E20F830B5B77550EFCF89612 /* UIView+WebCacheOperation.h */, + 0A19BDA4E648916460C20489D6D183F0 /* UIView+WebCacheOperation.m */, + B072B2B3BF7FE061CC694AE00BCF5858 /* UIView+WebCacheState.h */, + FF6C98975F33C466CDCC506B95080046 /* UIView+WebCacheState.m */, + F897C86CB2866AB045A64520219B6522 /* Resources */, + ); + name = Core; + sourceTree = ""; + }; + 412E12540DFA0D72BBEB364F09064325 /* MJExtension */ = { + isa = PBXGroup; + children = ( + E5B1C13BB84FC1E79BC9BB233B793A5A /* MJExtension.h */, + 04A50C0A5F4CA1B3AF632BFE12460FC6 /* MJExtensionConst.h */, + 47A777C7602E23E11AE500103D52A253 /* MJExtensionConst.m */, + 0C9F5466A18204DE825F30433C784EDB /* MJFoundation.h */, + 61A7EBF5198D90CFC9C01A0BA03924D8 /* MJFoundation.m */, + 1326C5B7B2B67B2A6E9A785F1ECEA87F /* MJProperty.h */, + C9DDC2FE19D7DC5621872F440C5E8A37 /* MJProperty.m */, + 367088C36E8BF33957802AE4A6256CC1 /* MJPropertyKey.h */, + C8B51A0410EE632DF42E1C298E25B221 /* MJPropertyKey.m */, + 4E2D9F4632DB7036D701CB57007800AB /* MJPropertyType.h */, + 4688EE09ADCEE19CD4BDF95833F7E81D /* MJPropertyType.m */, + F7CD4CF41A222A66B3E435AB32DF697D /* NSObject+MJClass.h */, + 96BA563F965A1054AC53D0F3D5BD3AFE /* NSObject+MJClass.m */, + 9777292C62AA2375C63BAEF75D1F940C /* NSObject+MJCoding.h */, + 8FD309B3FADE968B4258080AC443EFCB /* NSObject+MJCoding.m */, + BDE2764DE3EEF78845A18DB898232DC0 /* NSObject+MJKeyValue.h */, + 6CE2A9B22B9FC87A02A230599E72D4F1 /* NSObject+MJKeyValue.m */, + BE09431A1BE57A882CA02B1E434916A8 /* NSObject+MJProperty.h */, + CFD12B92C17E28346EDC2EC75D0BF494 /* NSObject+MJProperty.m */, + EE1A5661BE1EACFB3D2C7F19D51BF011 /* NSString+MJExtension.h */, + 5B4EF64EB8018D8E9CE7C8CB5FACCD5B /* NSString+MJExtension.m */, + 17AEA0C7D131B1C990249C70BBD62CDF /* Resources */, + FFFE14F5389A574527140C5AC02880B9 /* Support Files */, + ); + name = MJExtension; + path = MJExtension; + sourceTree = ""; + }; + 453238A8EA177DEF4A00D8C859B1DA27 /* Support Files */ = { + isa = PBXGroup; + children = ( + DDA8FA3EA27827F124700F1B6176E4CE /* Bugly.debug.xcconfig */, + 956C8FF42F553F12124DED23E19FE31D /* Bugly.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/FLAnimatedImage"; + path = "../Target Support Files/Bugly"; sourceTree = ""; }; 47B776543D6613BCB6FB72308F863018 /* Pods-CustomKeyboard */ = { @@ -1900,217 +2264,456 @@ path = "Target Support Files/Pods-CustomKeyboard"; sourceTree = ""; }; - 47E1BAF577BBA403FE7B999A122D3E59 /* Resources */ = { + 4B2DDDE1A44400085093EA342624D230 /* Support Files */ = { isa = PBXGroup; children = ( - F4AF21DC4288D196E2F556338C3101AE /* PrivacyInfo.xcprivacy */, - ); - name = Resources; - sourceTree = ""; - }; - 54FB6DAEEA2800483CD443ADC094963C /* LSTPopView */ = { - isa = PBXGroup; - children = ( - 3558A467522318FD82C582513E547957 /* Code */, - 1724889F583861283992342B8F084070 /* Support Files */, - ); - name = LSTPopView; - path = LSTPopView; - sourceTree = ""; - }; - 575B9A37FCA1D986BF2159F1DC5640CC /* Pods */ = { - isa = PBXGroup; - children = ( - 89D6BC06C1AD7B6FFF6982A03286C710 /* AFNetworking */, - AF98548CB9C337C748F2E8BB9B2CA20B /* Bugly */, - 9417EBD2D308B63C380DB7DDBB4539BC /* DZNEmptyDataSet */, - 78901ACF392301939104361834A904A6 /* FLAnimatedImage */, - 3B43DD955EE30DAEC0EAAF7C261E2B86 /* HWPanModal */, - 64E7B9824C6F286E5F92AAABB42EFBCB /* LookinServer */, - 54FB6DAEEA2800483CD443ADC094963C /* LSTPopView */, - 65AD9332968D1533C04FC8BA5200BFE7 /* LSTTimer */, - C5357083C92AA1ED2F84EF8CC6743655 /* Masonry */, - 6EC8F20A5AD26D138CC780F895C38EFF /* MBProgressHUD */, - 2CEB54752AE867745CB29DF1C930135F /* MJExtension */, - 3781A0D3F34F1F7E995238764CEAD97B /* MJRefresh */, - 035E1FF1C6FC2C70E1C9A7412F5BC07F /* SDWebImage */, - ); - name = Pods; - sourceTree = ""; - }; - 63BB31835B8FFB4B51867F68F6F0E87F /* Serialization */ = { - isa = PBXGroup; - children = ( - B686FCB243BCB66C7BB1F42E6A4B3417 /* AFURLRequestSerialization.h */, - F68CF910ED994D45AAA3B5E5FABB6835 /* AFURLRequestSerialization.m */, - 201F7289F3B83B98F487EC194493B7F3 /* AFURLResponseSerialization.h */, - AFF39BEB58B97CA8F3DFDE7996909112 /* AFURLResponseSerialization.m */, - ); - name = Serialization; - sourceTree = ""; - }; - 64E7B9824C6F286E5F92AAABB42EFBCB /* LookinServer */ = { - isa = PBXGroup; - children = ( - 20214EA91148602FD46C19710C2B91EB /* Core */, - DDE3584A435E1B64AD756057D19173E3 /* Support Files */, - ); - name = LookinServer; - path = LookinServer; - sourceTree = ""; - }; - 65AD9332968D1533C04FC8BA5200BFE7 /* LSTTimer */ = { - isa = PBXGroup; - children = ( - 9CC6285CEC9BC9D5CBF28149790EF660 /* LSTTimer.h */, - 0F067A700BA9565969A60D7617155FBC /* LSTTimer.m */, - 7248D0DA123118E28F34C00E89F7FE76 /* Support Files */, - ); - name = LSTTimer; - path = LSTTimer; - sourceTree = ""; - }; - 6EC8F20A5AD26D138CC780F895C38EFF /* MBProgressHUD */ = { - isa = PBXGroup; - children = ( - CD29BD8633F552915B08BF15C7E0DFFF /* MBProgressHUD.h */, - 1B77702D1A0EF9DC4542AD40D9D3062E /* MBProgressHUD.m */, - 83190A88E8E738BE07B1966ADE3CB3CD /* Support Files */, - ); - name = MBProgressHUD; - path = MBProgressHUD; - sourceTree = ""; - }; - 7248D0DA123118E28F34C00E89F7FE76 /* Support Files */ = { - isa = PBXGroup; - children = ( - B896A10F9115068B682B35E4774898B6 /* LSTTimer.modulemap */, - F9F21BFD087BDB0FF37B51B916F0A3DC /* LSTTimer-dummy.m */, - 3AF690E545719F23D7E97E6C1F82121E /* LSTTimer-Info.plist */, - A4F699C3287866E6143CDE3B9C0C8BAA /* LSTTimer-prefix.pch */, - 93D6767143B7C5D00675B75D54B0AFEF /* LSTTimer-umbrella.h */, - 8769FA429275709C356B4C8A5DDEC26E /* LSTTimer.debug.xcconfig */, - CB1BEFB1C0257A74B80CAF80DB336894 /* LSTTimer.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/LSTTimer"; - sourceTree = ""; - }; - 755B3574C116B6B21DA3F9684A3E744A /* Support Files */ = { - isa = PBXGroup; - children = ( - 473462854899532931D29986CBD25F4A /* Masonry.modulemap */, - 56A89B114742BBA3282DA6CDF9871F36 /* Masonry-dummy.m */, - 92F9229FF7CD4EFBE6BB07684D5118E4 /* Masonry-Info.plist */, - 4968882808F027C34D91341E2DBD71E2 /* Masonry-prefix.pch */, - 672AB6E0839CC099E7CA7CF49761A5D7 /* Masonry-umbrella.h */, - 04A09AD12EF8C816FA9546838C3F429E /* Masonry.debug.xcconfig */, - 72FF1B2D48227EDD9EB762579BA5D936 /* Masonry.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Masonry"; - sourceTree = ""; - }; - 78901ACF392301939104361834A904A6 /* FLAnimatedImage */ = { - isa = PBXGroup; - children = ( - D1A874AEEF141E292D730F9161627B04 /* FLAnimatedImage.h */, - C1EC495C820AD2FE568E285440075D82 /* FLAnimatedImage.m */, - D37BD8FF05E69B29FC64F9CEB3CA7255 /* FLAnimatedImageView.h */, - 81B71B9BB50BFCB7CBC2B6455296C14B /* FLAnimatedImageView.m */, - 463425673C27CDDB3B6077DA1769E98C /* Support Files */, - ); - name = FLAnimatedImage; - path = FLAnimatedImage; - sourceTree = ""; - }; - 83190A88E8E738BE07B1966ADE3CB3CD /* Support Files */ = { - isa = PBXGroup; - children = ( - 03D72CC56F0CB2FCCB14E1335C16D41B /* MBProgressHUD.modulemap */, - D0B5D7F39DA4B830F1B68A7D9273B85E /* MBProgressHUD-dummy.m */, - FBDB01F2E84A23710184B78970DFEA2D /* MBProgressHUD-Info.plist */, - AE6F296D300159E8673214D526F10584 /* MBProgressHUD-prefix.pch */, - F2AA502A31D7ACB4F28AAE65C3561F31 /* MBProgressHUD-umbrella.h */, - B0B0D3A4B05EE4A8AA2F56AF68EA3ADF /* MBProgressHUD.debug.xcconfig */, - 2B7A32CBCCAE8AB83DA3CB95667709E3 /* MBProgressHUD.release.xcconfig */, + 20BCC481544CBBCE47AC61F792449041 /* MBProgressHUD.modulemap */, + 93081A25D8BCD8327365F5FAC77C46F3 /* MBProgressHUD-dummy.m */, + 0FABDACBA6BA6926D5F19E502E77474E /* MBProgressHUD-Info.plist */, + 2BF8D28C7089A47299DB62B980D954C8 /* MBProgressHUD-prefix.pch */, + D5100072476E008E3F5E024784855C6A /* MBProgressHUD-umbrella.h */, + 648C72C63334BCDFD466058863FCDAC9 /* MBProgressHUD.debug.xcconfig */, + 035807D7A9181D8E0DF6FAF1E2D6B33C /* MBProgressHUD.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/MBProgressHUD"; sourceTree = ""; }; - 8603C039C3D467BEBEE7AC050DDF9435 /* Frameworks */ = { + 4C55C9351E9FED232300EF60CC442288 /* Resources */ = { isa = PBXGroup; children = ( - 4489DCEC1C15912F15C69BF8BADBDA34 /* Bugly.framework */, + 43F4AA149B8B7307ED5DA363EBC93DBF /* MJRefresh.bundle */, + 187A3F425AA5E5A93F8784E11F9E28CF /* PrivacyInfo.xcprivacy */, ); - name = Frameworks; + name = Resources; sourceTree = ""; }; - 89D6BC06C1AD7B6FFF6982A03286C710 /* AFNetworking */ = { + 4EE34BF885F3E77A23F8FE0A5F1EF29E /* SDWebImage */ = { isa = PBXGroup; children = ( - 654D22CCA8871E0E0A65AB7C50503EB4 /* AFNetworking.h */, - 1F9EEB6CC879BACDBC385C6DBC24F7C9 /* NSURLSession */, - 0C71559E9A729C5B047179B43CABC936 /* Reachability */, - E2525B53F604A89BD6A5BEF73F8706C4 /* Security */, - 63BB31835B8FFB4B51867F68F6F0E87F /* Serialization */, - B1A7537FAC93AE6E20D10C11AA2DD270 /* Support Files */, - C70568B567541D2FA725A12B29BD1DF7 /* UIKit */, + 4121134849DA04BCD3BB12CF65EEF182 /* Core */, + 57091A5F19D7165DCEE12C9F477836F7 /* Support Files */, ); - name = AFNetworking; - path = AFNetworking; + name = SDWebImage; + path = SDWebImage; sourceTree = ""; }; - 92804E5AAC2424AC0EE6ED237A2C4B6F /* Products */ = { + 52BEEDAD6FE6860B049D64EEC5ED3599 /* Support Files */ = { isa = PBXGroup; children = ( - A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */, - 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */, - FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */, - 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */, - 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */, - 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */, - DE19C7D984CBC535E4768F5543458A1E /* LSTTimer */, - 1FFED36A657123030ABB700256D73F15 /* Masonry */, - 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */, - 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */, - 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */, - E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */, - 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */, - 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */, - DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */, - B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */, - CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */, - ); - name = Products; - sourceTree = ""; - }; - 9417EBD2D308B63C380DB7DDBB4539BC /* DZNEmptyDataSet */ = { - isa = PBXGroup; - children = ( - 5AD771C5136CD5549FAE44B9E4C2DFD2 /* UIScrollView+EmptyDataSet.h */, - 6AB2A681F27544128FA8BFDF04B2B4BB /* UIScrollView+EmptyDataSet.m */, - C849337A62646C28DD26BB58FA313018 /* Support Files */, - ); - name = DZNEmptyDataSet; - path = DZNEmptyDataSet; - sourceTree = ""; - }; - 96DE1775CF064EDD1FBB4071547380B9 /* Support Files */ = { - isa = PBXGroup; - children = ( - 58F1F1A0BBD025ADF47D37EB3545A1EA /* MJExtension.modulemap */, - F7A5B6B4FC335FF159BAE91EDDEC3320 /* MJExtension-dummy.m */, - 4B01E4A62621F02DCAF2B380FECD12A8 /* MJExtension-Info.plist */, - 75F935C6D49A90EF2E215985C8EBF76F /* MJExtension-prefix.pch */, - 2ACD4F15622D5B40EA4047FEA329658B /* MJExtension-umbrella.h */, - 9CE0E20C019F9D3D3297E4BD9E854459 /* MJExtension.debug.xcconfig */, - 107E86B9F22190515234220978E5F1C3 /* MJExtension.release.xcconfig */, - DDA24856F33C6E655A624699241CFD6D /* ResourceBundle-MJExtension-MJExtension-Info.plist */, + 731627030A2BE88955F55A35D6DCABC1 /* JXPagingView.modulemap */, + AFBCBD9F77FD5CF26B2BEBE02B1E19D9 /* JXPagingView-dummy.m */, + E259D7D54703B047363E50046A949F68 /* JXPagingView-Info.plist */, + 0E90E49C067121A7254AE81E49E663A2 /* JXPagingView-prefix.pch */, + 85E262E36BEDDEA0E7B4F4A870DA4314 /* JXPagingView-umbrella.h */, + 29485CC6A452A36B28B71FA9AC5A4CE4 /* JXPagingView.debug.xcconfig */, + 23FBEE27BD56B7C8EB3849A2221CDA65 /* JXPagingView.release.xcconfig */, + 8B0B848DED77C21AEA127E58094EE39E /* ResourceBundle-JXPagerView-JXPagingView-Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/MJExtension"; + path = "../Target Support Files/JXPagingView"; + sourceTree = ""; + }; + 57091A5F19D7165DCEE12C9F477836F7 /* Support Files */ = { + isa = PBXGroup; + children = ( + 5DEBBB0A3F6FE82FAB648C476116F8AF /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */, + 46461C91DF1586852C84C6489E5ED4BA /* SDWebImage.modulemap */, + 13B82D87F3DD4A8EB4C508E0BFA04090 /* SDWebImage-dummy.m */, + E87C7E8B87671964EE3B94CB801C492E /* SDWebImage-Info.plist */, + ED8D9D4C66EB7593131560466A9EEB08 /* SDWebImage-prefix.pch */, + 5409A465D5BE745D21B9F8847B798BD5 /* SDWebImage-umbrella.h */, + 2252400966339192E785E1533182460B /* SDWebImage.debug.xcconfig */, + E392F0E432282B33F9A7A49E5F6DFDE1 /* SDWebImage.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SDWebImage"; + sourceTree = ""; + }; + 5BDD879F155F843CED343AAC8812F0D6 /* Support Files */ = { + isa = PBXGroup; + children = ( + 76DCA3DD0D37AD6B5C7C65D7829AE3A8 /* LSTPopView.modulemap */, + 97E0EEAE3EFB0492B434EC2A704903DE /* LSTPopView-dummy.m */, + 2219CD4B41E42AA4B9864251F1CFEF59 /* LSTPopView-Info.plist */, + F2EB780D15F77D48AEC0D3A47833557E /* LSTPopView-prefix.pch */, + DBE3855004E17CACAC82F75DF8EFEBD4 /* LSTPopView-umbrella.h */, + D0317376A8F5B09CBBAC757A9410CF00 /* LSTPopView.debug.xcconfig */, + B79CB4484CF793AF65C86B424D955922 /* LSTPopView.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/LSTPopView"; + sourceTree = ""; + }; + 6095F5BA99A7BC3EDE17ABB647B490AD /* Support Files */ = { + isa = PBXGroup; + children = ( + 3415299E0D5D7B9C22E99D16B6F89983 /* MJRefresh.modulemap */, + D58A6363674921528AA6EC052D65C890 /* MJRefresh-dummy.m */, + A237C0F799BD0639307F9DF3E58B71CE /* MJRefresh-Info.plist */, + 7707C9BBD69232F1162D6ACABE70B7ED /* MJRefresh-prefix.pch */, + 7626DD9951DC84318DF6E875CD7A8C20 /* MJRefresh-umbrella.h */, + 0B18274068E3388B3808CDDEB810ECFA /* MJRefresh.debug.xcconfig */, + 580E2C96AABF74B3FD0C199D09864253 /* MJRefresh.release.xcconfig */, + D4ECB35518D14625B419D0EC58050171 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/MJRefresh"; + sourceTree = ""; + }; + 6DF1AE20DC3ECAE9AA7B19DCCDE41F5C /* Core */ = { + isa = PBXGroup; + children = ( + 732327FB0ADC252437B580203795D95F /* CALayer+Lookin.h */, + 673B42B9F094B1F5ED808EE1BA26FC30 /* CALayer+Lookin.m */, + 26925632A670841DDFC5067C12B16515 /* CALayer+LookinServer.h */, + E1921A1332A20D950700741950E97126 /* CALayer+LookinServer.m */, + EEB6F4442CB80A88D94B35721714C121 /* Color+Lookin.h */, + F2A8643D9113999359ADC6C79DA48111 /* Color+Lookin.m */, + 17FBA36FB2D4DFAA4437CEE5C69F4BBE /* Image+Lookin.h */, + FB1E7E734FDF6F7CAC668B6BD6A2A014 /* Image+Lookin.m */, + BE10A2A4B13E0F15A962DBEA161DE595 /* LKS_AttrGroupsMaker.h */, + 1C4B5B00D7224F098F6B2FE0962E5086 /* LKS_AttrGroupsMaker.m */, + 9F0B0B2E800350D0E38B61EF43E6CE75 /* LKS_AttrModificationPatchHandler.h */, + 908A8A591A12931E59C177277E1D126D /* LKS_AttrModificationPatchHandler.m */, + 60913F6F25D56976457BFFCFF2C2FADC /* LKS_ConnectionManager.h */, + F1C50876E480E256FAA99FC38F2BC478 /* LKS_ConnectionManager.m */, + 3B2ACD52F18B25CE1FB40A0F1DF81B4A /* LKS_CustomAttrGroupsMaker.h */, + 7CF7F647B9D3AA2FB234C1CC5BB53582 /* LKS_CustomAttrGroupsMaker.m */, + 137E45FE90DEED579DF255BB11ADABF4 /* LKS_CustomAttrModificationHandler.h */, + 29CA4DC7FB25B91EAA2B3847B7BB46A9 /* LKS_CustomAttrModificationHandler.m */, + 38E107BE978505B98A952E3564F532AA /* LKS_CustomAttrSetterManager.h */, + 567674319F769F7E8B80920BBBD444B6 /* LKS_CustomAttrSetterManager.m */, + 230F8C4FD68EA2D95EA48F31DA295CE9 /* LKS_CustomDisplayItemsMaker.h */, + E74AC99A06CC9DE9D81D54044B013F98 /* LKS_CustomDisplayItemsMaker.m */, + E5AA796F8B4298B625A467D39523F40F /* LKS_EventHandlerMaker.h */, + 1C21A04AB85F6948BCB44480387E46C5 /* LKS_EventHandlerMaker.m */, + EB3C413B4ED21D886E50FCBC0761408E /* LKS_ExportManager.h */, + 44ABB514E2C8BB7AA8881283E1F0FE47 /* LKS_ExportManager.m */, + 029DB3501B51C5C14FA8EC0A89559639 /* LKS_GestureTargetActionsSearcher.h */, + BC88BA608872DDF711D78498FD36C1AA /* LKS_GestureTargetActionsSearcher.m */, + FA6406A6E74DC06D367BE38EA6C60243 /* LKS_Helper.h */, + 38A98EA0745C9E839DCFD56B22BF1256 /* LKS_Helper.m */, + 21696AB985A15DE2C63BD9A8CD978F59 /* LKS_HierarchyDetailsHandler.h */, + 6736D1FBB305C05AEAB982F817CD80C1 /* LKS_HierarchyDetailsHandler.m */, + A9B0E721EBB3914236D06250E333F1E9 /* LKS_HierarchyDisplayItemsMaker.h */, + 3D3112C49688EF3F713F0D64A22E6E66 /* LKS_HierarchyDisplayItemsMaker.m */, + 6C2FE2279B0EA1E9F949E0AF58D09E3B /* LKS_InbuiltAttrModificationHandler.h */, + DC0451732A9C9A896EEC15BEC88B3151 /* LKS_InbuiltAttrModificationHandler.m */, + 06BE908D1EBE4269ACB69B26DE9B834E /* LKS_MultiplatformAdapter.h */, + 1FBD8AFE7FA55EAB140791EC34C18CD4 /* LKS_MultiplatformAdapter.m */, + 4A2FC8CB1CFEB2812A4E5E466940232C /* LKS_ObjectRegistry.h */, + 8127266FF8D9AAE89CDF3511D05BB245 /* LKS_ObjectRegistry.m */, + B9D007BE64FBA88DB3F5D92E0EAEDEAD /* LKS_RequestHandler.h */, + 15E765BB9B77EA9AC2800F30D2802C1C /* LKS_RequestHandler.m */, + 1278AB0B776862F23D89B7E8596E3598 /* LKS_TraceManager.h */, + 36457C61634F1414F6DDF4C701ABF567 /* LKS_TraceManager.m */, + D16058E57E3F07CA628E8A17A3B944C1 /* LKSConfigManager.h */, + 17DDB1AC9EC1929E6B6DFC0CFA9D927D /* LKSConfigManager.m */, + 35269DC2485E9AA07A892FDEB96B16C7 /* Lookin_PTChannel.h */, + 69AE4F19374B51CFBF6330CC5F82B32A /* Lookin_PTChannel.m */, + 6DD8CB4B9EF9002F59BC7DE12F17ED7E /* Lookin_PTPrivate.h */, + FB5DC78AEFAB6098819933CF81AAB15B /* Lookin_PTProtocol.h */, + 9545413A1EE5D2E50A21E8D9794A771A /* Lookin_PTProtocol.m */, + 3416384E4A531494C7B12CDD1AEA74A1 /* Lookin_PTUSBHub.h */, + BC38AB7DAEDA3DEEFFAC64BDA7FA3C88 /* Lookin_PTUSBHub.m */, + 908BDA99457974AD8998A674A0C0FB12 /* LookinAppInfo.h */, + CB40236F7A3DB0EECDBA370753BEDDD4 /* LookinAppInfo.m */, + 659E6E588427268237F9F2C40D2F6CBD /* LookinAttribute.h */, + DDDA744A029AF23E45515CE37C056256 /* LookinAttribute.m */, + C9F0D4D92726FF95FE428AA975E93DE2 /* LookinAttributeModification.h */, + 0B35D70EDD8A3E56FE6F0E6934A400CC /* LookinAttributeModification.m */, + 57D32F597DFAC06B9198FA1F48D2995D /* LookinAttributesGroup.h */, + 7E02457FB07FECD161E03C2A1A8B72B3 /* LookinAttributesGroup.m */, + B74F835090D47DFE066B4DAD231882AC /* LookinAttributesSection.h */, + 97428E2E54CAC989DD7A12908613EE16 /* LookinAttributesSection.m */, + 6B857386E2ABDB8C3FD8B5797430DF26 /* LookinAttrIdentifiers.h */, + 41EF7420DD5FC6E4D1134632895868F3 /* LookinAttrIdentifiers.m */, + D7DFD14540146731FB9E466FA1EB81F0 /* LookinAttrType.h */, + 1FFD17C3FF6DE53EF72736C597DF5B82 /* LookinAutoLayoutConstraint.h */, + 5DA1EEEB5386D6FCA6523BE43601C382 /* LookinAutoLayoutConstraint.m */, + F2698AC3972900E338490644A2E03A2A /* LookinCodingValueType.h */, + F3AD144DF03231D478D237DCFC615D36 /* LookinConnectionAttachment.h */, + 595E9691CC1A487C44431E51893A1D01 /* LookinConnectionAttachment.m */, + 989150BD3DA7E7AE5D05E2F37E778A8D /* LookinConnectionResponseAttachment.h */, + 4ED1A3436209E7EBF3356CEC094C7391 /* LookinConnectionResponseAttachment.m */, + 06A633B376D525417B93138405029540 /* LookinCustomAttrModification.h */, + F6CC661C43717D8BBB4405FD037BDC03 /* LookinCustomAttrModification.m */, + CF0E98CA3E42AAC3B854E232BB1AF7FB /* LookinCustomDisplayItemInfo.h */, + 8F0F258366D8ED06A7D9EAD3DFCD004E /* LookinCustomDisplayItemInfo.m */, + 9D31ED01216EF87422BD04709990AFA0 /* LookinDashboardBlueprint.h */, + 2783C33881FB9ED3037D4D66B93FAD7E /* LookinDashboardBlueprint.m */, + AFC299E1B60C8759EA1F35B7A91019A4 /* LookinDefines.h */, + FED61E621A88CB9CE3C421FDEB1106FC /* LookinDisplayItem.h */, + BCE8E065BE01E56E0D55097E36AB8FC2 /* LookinDisplayItem.m */, + 1E7F18004D9337D64F0F606975492DF4 /* LookinDisplayItemDetail.h */, + F90D97C684BADB3FE9796E626B98C43A /* LookinDisplayItemDetail.m */, + E97B2ACE11733D7DD5ECA116979B91D5 /* LookinEventHandler.h */, + 7CAEC579F15CFFDB2E384C98A046EA76 /* LookinEventHandler.m */, + 63000DF25140BBB4F03EDFC289F2B197 /* LookinHierarchyFile.h */, + 16E6E00D729B1498CE18200F50778930 /* LookinHierarchyFile.m */, + A8105D73597438386DADF22233AAD4B3 /* LookinHierarchyInfo.h */, + 0D8B581D78D02F65425434F924BB64B3 /* LookinHierarchyInfo.m */, + 765DBAD68AB5F355FB80870758AFB22C /* LookinIvarTrace.h */, + 89DA873F803BF9043720F615E8BC4CD5 /* LookinIvarTrace.m */, + 0B1D41519ED222707112BD66393CC6B2 /* LookinObject.h */, + 05B3B08A0927761DC2CBA02E9412CD21 /* LookinObject.m */, + 2E80EA469F2079302F38A991886C4B5A /* LookinServer.h */, + D03FDB7D5A636ED3DC51EF05677C546A /* LookinServerDefines.h */, + A7A769F7014A1F30EE6690E054898162 /* LookinStaticAsyncUpdateTask.h */, + EC9D66F9AD565D0A6E6595CFC812165E /* LookinStaticAsyncUpdateTask.m */, + 95EB1D88070F8207A333D4573DA43A15 /* LookinTuple.h */, + 7A60F6547480237BC04A6287158556B4 /* LookinTuple.m */, + 886E6269011F3D0F924F30F32F08508F /* LookinWeakContainer.h */, + 16464E573FCB8AFF2E7DB58E7A507D73 /* LookinWeakContainer.m */, + B937D529B74DB9581A000F395FF3B6F7 /* NSArray+Lookin.h */, + D4BC45247918896A52CA0C54F038B447 /* NSArray+Lookin.m */, + 9FD83B41506E28893BC297C4BDAB1B46 /* NSObject+Lookin.h */, + D52171C8DB630868289299203B4ECD0C /* NSObject+Lookin.m */, + 3B26E1BE3EBF37131688F5656289ACA2 /* NSObject+LookinServer.h */, + C5719A8B6A945982F0856B5A616B379E /* NSObject+LookinServer.m */, + D40E6AE30D19137ABA0A5D046329BCCD /* NSSet+Lookin.h */, + C02B6DB0CED9923894E4B972F8B03882 /* NSSet+Lookin.m */, + 06AB57BB46CC82FE3257276649BAF8EA /* NSString+Lookin.h */, + D9EC522C5B6A10C53A05FE81CED85983 /* NSString+Lookin.m */, + 6FDFBF5B5FE03EAE7CBA31ED300F848E /* Peertalk.h */, + 4BC6F317480167EA6C97C3ED771D57CA /* UIBlurEffect+LookinServer.h */, + 98EB3787337AAE5AD71D422A832D852F /* UIBlurEffect+LookinServer.m */, + 6A34A08E72CC7EE2DEDDC6F48148CD79 /* UIColor+LookinServer.h */, + C626E0F07BD081EBE5955DEA5669BF14 /* UIColor+LookinServer.m */, + DB3CBBCBF7B8B49A86FAC8D0A1741C77 /* UIImage+LookinServer.h */, + E075739451FCFAA914670EB353642C16 /* UIImage+LookinServer.m */, + F45F2EB9AE5E2D5BDC0F9860DB695385 /* UIImageView+LookinServer.h */, + 5C560A21071D707C98AE6CD75AED8BFD /* UIImageView+LookinServer.m */, + 015571B1499F434BC7171DE7EA094577 /* UILabel+LookinServer.h */, + 9E285AA5C9AFC477B5336B5AC2C863D1 /* UILabel+LookinServer.m */, + 40380EFCFB5E34558C193A723D077BE3 /* UITableView+LookinServer.h */, + 95E2C10E638AC6421FE377F88DA72A45 /* UITableView+LookinServer.m */, + 94807C278EC259800EBCD3A346749877 /* UITextField+LookinServer.h */, + 877837A5816B3B110C5B763CCBD0ECFD /* UITextField+LookinServer.m */, + A56B5A6CAF35241FF9D41CAC7DC1D6D2 /* UITextView+LookinServer.h */, + 3791DA4B477B236E8816C08DD01E3B45 /* UITextView+LookinServer.m */, + DC82DAFD220FAA7899CE21078C2C649D /* UIView+LookinServer.h */, + E9CB22320707CAEB4EE4C1DF62EB9E1A /* UIView+LookinServer.m */, + 3753072CB1EE987F4CDC7E86385B9A99 /* UIViewController+LookinServer.h */, + 920CD059C1364A6BD18420074E635F40 /* UIViewController+LookinServer.m */, + D013F3B6606D04CFD12051F02350DB55 /* UIVisualEffectView+LookinServer.h */, + 8CE6BF39C6199FC5B55217046DDE2CDB /* UIVisualEffectView+LookinServer.m */, + ); + name = Core; + sourceTree = ""; + }; + 797CA9CCA9EBB2192EC635FA118D2257 /* Pods */ = { + isa = PBXGroup; + children = ( + F401BC1732EB9D32AE09D69A4179A68F /* AFNetworking */, + 0F19D22A7E286B575974CA8C2AD3F3DF /* Bugly */, + FE875CB7596498A67CF56F73315D2BDD /* DZNEmptyDataSet */, + D44B6A743503D502C7C50E1E40396614 /* FLAnimatedImage */, + 7C33CFE60683D6E5574D89F3B2808B60 /* HWPanModal */, + 2E6A5961188FF65067773B356D98FC06 /* JXCategoryView */, + A2B6865A0533CF3250BDF1CA362E6B54 /* JXPagingView */, + E186B0D6F7241CA024EE1DBD99B15A49 /* LookinServer */, + E603CC254B20E39E7561F9D06E23A39C /* LSTPopView */, + FB21115538DDA6029001E62F3AB59544 /* LSTTimer */, + 8FE7351622DF7632BCAC51C89CCF56EE /* Masonry */, + F3242F712BF128531D3F535A6FD297FA /* MBProgressHUD */, + 412E12540DFA0D72BBEB364F09064325 /* MJExtension */, + 36091ADDE4C749A4350E3A117CAA7398 /* MJRefresh */, + 4EE34BF885F3E77A23F8FE0A5F1EF29E /* SDWebImage */, + ); + name = Pods; + sourceTree = ""; + }; + 7C33CFE60683D6E5574D89F3B2808B60 /* HWPanModal */ = { + isa = PBXGroup; + children = ( + ACC63F439241C64C221C18A8991C569B /* HWBackgroundConfig.h */, + ED71DE4537C6ECADC81696A80C943E64 /* HWBackgroundConfig.m */, + 017032FDD415E1762246EBCDD2228351 /* HWDimmedView.h */, + 6194A35582043CD8893F293567547D72 /* HWDimmedView.m */, + DD3CC2F2CD0FD607BD99AA89E970269A /* HWPageSheetPresentingAnimation.h */, + C947209A5CDFABA11FEBE5D709864961 /* HWPageSheetPresentingAnimation.m */, + DAB0E506E749384DE93170FA1EE1FD3B /* HWPanContainerView.h */, + 2310AA8AAF9A85F5E639409B8AF0F292 /* HWPanContainerView.m */, + 4DE32E1B12FEE2A9EAE1F5A67697D6E8 /* HWPanIndicatorView.h */, + 6EF0D4A56B002AB1528A77EBDA7EC804 /* HWPanIndicatorView.m */, + 6260795D5ABBA18F8EFECC2CEB871872 /* HWPanModal.h */, + 42F934D080B2CC7F2CD859E2B472A585 /* HWPanModalAnimator.h */, + 88D7B291E3BCDB41106F548FA3B84901 /* HWPanModalAnimator.m */, + A87C5BAF6B8038E9EE8A33551A798606 /* HWPanModalContainerView.h */, + 2BB86632EEB3EB44D0413B3A6F7F6875 /* HWPanModalContainerView.m */, + 2CAA34C64434033ACBB7F68A74F4D15B /* HWPanModalContentView.h */, + 77BA4318333FADE07B128DB446EA0F64 /* HWPanModalContentView.m */, + 5731585BDD8DA229201CF537357BCA56 /* HWPanModalHeight.h */, + C8BABB078FC5FF697A3609C777FC51FC /* HWPanModalIndicatorProtocol.h */, + 3DAB18271BAF2DB3E49BCAF049FC4F01 /* HWPanModalInteractiveAnimator.h */, + 0BE68C7303DE07C8DA01573CDDE9003F /* HWPanModalInteractiveAnimator.m */, + 95BD516A8F354C5C9CD65BFD30C9BED7 /* HWPanModalPanGestureDelegate.h */, + 83D5AD11F2E32B53BA1869D6DE812341 /* HWPanModalPresentable.h */, + DAFBC54BDE2AC21397492351C31C587A /* HWPanModalPresentableHandler.h */, + B8E404753BE7BE627A458AE982427654 /* HWPanModalPresentableHandler.m */, + 552D2F14AF7B393E80A67680A66A34D4 /* HWPanModalPresentationAnimator.h */, + 15D78A0355CAA0B846DBC1DAC7B101F4 /* HWPanModalPresentationAnimator.m */, + 195F1795B17C3F026E46BBEF64C1EA67 /* HWPanModalPresentationController.h */, + 94D99E2E2730992302FB9BAA7CCE2A1C /* HWPanModalPresentationController.m */, + 82C5C527FD40FDC2434064E6DE931921 /* HWPanModalPresentationDelegate.h */, + 6749EA453DC312E08B14CE8AFDB79F3C /* HWPanModalPresentationDelegate.m */, + 4B98EB1E5D5490C1C17C90E124262C80 /* HWPanModalPresentationUpdateProtocol.h */, + E8DC9FFB899510CE978017ADFAFE6D87 /* HWPanModalPresenterProtocol.h */, + 039AC3B9A6AA2BDAB5EB71E7A54C1EF5 /* HWPanModalShadow.h */, + 5FD7A1D3C3D9D8E6D3476B7C2093A431 /* HWPanModalShadow.m */, + 5AEB6DDDE2B74ABEB1D68CE037D784DC /* HWPresentingVCAnimatedTransitioning.h */, + B9C3A1374DADDEAE813F69F05F5A2564 /* HWShoppingCartPresentingAnimation.h */, + 62C28B0ACA1E8D749FA6E65D70CFCB2D /* HWShoppingCartPresentingAnimation.m */, + BC5B799F7FC71DC9649AD62AE8B34DC7 /* HWVisualEffectView.h */, + DACDF6DBB7030D05CC43C7DB516265EE /* HWVisualEffectView.m */, + 2E70DDAD553B6A4AC2379D01C3F133EF /* KeyValueObserver.h */, + E1F236D1BF028AEAD75A9FB3C9DCAE0F /* KeyValueObserver.m */, + 22613DFB1026F3E41B141E34C637D600 /* UIScrollView+Helper.h */, + CCA4AAE27B9CAF06CC2B0A3C0A3F0594 /* UIScrollView+Helper.m */, + B63B552A0A52E65141ED8027A3FCCB0D /* UIView+HW_Frame.h */, + B444EEABD213A46C07AC5F1B8D73FBF1 /* UIView+HW_Frame.m */, + 23A344AF55814873B0105902E9FBBB2A /* UIViewController+LayoutHelper.h */, + 76724C714C93839E6993DF68B545F17B /* UIViewController+LayoutHelper.m */, + 9BAC219B4754C1E13B6929143780BE52 /* UIViewController+PanModalDefault.h */, + 3474F65ACB0FE00EF732580936B91D06 /* UIViewController+PanModalDefault.m */, + B46DF40E1300BE3FC009F0D7D5CF5ED0 /* UIViewController+PanModalPresenter.h */, + B05FD8A103E2A06EE08BE59B38FC36B4 /* UIViewController+PanModalPresenter.m */, + 201E2681B892F05C3D7CAFE9E9927D15 /* UIViewController+Presentation.h */, + C806BECAA1C722F04FE4A89D9B14A0E0 /* UIViewController+Presentation.m */, + 2DD7CD81F0AED96859289DDC12B0E9CF /* Support Files */, + ); + name = HWPanModal; + path = HWPanModal; + sourceTree = ""; + }; + 89DEB64DC275ABFAFABFE909ED131FA2 /* Reachability */ = { + isa = PBXGroup; + children = ( + 60461DAD42E3B1F75AD82553A6C40C64 /* AFNetworkReachabilityManager.h */, + 81D1103F43F39D4BF9AE80E76478FA69 /* AFNetworkReachabilityManager.m */, + ); + name = Reachability; + sourceTree = ""; + }; + 8F7F6DF25B41B68A636D15AEFC153E23 /* Serialization */ = { + isa = PBXGroup; + children = ( + DC285A6C8053D7E2AE423BE51B24E8AE /* AFURLRequestSerialization.h */, + 32F3C5B0B7D11631504E27D25E8CB5A2 /* AFURLRequestSerialization.m */, + BBB6E7BC9BF649910D7654B98B396BD4 /* AFURLResponseSerialization.h */, + 9F3CA71777F849F0196634A7AB215BDC /* AFURLResponseSerialization.m */, + ); + name = Serialization; + sourceTree = ""; + }; + 8FE7351622DF7632BCAC51C89CCF56EE /* Masonry */ = { + isa = PBXGroup; + children = ( + F451B2E12A8192978BB7FB1B45BF1E04 /* MASCompositeConstraint.h */, + FD6EC1E4FB3615CE938900B23CEAD0F8 /* MASCompositeConstraint.m */, + ED6F94603AF0AF72D292CADE8ABCEEB3 /* MASConstraint.h */, + 3A94C1FE25186BE811E6EC878BFA019B /* MASConstraint.m */, + 7C2B7AF68C3BEF4AD97A93A90F9EFF44 /* MASConstraint+Private.h */, + 979A3BAC302F65855776332D6027B80C /* MASConstraintMaker.h */, + CDE98EE96840F02E6074E842D456A2E3 /* MASConstraintMaker.m */, + 1D56371580E6496005BC9D35C2C49570 /* MASLayoutConstraint.h */, + EB21E143FD58D712C16E9026FBFFE194 /* MASLayoutConstraint.m */, + 56642F6C221107F2F8D033758EEB482A /* Masonry.h */, + 9E54C32C4CB68C01C57E81C03350F4B2 /* MASUtilities.h */, + 9E18E15D3A7901E5A84136DADC023216 /* MASViewAttribute.h */, + AAF02F3D4DFB903955A463298716DCE2 /* MASViewAttribute.m */, + DEDFC34DB720F4FD92E634E486425845 /* MASViewConstraint.h */, + CF9BCBE90C3B7C448764C897685CB0E3 /* MASViewConstraint.m */, + 6C07CC30774DAAE34D68C477CE151A36 /* NSArray+MASAdditions.h */, + D3CF8B366EB9A41FEDB94035F404215D /* NSArray+MASAdditions.m */, + 3A8DC30D2C209AB66D8E812915E6F319 /* NSArray+MASShorthandAdditions.h */, + A75069F0A291D74DCBF8F50AA213D806 /* NSLayoutConstraint+MASDebugAdditions.h */, + 25A7097BBC72B099A6C5D8BE403878A8 /* NSLayoutConstraint+MASDebugAdditions.m */, + E44ED3A05255119AA352B7DE0C64E994 /* View+MASAdditions.h */, + 903038F34EE93C82A3EF6A1F6BDF857B /* View+MASAdditions.m */, + 4D93DBFF5810549335063D430FB33721 /* View+MASShorthandAdditions.h */, + D48043130F64D218A676B16D2CDA0ED8 /* ViewController+MASAdditions.h */, + 1BABE1F324CED82D14350741682D422B /* ViewController+MASAdditions.m */, + 99E8B32C59458ECDE2883334F4E8B17F /* Support Files */, + ); + name = Masonry; + path = Masonry; + sourceTree = ""; + }; + 95AF65BE191D8A598CB99DF63AF5085C /* Resources */ = { + isa = PBXGroup; + children = ( + 360A9029323DBF687A82BCD2C22F386C /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; + 99E8B32C59458ECDE2883334F4E8B17F /* Support Files */ = { + isa = PBXGroup; + children = ( + D5140E810D9AB3FD3FA724CCDD59D3AD /* Masonry.modulemap */, + 99302CD0854353E1FA9C8EE70F3FCF59 /* Masonry-dummy.m */, + D9922CA9D57AA94D9EE06129264F7958 /* Masonry-Info.plist */, + 819B57A54180667AB9476455F95835CA /* Masonry-prefix.pch */, + A8CBDE62F720E1751DB8B8E4DF3B0E9F /* Masonry-umbrella.h */, + 93A6F66AA21D4921B2C52643DAEF998F /* Masonry.debug.xcconfig */, + 0B0EEEE5F23AC446F4729522F4FC7A73 /* Masonry.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/Masonry"; + sourceTree = ""; + }; + 9CF605192227F87CF3E8D7EE63BDF0B1 /* Support Files */ = { + isa = PBXGroup; + children = ( + 0210A2376F4634FAF99E871533D6AD1C /* LSTTimer.modulemap */, + C181D8B9B1142624BE8BFFA787AA2854 /* LSTTimer-dummy.m */, + 81C5F42CC1579DEC553C5D34C274FD68 /* LSTTimer-Info.plist */, + C5FD92D35D7D1F18C67D17C9DD534533 /* LSTTimer-prefix.pch */, + 3F5F8D57BABE5A9AD2D0BC75B55D1A52 /* LSTTimer-umbrella.h */, + A76F5B96F548930505FADC6CE9430C2D /* LSTTimer.debug.xcconfig */, + 294754F45B0BF3519369080425B4F2FD /* LSTTimer.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/LSTTimer"; + sourceTree = ""; + }; + A1A0EBDEE093FF055ADC1FB66AD4A1B8 /* UIKit */ = { + isa = PBXGroup; + children = ( + F7FE08919F8BE5AACFB3A1E812E57C03 /* AFAutoPurgingImageCache.h */, + 4A984C0F36AC5CCB478D87C1F7E4019D /* AFAutoPurgingImageCache.m */, + FA94CFBBBF3DC429BAF55FD9493336B4 /* AFImageDownloader.h */, + 25A773C46121E6091EEB9AC88DC4E2A2 /* AFImageDownloader.m */, + 7965DB1FD06E64A9C5B34CB6D9909B3A /* AFNetworkActivityIndicatorManager.h */, + A5FC57ACB22E21DCA20F2B582D18A03F /* AFNetworkActivityIndicatorManager.m */, + 81D4FD0C7D7C987D10815371E729DAC0 /* UIActivityIndicatorView+AFNetworking.h */, + FE8EB43019635F8DC34B96037E258505 /* UIActivityIndicatorView+AFNetworking.m */, + A2309A5B4A1B9C14AF7AEDEC1036F76E /* UIButton+AFNetworking.h */, + 5C519E29CD93815AEE0C119E2109F0A2 /* UIButton+AFNetworking.m */, + 8E1682EACA92F366216BAB7320C375AA /* UIImageView+AFNetworking.h */, + 156CBD2266287775279363430A374818 /* UIImageView+AFNetworking.m */, + 4AD6EDFD2A6C9CC51CFC6A4BAA9C72A9 /* UIKit+AFNetworking.h */, + 7446E6EDA4118B08C0D538CAA41C47AA /* UIProgressView+AFNetworking.h */, + E152B4E044E172623798E791ACCC157E /* UIProgressView+AFNetworking.m */, + 4D000260D6BB658E0BB519087E88F883 /* UIRefreshControl+AFNetworking.h */, + BEC06B30EADD5F0931B350F94CD4D15C /* UIRefreshControl+AFNetworking.m */, + 21E66554273E5793F0BC4D1CD5A058CD /* WKWebView+AFNetworking.h */, + D675E9EED90BA5941D43EB2C520A01B8 /* WKWebView+AFNetworking.m */, + ); + name = UIKit; + sourceTree = ""; + }; + A2B6865A0533CF3250BDF1CA362E6B54 /* JXPagingView */ = { + isa = PBXGroup; + children = ( + CA7AF39BD3D9214EBF1CEE7DE0683EE0 /* Pager */, + 52BEEDAD6FE6860B049D64EEC5ED3599 /* Support Files */, + ); + name = JXPagingView; + path = JXPagingView; sourceTree = ""; }; A55E2B2247987FBEC60B3A5F75016BFF /* iOS */ = { @@ -2125,60 +2728,19 @@ name = iOS; sourceTree = ""; }; - AABD58CAE3AC5D0D8560E01BA94341F0 /* Support Files */ = { + B5D3B16165F3FDCE26DFE706A413FE76 /* Support Files */ = { isa = PBXGroup; children = ( - 04FCA007C5BE63FC5541B26878E3DE79 /* HWPanModal.modulemap */, - 13066DF230EEB3642E5BD7E5097A64F9 /* HWPanModal-dummy.m */, - 2334F40DFDB1BAD377A3B71EE761F938 /* HWPanModal-Info.plist */, - A1A1675F7ED6C653EC09CB7ED0E5281E /* HWPanModal-prefix.pch */, - 5B1C14811A97739A8455D69D9EF8F1AA /* HWPanModal-umbrella.h */, - F2C18394D397CD373A1F089F0924F724 /* HWPanModal.debug.xcconfig */, - 779E8085B0101C4CB480F794DECA558B /* HWPanModal.release.xcconfig */, + F4D2D27159CC3A8AAABD93291FBA2B48 /* LookinServer.modulemap */, + 5F4DF3FAFAFDE0BEC7606CB8D4C2C98B /* LookinServer-dummy.m */, + 9FEF42DD4D5BC001DB0C88A7EB3DB63B /* LookinServer-Info.plist */, + 5DB99CA546DA98A4F2641B6CD4635589 /* LookinServer-prefix.pch */, + A98C5DE93CCDA0FE6E6A916B05B69DCC /* LookinServer-umbrella.h */, + E654A0C1F961A76933C784134A3D98E4 /* LookinServer.debug.xcconfig */, + B8E77F018E5BE1F8C021ACB0978497F6 /* LookinServer.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/HWPanModal"; - sourceTree = ""; - }; - AF98548CB9C337C748F2E8BB9B2CA20B /* Bugly */ = { - isa = PBXGroup; - children = ( - 8603C039C3D467BEBEE7AC050DDF9435 /* Frameworks */, - 16966B46BC1DE37AE221B0FB44232D79 /* Support Files */, - ); - name = Bugly; - path = Bugly; - sourceTree = ""; - }; - B1A7537FAC93AE6E20D10C11AA2DD270 /* Support Files */ = { - isa = PBXGroup; - children = ( - 9B6321B292B6BCA48E9BD6268BB60C34 /* AFNetworking.modulemap */, - 1CF307ACF82B2962F9E48DD0D029690F /* AFNetworking-dummy.m */, - C6B393724F3296B6116FF029FBA74D60 /* AFNetworking-Info.plist */, - 0CCA79288E187B2D3860B6A703D2D460 /* AFNetworking-prefix.pch */, - 2CA3017C0C359C5E90091B685A3A59EE /* AFNetworking-umbrella.h */, - 9118BCB61472BB3349D3BC26BBAA9EE0 /* AFNetworking.debug.xcconfig */, - 42D65971D9F40DBD6785D6A1D0AEBFBD /* AFNetworking.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/AFNetworking"; - sourceTree = ""; - }; - B739A483873A111E644B8250F33F752D /* Support Files */ = { - isa = PBXGroup; - children = ( - 45AD4A83CCB38F4F8C699AACEC09A405 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */, - 2520B86D707FEED91E8300C772989308 /* SDWebImage.modulemap */, - 244BBBE37C5D845F2BB8EAFBE6D12DE5 /* SDWebImage-dummy.m */, - A6B7C52A59144554A5C4CCBAF9A65AC8 /* SDWebImage-Info.plist */, - C77A046F5E5912D1BF11BAA897F3C198 /* SDWebImage-prefix.pch */, - 6407DC7FD67C9C74E0C3BA6B778AE0CD /* SDWebImage-umbrella.h */, - 0EE4E19A07BCCCF8BDCE77F2A5966D55 /* SDWebImage.debug.xcconfig */, - 218908923AE7877657207C72921D322E /* SDWebImage.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/SDWebImage"; + path = "../Target Support Files/LookinServer"; sourceTree = ""; }; B94D7768568A9992200DB461E8CF687F /* Frameworks */ = { @@ -2189,95 +2751,38 @@ name = Frameworks; sourceTree = ""; }; - BE86B84F4BC9982281F5D2A106314CE2 /* Support Files */ = { + C79383FD5154699A5CFAA9706E39AF6C /* Support Files */ = { isa = PBXGroup; children = ( - BAF401BA2295E570793228F6E0B37E3F /* MJRefresh.modulemap */, - 882CA8EEAEB3525FB7AD66F6FFC2CF6A /* MJRefresh-dummy.m */, - B21F4D087C3795EA326FE588C03028CC /* MJRefresh-Info.plist */, - A923EA60F7DA10F8B88FCD5E16702406 /* MJRefresh-prefix.pch */, - 63277FA9AFB139990459DF6C57B238F5 /* MJRefresh-umbrella.h */, - 46BD456754A833616748AAFE8A1AF2F2 /* MJRefresh.debug.xcconfig */, - 5157E3FB4160ED0759A1F38EFDEC5877 /* MJRefresh.release.xcconfig */, - DF4516C3B5E735B563E9749DFA6BCB51 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */, + 231F7AC591603501EC449D697A5C6668 /* JXCategoryView.modulemap */, + CBA389E7DB380F4012EFBD733C81D43A /* JXCategoryView-dummy.m */, + 4AA7B1CA514C2D6FAA50ACF865AF4203 /* JXCategoryView-Info.plist */, + C371FCAC7DF4BD1C57C3D164BD5A8759 /* JXCategoryView-prefix.pch */, + 84C7B13561A207799480933E11856D99 /* JXCategoryView-umbrella.h */, + D7708C3743D0A5955D7A50F4A72818A5 /* JXCategoryView.debug.xcconfig */, + 7A9939FAA68717870D107439064CEFF4 /* JXCategoryView.release.xcconfig */, + 3E8FEF4AED255508CB8E745D200EDE89 /* ResourceBundle-JXCategoryView-JXCategoryView-Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/MJRefresh"; + path = "../Target Support Files/JXCategoryView"; sourceTree = ""; }; - C5357083C92AA1ED2F84EF8CC6743655 /* Masonry */ = { + CA7AF39BD3D9214EBF1CEE7DE0683EE0 /* Pager */ = { isa = PBXGroup; children = ( - 00F09038ADB7D3ACE57173DD781066A5 /* MASCompositeConstraint.h */, - F738F2BE3FA2AD49A9764CC72FDBAFB2 /* MASCompositeConstraint.m */, - 44DDF1AA5625A95CA1C76B7546758226 /* MASConstraint.h */, - 1ADF5834236B788D4ADA4E85DBD68395 /* MASConstraint.m */, - 3D2A884E58C9EFE4F57508CA7855F449 /* MASConstraint+Private.h */, - D7117B22CB4967C93BC27DD5B1BA9865 /* MASConstraintMaker.h */, - 8FBE26B2A8BA76D5AA3E371D3CA2EAE6 /* MASConstraintMaker.m */, - 2C6B8E558F2970AA962D063345B79D19 /* MASLayoutConstraint.h */, - 82512BA24900AE369D9A35A08C7187CC /* MASLayoutConstraint.m */, - FE45E33A4A0C09CD0EBB222B7E40EE72 /* Masonry.h */, - 996E03E4CC36DB69F10AD9C8F02472C6 /* MASUtilities.h */, - 5593F84C8F2583B27ACE6E149D4B8B0E /* MASViewAttribute.h */, - 051A3BFDC2997068DD4E7A11FEBAE63E /* MASViewAttribute.m */, - 5A03E64C6033C8C1C7D8822CDE785EEB /* MASViewConstraint.h */, - B12BB85356FB25DB1C8CA459600D3F8E /* MASViewConstraint.m */, - 14454326E9CB6046C0CA3ABA3A33F187 /* NSArray+MASAdditions.h */, - FD16DAAD0E6C1AF6207145BC463DF81D /* NSArray+MASAdditions.m */, - B71D1DE227720C6548D26CB1380A595F /* NSArray+MASShorthandAdditions.h */, - 9005237D68B29ED337A382B01C2917F8 /* NSLayoutConstraint+MASDebugAdditions.h */, - 361FBE2595D99942EB88F5C0D34EB2DA /* NSLayoutConstraint+MASDebugAdditions.m */, - A732383A60ACA7498BD810AAC8E31192 /* View+MASAdditions.h */, - 7CF635A9AE952B4C70F06837B227DDCC /* View+MASAdditions.m */, - 2019C0149E4FA95B56F04C424C11298A /* View+MASShorthandAdditions.h */, - 5973F7F7FB04C5938E91F05D46F22B54 /* ViewController+MASAdditions.h */, - FD22D0365334ED54585130432CEF0912 /* ViewController+MASAdditions.m */, - 755B3574C116B6B21DA3F9684A3E744A /* Support Files */, + CF85D3EF505C17C565E691AC344CCE5C /* JXPagerListContainerView.h */, + 3BC6BE1672FC4A4AA70F4CBD7E23C808 /* JXPagerListContainerView.m */, + 359AD735B8CFD982730F6CEB0F56A487 /* JXPagerListRefreshView.h */, + 603287955CE071E6EBDC96A98AB97750 /* JXPagerListRefreshView.m */, + 8087FD233990CE787D9977700977D0B8 /* JXPagerMainTableView.h */, + 119B8F0EF70910D693FCCA816529E357 /* JXPagerMainTableView.m */, + 3A2E4F46AFE1B8413F8C1C81323B5831 /* JXPagerSmoothView.h */, + 7F178706A5ED2B8C0CCCEA56CC4A04B6 /* JXPagerSmoothView.m */, + D3F906D47799FB7ED8D4AA1C036BF3BC /* JXPagerView.h */, + D31BFB25B2F3620735E09AC6DE1CBFE3 /* JXPagerView.m */, + 95AF65BE191D8A598CB99DF63AF5085C /* Resources */, ); - name = Masonry; - path = Masonry; - sourceTree = ""; - }; - C70568B567541D2FA725A12B29BD1DF7 /* UIKit */ = { - isa = PBXGroup; - children = ( - AB771D1A9F6BE6B15418DB387EE5ADF3 /* AFAutoPurgingImageCache.h */, - 352F171C72D103D96370080978C50788 /* AFAutoPurgingImageCache.m */, - EF6748BE01C63A0BA85DC20DBF82AD80 /* AFImageDownloader.h */, - B1ABBFCC8D2F6B393D3F4389129E97F5 /* AFImageDownloader.m */, - A0368DACE23383F23784ADE51EC66773 /* AFNetworkActivityIndicatorManager.h */, - F0CB265D0463DC2290A542EFCE210632 /* AFNetworkActivityIndicatorManager.m */, - E382492BA0D4E5C9BEF289F10F029CAA /* UIActivityIndicatorView+AFNetworking.h */, - 37526D876665DA3E019DF167F09B21F4 /* UIActivityIndicatorView+AFNetworking.m */, - C8667A6D81C45427108730E481B7134F /* UIButton+AFNetworking.h */, - 77A510DEE4CCFDB66B19F133A209CDF3 /* UIButton+AFNetworking.m */, - 09060CD8F1658C398DC40CC0221DB178 /* UIImageView+AFNetworking.h */, - 6EFC403B9948A5A5D2DC7D8B3D9188A9 /* UIImageView+AFNetworking.m */, - 17E50DA329E2F435CC41C2257BD0C866 /* UIKit+AFNetworking.h */, - DA7F2EDBF237046CD345C29806E0A756 /* UIProgressView+AFNetworking.h */, - FA56E3002035BE556C5ED858D43F49DD /* UIProgressView+AFNetworking.m */, - 01CCBFAC5118E8E6A44DA067EF8F2523 /* UIRefreshControl+AFNetworking.h */, - A0FE1EF8C4E4226EA31F342E982E620B /* UIRefreshControl+AFNetworking.m */, - FC504494ABD0D1144D620FD1501F0E00 /* WKWebView+AFNetworking.h */, - E8284A1808A9A014FA6F2F4E23F36835 /* WKWebView+AFNetworking.m */, - ); - name = UIKit; - sourceTree = ""; - }; - C849337A62646C28DD26BB58FA313018 /* Support Files */ = { - isa = PBXGroup; - children = ( - 99462BD5694E37EA26675903E46200AD /* DZNEmptyDataSet.modulemap */, - 979F4BB7A6CE1AF72F02D7E7F5EC0D7F /* DZNEmptyDataSet-dummy.m */, - 2EE28E5F80B5EB3B89F864114E429417 /* DZNEmptyDataSet-Info.plist */, - C7CA2BC79CB47B27F4A1481476747F49 /* DZNEmptyDataSet-prefix.pch */, - 972173A04BB5350B482CEE39EFFBE0EF /* DZNEmptyDataSet-umbrella.h */, - 1FABCE7CC795C2D70EA3AAEE06EDD595 /* DZNEmptyDataSet.debug.xcconfig */, - 1FABA21668D0F7EA5314EF00C93346A5 /* DZNEmptyDataSet.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/DZNEmptyDataSet"; + name = Pager; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { @@ -2285,43 +2790,99 @@ children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, B94D7768568A9992200DB461E8CF687F /* Frameworks */, - 575B9A37FCA1D986BF2159F1DC5640CC /* Pods */, - 92804E5AAC2424AC0EE6ED237A2C4B6F /* Products */, + 797CA9CCA9EBB2192EC635FA118D2257 /* Pods */, + 1CD312D2E666224315BB46AF04231D5D /* Products */, F7ED90CD818DD0484BF7DB0E1E3B9AB2 /* Targets Support Files */, ); sourceTree = ""; }; - DDE3584A435E1B64AD756057D19173E3 /* Support Files */ = { + D44B6A743503D502C7C50E1E40396614 /* FLAnimatedImage */ = { isa = PBXGroup; children = ( - D2892265E5746B87D5D6CDB4D0215238 /* LookinServer.modulemap */, - 802213010DCF77864E95B3A910F64EA0 /* LookinServer-dummy.m */, - 43936D8CC7E56B4026AF09D6B9E1B1BD /* LookinServer-Info.plist */, - 5EF9433AE70A3B3667F4B208CC88432A /* LookinServer-prefix.pch */, - 96AA5B4DE9A3DA12F53F6CB5D9AC99E2 /* LookinServer-umbrella.h */, - EA60319FCBE8ADFF00A52058DBE7C157 /* LookinServer.debug.xcconfig */, - 506D2884030F20EC06A10DCFA7347584 /* LookinServer.release.xcconfig */, + 761A654F557EA15B24079623AF9184F9 /* FLAnimatedImage.h */, + CE3837EC7E52B2C2855416D01CB974C7 /* FLAnimatedImage.m */, + BD89A8E0323AB57CE283C150C3D4C556 /* FLAnimatedImageView.h */, + B4121F7B04BCCD0FB01ED16A27F6E571 /* FLAnimatedImageView.m */, + 119FAC4028DEE3EECB43C1CA751847B8 /* Support Files */, + ); + name = FLAnimatedImage; + path = FLAnimatedImage; + sourceTree = ""; + }; + E186B0D6F7241CA024EE1DBD99B15A49 /* LookinServer */ = { + isa = PBXGroup; + children = ( + 6DF1AE20DC3ECAE9AA7B19DCCDE41F5C /* Core */, + B5D3B16165F3FDCE26DFE706A413FE76 /* Support Files */, + ); + name = LookinServer; + path = LookinServer; + sourceTree = ""; + }; + E603CC254B20E39E7561F9D06E23A39C /* LSTPopView */ = { + isa = PBXGroup; + children = ( + 24E6D9CD604967D0A1CF25370DFD7865 /* Code */, + 5BDD879F155F843CED343AAC8812F0D6 /* Support Files */, + ); + name = LSTPopView; + path = LSTPopView; + sourceTree = ""; + }; + EBAE2342A272E945D29705DB9B28137D /* Support Files */ = { + isa = PBXGroup; + children = ( + E032CFFEFE6D0B2BC568E604265CD74C /* DZNEmptyDataSet.modulemap */, + FFFC6DDC16F58E87A8A30CA92223320F /* DZNEmptyDataSet-dummy.m */, + FDF2879588F648F9ACE28CEDF3C4F456 /* DZNEmptyDataSet-Info.plist */, + 71D68B7747CE473E42AF5D55F07BB002 /* DZNEmptyDataSet-prefix.pch */, + A05508640C7796358B45E0B5C0C73183 /* DZNEmptyDataSet-umbrella.h */, + 6315771A902975A20B41342DD5234115 /* DZNEmptyDataSet.debug.xcconfig */, + 7755C313C99E29481B2A9849C31152BE /* DZNEmptyDataSet.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/LookinServer"; + path = "../Target Support Files/DZNEmptyDataSet"; sourceTree = ""; }; - E2525B53F604A89BD6A5BEF73F8706C4 /* Security */ = { + F3242F712BF128531D3F535A6FD297FA /* MBProgressHUD */ = { isa = PBXGroup; children = ( - 68BFCD31885FD8664001BB1EFAC74751 /* AFSecurityPolicy.h */, - ED1DD2A27A7141151DAB033BD707A1EF /* AFSecurityPolicy.m */, + A98C848E174628ED3A950CA220B4CB9A /* MBProgressHUD.h */, + DB3619AB8798CD8CAE31E140F80F2DC0 /* MBProgressHUD.m */, + 4B2DDDE1A44400085093EA342624D230 /* Support Files */, ); - name = Security; + name = MBProgressHUD; + path = MBProgressHUD; sourceTree = ""; }; - F714764FE1C9470C450626D766B18CA6 /* Resources */ = { + F401BC1732EB9D32AE09D69A4179A68F /* AFNetworking */ = { isa = PBXGroup; children = ( - 4056B0FA7CFCA3F0B3BA1F921297B1CC /* MJRefresh.bundle */, - 28D5D9D40BE7D9F76DB8A620D92D6F6C /* PrivacyInfo.xcprivacy */, + 3B56A01456E5166288620482B2A2180C /* AFNetworking.h */, + 0A1A9864A60D31E01F2EAB72403B1E95 /* NSURLSession */, + 89DEB64DC275ABFAFABFE909ED131FA2 /* Reachability */, + 0727E8966E92BA27516AA23EF6747FF6 /* Security */, + 8F7F6DF25B41B68A636D15AEFC153E23 /* Serialization */, + F7991E885F1A08F44C8372D9EB91EF60 /* Support Files */, + A1A0EBDEE093FF055ADC1FB66AD4A1B8 /* UIKit */, ); - name = Resources; + name = AFNetworking; + path = AFNetworking; + sourceTree = ""; + }; + F7991E885F1A08F44C8372D9EB91EF60 /* Support Files */ = { + isa = PBXGroup; + children = ( + F549CCE65FFF5AC81AB62FDCCB6CB8DC /* AFNetworking.modulemap */, + 17CD950341D8F0132ADFEDC39B7267A7 /* AFNetworking-dummy.m */, + 709DA7415B508D723EE552B201284026 /* AFNetworking-Info.plist */, + 82F0AA3C9E3854CEA18B30E16DC474FC /* AFNetworking-prefix.pch */, + A1067B051CF7A4C36817E6F668A3E7A6 /* AFNetworking-umbrella.h */, + 8A6F594F279129456C02C7701DE5EDC3 /* AFNetworking.debug.xcconfig */, + A697ED78520252C2C8CA71D13BA57F79 /* AFNetworking.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/AFNetworking"; sourceTree = ""; }; F7ED90CD818DD0484BF7DB0E1E3B9AB2 /* Targets Support Files */ = { @@ -2333,173 +2894,55 @@ name = "Targets Support Files"; sourceTree = ""; }; - F83577C0BD1D647CC9CF750D800647CB /* Core */ = { + F897C86CB2866AB045A64520219B6522 /* Resources */ = { isa = PBXGroup; children = ( - A187D3CE401AEF4272748BA58A834812 /* NSBezierPath+SDRoundedCorners.h */, - 63746C791045958FEE981F032ACCAECE /* NSBezierPath+SDRoundedCorners.m */, - 01B6539E05000228B7BBD9BA57EDF5E3 /* NSButton+WebCache.h */, - DEA09040DACD7A53B041773DD59096FC /* NSButton+WebCache.m */, - 107D93AEC1E186A8F21341BFB523B22C /* NSData+ImageContentType.h */, - AE9EAD92339D5CAFE9DD672B7A3B6E7D /* NSData+ImageContentType.m */, - 1EFEA57CFC8959BF5EF4B795BD808107 /* NSImage+Compatibility.h */, - 9BC9B980A57804E48A923737AE36ACB0 /* NSImage+Compatibility.m */, - 086D3945C39C8554602424E64D1A9F0B /* SDAnimatedImage.h */, - F24C826B62D5E083C9293F7721C463C2 /* SDAnimatedImage.m */, - 6B130ACC8A24ECD0BF3BD07D5AF21E4D /* SDAnimatedImagePlayer.h */, - C82B001CD34AC553F11A55D1E576C902 /* SDAnimatedImagePlayer.m */, - 119E6680DBF287ACAD4F054AA0D5AE17 /* SDAnimatedImageRep.h */, - AB547BD41867170F26173D27CE44DCE6 /* SDAnimatedImageRep.m */, - 3E5C8F44BD62EB86605C88FA434E57ED /* SDAnimatedImageView.h */, - 17FD1B21DCC89D66865655294A85A817 /* SDAnimatedImageView.m */, - 5839F6C7ABFF6E515370151D7E470262 /* SDAnimatedImageView+WebCache.h */, - CE909BA066F9B44E9C2F036FF3FD44FE /* SDAnimatedImageView+WebCache.m */, - 2F61547B42B4881FB5D37EF93F1C324C /* SDAssociatedObject.h */, - 1DBD3AB6DB93D7C2BE4FB5D89E1938FD /* SDAssociatedObject.m */, - 776331A7467F397FCD02F62B233A6E93 /* SDAsyncBlockOperation.h */, - C7E35B5D53702D7A355AD38231170EAB /* SDAsyncBlockOperation.m */, - 9FC0CB167AF5751B03431E60D722046F /* SDCallbackQueue.h */, - 20E25456C8490BA5725AE87E9508AF07 /* SDCallbackQueue.m */, - 1D13B75999F5A8EF9D0BABA6DAF09179 /* SDDeviceHelper.h */, - 343301F4ECFA1778F70E1EC266C1848F /* SDDeviceHelper.m */, - D9FB07B277FA3212774D9D7EF2156759 /* SDDiskCache.h */, - 889630ECFAA2151C2C1F334458A5C110 /* SDDiskCache.m */, - AD1C2B98D240951DA7BD821093E6C395 /* SDDisplayLink.h */, - 110C7A39306E93E5D29F1709FE16720F /* SDDisplayLink.m */, - 622B25C415B746B0A4DE004201B6C241 /* SDFileAttributeHelper.h */, - 31BB750A026F77ECDF9EFB2711DEC741 /* SDFileAttributeHelper.m */, - 387AF8AF8500E50CC311582863B31CFF /* SDGraphicsImageRenderer.h */, - 4FA72F287E0DE573DD735BAE9AD7E816 /* SDGraphicsImageRenderer.m */, - BF5EC4E67D9695435096AE8FFF0726FA /* SDImageAPNGCoder.h */, - 9B9528B0058E986186BACF5E7A40A742 /* SDImageAPNGCoder.m */, - 84DD851B5FDE16625FA07D9C4D1622E4 /* SDImageAssetManager.h */, - CE8561E7F90B3736EA348E5236FECB1C /* SDImageAssetManager.m */, - C685758668AFAC91E0AE4675AEA80600 /* SDImageAWebPCoder.h */, - 3F3611B9193976C6AC5268E458B3F9F6 /* SDImageAWebPCoder.m */, - 3EDF0BD9574A366871EF5B3FBEFB906D /* SDImageCache.h */, - 6F98986A52AAB68B64127A983F8CB7D9 /* SDImageCache.m */, - 5F62EE3A88E154ADAC90DDF6BC60DFB6 /* SDImageCacheConfig.h */, - 9694A97A95DD31F14A6A155FCCFE7837 /* SDImageCacheConfig.m */, - AD7824F87B7A4AC0EB49B7B856736BF2 /* SDImageCacheDefine.h */, - BDC5D95848173A06A25E49216A4BEFDC /* SDImageCacheDefine.m */, - 023A9DE33A4A369492D910BE237BE415 /* SDImageCachesManager.h */, - 9C27FE20E006C874307EF5F2B30AA69E /* SDImageCachesManager.m */, - 79B0D13A04128B711BB3AFF0676EC3D0 /* SDImageCachesManagerOperation.h */, - 315C5770DCC0584893C24972BAEDEB39 /* SDImageCachesManagerOperation.m */, - 51B83EEE0D453B8B01D8275D3EEBF4BF /* SDImageCoder.h */, - A43798E6CE0478C1CA6ECFD6AE110593 /* SDImageCoder.m */, - B0023999B588A745D2530760778D09F9 /* SDImageCoderHelper.h */, - 069FA883A4FACC46317AB2BE1BDE30E4 /* SDImageCoderHelper.m */, - 9FDBCFE0DF35F1346C9E17295438B88A /* SDImageCodersManager.h */, - 5A9184E6EEBE4764FF941193DF28C44D /* SDImageCodersManager.m */, - 5F618581DFE1104C16FA02EB2B00F1B9 /* SDImageFrame.h */, - A8A5F422D3A80975E78C20D9980BBAE7 /* SDImageFrame.m */, - ABF08650352052DEA4797A89BFD856FF /* SDImageFramePool.h */, - 3F01F027ADEF8C49A4605D787E41BD1C /* SDImageFramePool.m */, - 31C99A570F5F1154C55309832EC47D0D /* SDImageGIFCoder.h */, - 37B5AAFF8675170D1D643B53FECA47E3 /* SDImageGIFCoder.m */, - 7F2363FB988E5DC9705FE22B29B7B4F8 /* SDImageGraphics.h */, - A4288DFF17DF27DEEB1590D7281FBBD7 /* SDImageGraphics.m */, - D2E3EA9E3A659E147112B9E7A63EEC56 /* SDImageHEICCoder.h */, - 7859E48715647D45C428FB82F31DB2BA /* SDImageHEICCoder.m */, - 71086CB516DC09CA5D29736469412558 /* SDImageIOAnimatedCoder.h */, - 741B32704926AB941D9209B2D37E2B8F /* SDImageIOAnimatedCoder.m */, - 9358338FB49CFCB7417D22C85E339488 /* SDImageIOAnimatedCoderInternal.h */, - 8A46088339E0DB93FCE586878F070297 /* SDImageIOCoder.h */, - F0F086732258C7153899AB5D8C678B02 /* SDImageIOCoder.m */, - A65F19FCE0D1235D1B87CDFD5146518C /* SDImageLoader.h */, - 2F3AD0011FB2CA087E42B18DDAD25253 /* SDImageLoader.m */, - 7FCA5CF6F4A026896316D8731B3E493F /* SDImageLoadersManager.h */, - 0C895614137416E86433C8E5EAF1D3CD /* SDImageLoadersManager.m */, - 524E9F65E894111FFD9563F30298E596 /* SDImageTransformer.h */, - 97C8222012D0B30C2E5C40B4867A1AAF /* SDImageTransformer.m */, - 8204B00622081F3C51B1FC2D83A2D0D0 /* SDInternalMacros.h */, - 56951EB060616356F951F35CBD9A6E42 /* SDInternalMacros.m */, - 584341F234CCB4128A1A3854A3371179 /* SDMemoryCache.h */, - 5CC308EFB0F9E5B050F606DDD3E7A44F /* SDMemoryCache.m */, - BC5A2383372F42B2452808A886E02C6B /* SDmetamacros.h */, - CC87F6E60998716F313AD85E3F2F0C78 /* SDWeakProxy.h */, - E2E3CFC89381BAE830E4045CE02E25EB /* SDWeakProxy.m */, - F6E7A6844647C14F0728CBB9EC73AF19 /* SDWebImage.h */, - 662D6F244CE3008639589EE4EA829B53 /* SDWebImageCacheKeyFilter.h */, - 8EDBEC1105ABEB5730250B28CB605E44 /* SDWebImageCacheKeyFilter.m */, - C84FAFE47B2E31104A515395A5239442 /* SDWebImageCacheSerializer.h */, - 360B7B34B46811D44994D83FAC09E663 /* SDWebImageCacheSerializer.m */, - 0E376CA03D27B523F7F180B9EC99BD7C /* SDWebImageCompat.h */, - BF559CBB24F4A49720F72A32ADDCCFE2 /* SDWebImageCompat.m */, - 1B4B2DB5DB2A6C79E9C1A5ABA6070B58 /* SDWebImageDefine.h */, - 2BAFAB49E37FE01E69DA8AF02F372885 /* SDWebImageDefine.m */, - D1995E5A7C78EB3AC4764F06A4A7E676 /* SDWebImageDownloader.h */, - 5703D16A54AB62E92D3E21CC6E5EA55B /* SDWebImageDownloader.m */, - 1B2F034522C4ACEB56FB7ECF5D3CDFDB /* SDWebImageDownloaderConfig.h */, - F27AC2454398D7EA8C514D5B2F6469EF /* SDWebImageDownloaderConfig.m */, - A34081EC91EFEC16FB92BEE1A470458E /* SDWebImageDownloaderDecryptor.h */, - 3663272D41C8B58200506DDA7E7A2903 /* SDWebImageDownloaderDecryptor.m */, - 2D7205061D92FA9AEDA20BCF1B6FF9B7 /* SDWebImageDownloaderOperation.h */, - C4D31F6949E2640BBC06F6F5E862EA6B /* SDWebImageDownloaderOperation.m */, - 0E350DE3AE3DE0F5FC5BD9A2EB159387 /* SDWebImageDownloaderRequestModifier.h */, - 23518377A93659DE7C8E586309E28896 /* SDWebImageDownloaderRequestModifier.m */, - FB689A278C80C26E3B3E80EDA3887106 /* SDWebImageDownloaderResponseModifier.h */, - FB095F0736BB4D6DAB423B110675CCD9 /* SDWebImageDownloaderResponseModifier.m */, - 4A980D9B3DB04133A466725A1C6C22F8 /* SDWebImageError.h */, - 70D5B55A578973F4D162548B46979D49 /* SDWebImageError.m */, - C657F16F9FE7919D2B27F05D611C2F2D /* SDWebImageIndicator.h */, - 37B6B4596E25AE5CE5BE1FE14A6AF93B /* SDWebImageIndicator.m */, - 875E237862F4488FBFC692D1AB2DBB91 /* SDWebImageManager.h */, - 92B30D23B01D493E996B4DF061CC3062 /* SDWebImageManager.m */, - DE5FC1FDACC1A466A889091A6DD9D1B4 /* SDWebImageOperation.h */, - E41E643057B645A4E6C5FEA5E52213CB /* SDWebImageOperation.m */, - 9C6E20B7CDAEE04E340BBA081726D5AC /* SDWebImageOptionsProcessor.h */, - 56BB70CC7870B5212EFAD74AF8199F17 /* SDWebImageOptionsProcessor.m */, - B8F37F4AA285AB6E2540A4063D8B802F /* SDWebImagePrefetcher.h */, - 237D10385C2D9391B809DFD74B21A570 /* SDWebImagePrefetcher.m */, - 057F1DBD0EB25FF8CA833DC6F478BF32 /* SDWebImageTransition.h */, - C930EDADB5661C1F591CA4E0A60BCA26 /* SDWebImageTransition.m */, - 1458CC53A93F0D10D4564ECD3E1C2D28 /* SDWebImageTransitionInternal.h */, - 16276D593D3F4D227902AF3A1424A4AC /* UIButton+WebCache.h */, - EEE26007FA20AE54DB39973E3D1D76FF /* UIButton+WebCache.m */, - D5D847654327E7F1E333D40CD9665067 /* UIColor+SDHexString.h */, - 5F9D4F9A4CA404E7287B2F6CBFF382D1 /* UIColor+SDHexString.m */, - 67D554550B250775795416CCAF8BD370 /* UIImage+ExtendedCacheData.h */, - 16A00EF4CD873ABB9D94776FACC7C92F /* UIImage+ExtendedCacheData.m */, - 4D8DA2BACDEA7D78265D10D62F7A3BF7 /* UIImage+ForceDecode.h */, - 8C63EE1B9AB32B647D64489A498987B3 /* UIImage+ForceDecode.m */, - B2770F360CD876399FE83C30619DBC24 /* UIImage+GIF.h */, - 51E9651B0CFE7B40336ABD29412D3C39 /* UIImage+GIF.m */, - E6EDBB7EFC23401D50E3438EB3430A58 /* UIImage+MemoryCacheCost.h */, - 4F3DBAC2BF3E2D408BCB049042B8B067 /* UIImage+MemoryCacheCost.m */, - 3BE50AD720E95B8938AAE668F71561B7 /* UIImage+Metadata.h */, - 610BD8934663142C5DDE2AF00042FD13 /* UIImage+Metadata.m */, - 88C23FF116C3257A27A26A897D5AE6DB /* UIImage+MultiFormat.h */, - 452B8DD5CBF29E80E794E957D7ACEE0F /* UIImage+MultiFormat.m */, - 8B8786CBA6B78647E486B3CA129F2DAD /* UIImage+Transform.h */, - 95F5264D9ED9939AE536B5201D80DB5E /* UIImage+Transform.m */, - 29D938D1AE315B5A7E490702D4DBEED7 /* UIImageView+HighlightedWebCache.h */, - 3F6EA8BCC592FC8C87F6AB86D1783731 /* UIImageView+HighlightedWebCache.m */, - 817B07C3E952A5A5F2082BE15C3C500E /* UIImageView+WebCache.h */, - CE1FC58856D64F439A2DB39A5CBEAF01 /* UIImageView+WebCache.m */, - A0C23E787A5997AF276176CBB988D241 /* UIView+WebCache.h */, - AFC953B00F77A76AF38E0FA2C8AB5F03 /* UIView+WebCache.m */, - 8166AA98A11AE7F3F46DBF2C481F6DF5 /* UIView+WebCacheOperation.h */, - EA5F1011035F011FF8DB93B55405B76E /* UIView+WebCacheOperation.m */, - B354D25F9AAB5A1E64BA7AAED1BA9991 /* UIView+WebCacheState.h */, - EF5BED7A35D904E495E540434D07B398 /* UIView+WebCacheState.m */, - 47E1BAF577BBA403FE7B999A122D3E59 /* Resources */, + C1227D6957584FA14F5EFE311854C54A /* PrivacyInfo.xcprivacy */, ); - name = Core; + name = Resources; + sourceTree = ""; + }; + FB21115538DDA6029001E62F3AB59544 /* LSTTimer */ = { + isa = PBXGroup; + children = ( + C4A783F974F95D31DCCDA721D4F965EC /* LSTTimer.h */, + EF426A2B87D32263A2C56A13732C8201 /* LSTTimer.m */, + 9CF605192227F87CF3E8D7EE63BDF0B1 /* Support Files */, + ); + name = LSTTimer; + path = LSTTimer; + sourceTree = ""; + }; + FE875CB7596498A67CF56F73315D2BDD /* DZNEmptyDataSet */ = { + isa = PBXGroup; + children = ( + 797DE6794620B6AD238FF0B8B61A1B32 /* UIScrollView+EmptyDataSet.h */, + 3F77AB571A5252972C84B67134918B5F /* UIScrollView+EmptyDataSet.m */, + EBAE2342A272E945D29705DB9B28137D /* Support Files */, + ); + name = DZNEmptyDataSet; + path = DZNEmptyDataSet; + sourceTree = ""; + }; + FFFE14F5389A574527140C5AC02880B9 /* Support Files */ = { + isa = PBXGroup; + children = ( + 19AE4F199F0E794B9F2956EE4530887A /* MJExtension.modulemap */, + 4D4A62A4549AC17B0296FF7D29E15454 /* MJExtension-dummy.m */, + 6C338AB8936504A929CF0929B7D23C9F /* MJExtension-Info.plist */, + DA5203B4ACDB110F236306ADB5531C98 /* MJExtension-prefix.pch */, + AE09548D63659FAE72F5C6F1EBF230FC /* MJExtension-umbrella.h */, + FFC39DF551599EB371EA8F85F9A9DDCF /* MJExtension.debug.xcconfig */, + 04A5DA1EDA3B5149D813E6B1D2B5ADDD /* MJExtension.release.xcconfig */, + 6A2C1D3548C9E3091DE847DA61A18E5B /* ResourceBundle-MJExtension-MJExtension-Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/MJExtension"; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 08C9EEFC6E73AD5D05604531B118C3C4 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 5109F520B2E1FF2F30F9DDF5E584E028 /* Pods-keyBoard-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 09EE4349480B078AFE00E65B49E502BF /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2755,6 +3198,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7A48625CF583F169B2CE65398246355A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D380F9C945002DBF2E7D64983ABDC890 /* JXPagerListContainerView.h in Headers */, + 20D5706AD3ED295B4FBACD8825DC3A1E /* JXPagerListRefreshView.h in Headers */, + E77175BDAE33AADF66766B28AA710247 /* JXPagerMainTableView.h in Headers */, + CA9AFE3460622CC65F75A2DDE845F6E9 /* JXPagerSmoothView.h in Headers */, + 85ED10431A6C01970A3DAD8A8C9BF25F /* JXPagerView.h in Headers */, + 3CE13969772F4180701A575FAB98E978 /* JXPagingView-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 80AAB619EDBB0EBDBBC84368EED44AA3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2776,6 +3232,74 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 8DFBCFE77A898FBE83C48772D7F569F9 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2EEB29D2C570F11620D4CF90D7DFD569 /* Pods-keyBoard-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 920775366A5F97AE256FADDDCDBD9740 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 060B00D5B019369654AEAB7C116DC119 /* LSTTimer.h in Headers */, + 48EB84614F04E6089393ADDFA4BA8603 /* LSTTimer-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 93691E22DE50657D0D08BA5D05234F57 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A643679AC9795083558C6D8E33AF6151 /* JXCategoryBaseCell.h in Headers */, + C74589E03918328E4D27EFCBF6C4A0B8 /* JXCategoryBaseCellModel.h in Headers */, + 88197D535BEBB0F4B71F106AE300631D /* JXCategoryBaseView.h in Headers */, + 780EDF2615923E89C179EB5A60D2DA41 /* JXCategoryCollectionView.h in Headers */, + 2EC7BA321016EC71EA595E4BAF0B7E8B /* JXCategoryDotCell.h in Headers */, + 22C38AE7AB145224FF646303AFED11D2 /* JXCategoryDotCellModel.h in Headers */, + 6B9D333C18DDBF4E7CC889F7FDE05EEA /* JXCategoryDotView.h in Headers */, + 4C8C34A09D61A3881DFB1A544A2CA2A5 /* JXCategoryFactory.h in Headers */, + 7D1E98BE9558F6E5E29B0E81EC526A90 /* JXCategoryImageCell.h in Headers */, + B0F512045830FAB66AE7526E35501800 /* JXCategoryImageCellModel.h in Headers */, + 55910DBCDF99E39955BE01EAD8251081 /* JXCategoryImageView.h in Headers */, + BD7E02AB6057AD5A6AC513C34D508135 /* JXCategoryIndicatorBackgroundView.h in Headers */, + ECC6BC85943DB873215826A344A462FD /* JXCategoryIndicatorBallView.h in Headers */, + 5CAB535753B28B463140F421E9B00136 /* JXCategoryIndicatorCell.h in Headers */, + 6BE86A0FFB0D69C6098CC75E1FB4E8B5 /* JXCategoryIndicatorCellModel.h in Headers */, + 168889E3E897E6D6102A2AA7F7C47496 /* JXCategoryIndicatorComponentView.h in Headers */, + BCEEAFC24178DE5AABACC74245CE1739 /* JXCategoryIndicatorDotLineView.h in Headers */, + C8685678D1B020F87365D022216FFE29 /* JXCategoryIndicatorImageView.h in Headers */, + E2DF1B379D9444D40D78320E90B1DC07 /* JXCategoryIndicatorLineView.h in Headers */, + E52DCE394A6E02B6BA11FA64624F68F3 /* JXCategoryIndicatorParamsModel.h in Headers */, + 1399CD097E164E2C7A6882F0C8FFA525 /* JXCategoryIndicatorProtocol.h in Headers */, + 0AA1842830C770B1E299BAC977E813D9 /* JXCategoryIndicatorRainbowLineView.h in Headers */, + 546DE9D8142C6D8554E083C6FD65D0BE /* JXCategoryIndicatorTriangleView.h in Headers */, + F1ABB5428A1CCF2EAC42A4C3B388F25D /* JXCategoryIndicatorView.h in Headers */, + 11AD210D385F977383AFB974D3CDEF53 /* JXCategoryListContainerRTLCell.h in Headers */, + 6F75FDB9BE37C9A8473F97B1696B5D09 /* JXCategoryListContainerView.h in Headers */, + 31FA8264AA5553AB85039530B1FB8C4B /* JXCategoryNumberCell.h in Headers */, + BFD8EC99CD8DA66E3C6C0B3EE8CC4859 /* JXCategoryNumberCellModel.h in Headers */, + 1C1BC9F0555B36914FF5278D30152DE6 /* JXCategoryNumberView.h in Headers */, + 4424E7517B86FE622BCD3D5040FC579C /* JXCategoryTitleCell.h in Headers */, + C07F8A334C739FD38D9CB5C5239D683F /* JXCategoryTitleCellModel.h in Headers */, + 70D30BC7134E3C8006BF0B6A4B438057 /* JXCategoryTitleImageCell.h in Headers */, + 1F778CA18D1F4A50D9F15280B25D10EB /* JXCategoryTitleImageCellModel.h in Headers */, + 874CE8F3650D220092077846A46598E6 /* JXCategoryTitleImageView.h in Headers */, + 1DC161351EBD409CC622E826340E4FD8 /* JXCategoryTitleVerticalZoomCell.h in Headers */, + 17341EDF872432C3966B77976F3E0470 /* JXCategoryTitleVerticalZoomCellModel.h in Headers */, + 52E60EE26D065DB63D272298AC8867DF /* JXCategoryTitleVerticalZoomView.h in Headers */, + 88889F5DA04EB4FA08125742B5E522DA /* JXCategoryTitleView.h in Headers */, + 5EE53074B8A35D48AB76CAF38C88A37A /* JXCategoryView.h in Headers */, + B948DCB652CEF1509FBE410D85844A53 /* JXCategoryView-umbrella.h in Headers */, + 4281CC31F4D4EAE690F999C778F17E5B /* JXCategoryViewAnimator.h in Headers */, + A1BFCC1BC5107F5F72BDBDB98E12559C /* JXCategoryViewDefines.h in Headers */, + CEC9EF043F69710AC29940EB4E1E2B19 /* RTLManager.h in Headers */, + F458385338076D8734DD74BE4A94B33F /* UIColor+JXAdd.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; A903C05DE36F05DE8EA13A2F4A3D52E8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2850,15 +3374,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E882F8283367BD8AAAD8C29752D10A01 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 4DE8A481697088E8BBAEB51042F14ABE /* LSTTimer.h in Headers */, - 3338AA0580424EFB0FE59C3A37702A47 /* LSTTimer-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -2880,31 +3395,50 @@ productReference = A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */; productType = "com.apple.product-type.framework"; }; - 18BD026D2210082A239FC15D072FD5BF /* Pods-keyBoard */ = { + 16704C6B67439DA959DB043702C75A7A /* JXPagingView-JXPagerView */ = { isa = PBXNativeTarget; - buildConfigurationList = 8C2F7BD693160E3E0554D67620B26026 /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */; + buildConfigurationList = DDFDCCDD059A0AA2C5DEAA3588DE41A7 /* Build configuration list for PBXNativeTarget "JXPagingView-JXPagerView" */; buildPhases = ( - 08C9EEFC6E73AD5D05604531B118C3C4 /* Headers */, - 86BA6B9707AE3B1250A31F523EB8DA55 /* Sources */, - 3131D37BE47B5A01B63EFA14B2A9822F /* Frameworks */, - BA262B4873E56403AF0269D5EAEE5E15 /* Resources */, + 2BCD1AC59060560FEAF74FFFB66F0F9F /* Sources */, + AEC8B8EF401BFAE066232C67738FEB8F /* Frameworks */, + 3A5A6604A2DC218F056C1D04F3DB43CD /* Resources */, ); buildRules = ( ); dependencies = ( - 31B285B5CDDD3D0B75165B7E60875540 /* PBXTargetDependency */, - CBD95011A36DFDA2919E5B3F37459EAE /* PBXTargetDependency */, - A1343B6079DE025DBF916F7B81708222 /* PBXTargetDependency */, - 74D6D9BB82D0FFCAFC06C440BDAB1F50 /* PBXTargetDependency */, - A707874A71DF7C81F9119F9728626E2F /* PBXTargetDependency */, - AC48B21768E35ECFC605F51956C6C305 /* PBXTargetDependency */, - 579B996E9942825FE7A26DE3FF3B1783 /* PBXTargetDependency */, - A5740B9DC31236AD3E4CAF5F1E336987 /* PBXTargetDependency */, - F59B858EFCDFF0A159DB925DA2871952 /* PBXTargetDependency */, - 610CFF14AC9EFAF66F9721E282831AE2 /* PBXTargetDependency */, - FBD20C5E1BFF0138D14604A3E9892BAE /* PBXTargetDependency */, - E5D2D0ED9FB1C4A09640F1C1E02963E1 /* PBXTargetDependency */, - EF1B1186931F596FE79ABDD95C3DB3DB /* PBXTargetDependency */, + ); + name = "JXPagingView-JXPagerView"; + productName = JXPagerView; + productReference = E03F152E95B6924D2486511337D24503 /* JXPagingView-JXPagerView */; + productType = "com.apple.product-type.bundle"; + }; + 18BD026D2210082A239FC15D072FD5BF /* Pods-keyBoard */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0C35983ABF9DEA95C8B29A7F8482E5AE /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */; + buildPhases = ( + 8DFBCFE77A898FBE83C48772D7F569F9 /* Headers */, + 6F3E38196FED4BD0677C98E1E0C6C80C /* Sources */, + 96D238A614CBDD553073EEECBB41281C /* Frameworks */, + 0D07E8D675635C881CCB2DF69C6E7629 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C9B3D25C71255E9DFCE9A741B4BFF3BA /* PBXTargetDependency */, + 3A364CBA383FC741F9B9507BAD524A1F /* PBXTargetDependency */, + BFFE20AC77F2320185030DE7FAF95A94 /* PBXTargetDependency */, + D1DA99819466A8666489AD8ABE8C04A5 /* PBXTargetDependency */, + B48CA5483F83ECB025E2CF88895F910F /* PBXTargetDependency */, + E3CE26F82AC9FA20A1C696AD05CBE607 /* PBXTargetDependency */, + 3B95059A3ABF817D0636F90C4FE24A57 /* PBXTargetDependency */, + 5B8D2BAFD03C6848DC5CAC776971023C /* PBXTargetDependency */, + A036241AE2FD9088F99D8A60AFCD1514 /* PBXTargetDependency */, + 3A33DC80646EE1FEC3F5A81D6D88094E /* PBXTargetDependency */, + 7986360E8EC5F57AE4012FDDB8A6D701 /* PBXTargetDependency */, + 67D06D25CF9C7EFF394097D2AFFD9DF9 /* PBXTargetDependency */, + 75023E301D2D56786B69F7BD1B998E06 /* PBXTargetDependency */, + 004C87AF28627224BAF0F49A32B4B934 /* PBXTargetDependency */, + A8CFE4713F435C9FF4AA9FA8D460F3A7 /* PBXTargetDependency */, ); name = "Pods-keyBoard"; productName = Pods_keyBoard; @@ -2941,7 +3475,7 @@ buildRules = ( ); dependencies = ( - 706669DE3EF507E6ED7756D757CB0803 /* PBXTargetDependency */, + E918590C6B33D5799C74C34CD2BB5722 /* PBXTargetDependency */, ); name = SDWebImage; productName = SDWebImage; @@ -2978,7 +3512,7 @@ buildRules = ( ); dependencies = ( - B58F0F72931D247BC05C471A0226C5F1 /* PBXTargetDependency */, + CA5A82B04166A988C7834D6E5F130D24 /* PBXTargetDependency */, ); name = MJExtension; productName = MJExtension; @@ -3005,12 +3539,12 @@ }; 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */ = { isa = PBXNativeTarget; - buildConfigurationList = 7F4FDDAED424001F24F18A5ED96ABA7B /* Build configuration list for PBXNativeTarget "LSTTimer" */; + buildConfigurationList = 15624921AFB223858478F40D5FC30D8A /* Build configuration list for PBXNativeTarget "LSTTimer" */; buildPhases = ( - E882F8283367BD8AAAD8C29752D10A01 /* Headers */, - 7C1E7BC9142AEAACC37BBFA5736E21E6 /* Sources */, - F69A92A5C344308FA427BBAED4888BA0 /* Frameworks */, - 0C2C6D22B659FD9FBD84420DAAD00401 /* Resources */, + 920775366A5F97AE256FADDDCDBD9740 /* Headers */, + FEEB3280DD885E20A0F8EE0C8798CAB2 /* Sources */, + C44502CD70E5B1200927F3A081A60365 /* Frameworks */, + 848FF7A10EE5C029902ADD3C55750C9F /* Resources */, ); buildRules = ( ); @@ -3051,7 +3585,7 @@ buildRules = ( ); dependencies = ( - DE3981E6419BE407CF93074BF535E2F5 /* PBXTargetDependency */, + 7244D798B35A90122DF5F2EBC2C25073 /* PBXTargetDependency */, ); name = MJRefresh; productName = MJRefresh; @@ -3088,20 +3622,39 @@ buildRules = ( ); dependencies = ( - D2AEA24D136504A1C3C238158CDC14AD /* PBXTargetDependency */, + C8CAA3DF1F34F4917BE346E82645B672 /* PBXTargetDependency */, ); name = LSTPopView; productName = LSTPopView; productReference = 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */; productType = "com.apple.product-type.framework"; }; + 8BEAFAA726C1965864B79B4B441AA513 /* JXCategoryView */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB4C55F70CF73736D3687A2E620AC793 /* Build configuration list for PBXNativeTarget "JXCategoryView" */; + buildPhases = ( + 93691E22DE50657D0D08BA5D05234F57 /* Headers */, + 8F5978DBE3D91F845AFFF79059502540 /* Sources */, + 481273BD538BE69936DB3D2C8EB1E61B /* Frameworks */, + D6BF70856976374C62C62EF42CD1B449 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C11D50FE786831BFAA5FB3ED4D276FC5 /* PBXTargetDependency */, + ); + name = JXCategoryView; + productName = JXCategoryView; + productReference = C3A46B03C308EEEB11F2A62BA5D2E8BE /* JXCategoryView */; + productType = "com.apple.product-type.framework"; + }; 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */ = { isa = PBXNativeTarget; - buildConfigurationList = 33D6375648A0A6BF2A26AA104B964F82 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */; + buildConfigurationList = D0D337F808B517A6F9A6D14C71CB5B25 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */; buildPhases = ( - 668D3C1EB9C4184AD9F85DFC1B3DDAAC /* Sources */, - E84EAC027A0FB7CE91306C93FC676BFE /* Frameworks */, - 918668F825F51C44A44BDA0D6E26DE0A /* Resources */, + 23F7311CB240548CE74F13BA30E805B5 /* Sources */, + 49A3D4697275EC0A7C6F38E45E2F0217 /* Frameworks */, + 104904C13744D5C7625092B68974D183 /* Resources */, ); buildRules = ( ); @@ -3114,11 +3667,11 @@ }; B26054DF1DEA11585A231AF6D1D80D5E /* MJRefresh-MJRefresh.Privacy */ = { isa = PBXNativeTarget; - buildConfigurationList = A6F832309249E7B81D966980E5A2AA5B /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */; + buildConfigurationList = 6245C5FFE40FC7DFDD2CA00871D0EA40 /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */; buildPhases = ( - 81DB13C71F9ED4A7F16A03B68EE00629 /* Sources */, - B4DC6EBA2E0A9BF13EE9B40E41669F40 /* Frameworks */, - FA9EC5705AC7C692DDFA718CB01BC202 /* Resources */, + D505A0E271350076957F6F32073544D2 /* Sources */, + A815DA3563AEC721C6EAF6B39395CDD4 /* Frameworks */, + 8AF3FF976A1DE9EA4258B9F5B490733A /* Resources */, ); buildRules = ( ); @@ -3131,11 +3684,11 @@ }; B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */ = { isa = PBXNativeTarget; - buildConfigurationList = FF5CD44349A7EEBF8A674DDD0F0574CF /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */; + buildConfigurationList = B662A4FAD3B72B94AAE82FA4EF54A8A1 /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */; buildPhases = ( - 086E6CDD1E962F391C206FAE038E1A7E /* Sources */, - 30C44AB8C7DCA8E0F90C02BF12AC1ACC /* Frameworks */, - D23FFCFDDE4E84FB67B476373DD24257 /* Resources */, + 1FAEC8C9D1FFBAF2D815698CBBF41366 /* Sources */, + B48A7E8CCFE81BBD4AEBA45C992E5F7F /* Frameworks */, + 79F5ED799353ADB8EFED141CD4F84A84 /* Resources */, ); buildRules = ( ); @@ -3146,6 +3699,25 @@ productReference = 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */; productType = "com.apple.product-type.bundle"; }; + C4E1020AF425614337737213AA26DBD5 /* JXPagingView */ = { + isa = PBXNativeTarget; + buildConfigurationList = 773A22765B846DE10CADF4D2E77FE841 /* Build configuration list for PBXNativeTarget "JXPagingView" */; + buildPhases = ( + 7A48625CF583F169B2CE65398246355A /* Headers */, + 9F03A6C166C310270FB3F4AFE9D7573D /* Sources */, + AE750D3363286EC4504AB9516776E757 /* Frameworks */, + 5C89912961D7B3B99680563233DBEA04 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 82007E5716B41B7A56E454204B106954 /* PBXTargetDependency */, + ); + name = JXPagingView; + productName = JXPagingView; + productReference = 2F4A1CCB21DB7EA5A2ACEB11E374FBCA /* JXPagingView */; + productType = "com.apple.product-type.framework"; + }; D9B2DB11933DB55A80A118934E6680AB /* Pods-CustomKeyboard */ = { isa = PBXNativeTarget; buildConfigurationList = B1224CED7ED3E4B356E8F429D6C62F7E /* Build configuration list for PBXNativeTarget "Pods-CustomKeyboard" */; @@ -3158,17 +3730,34 @@ buildRules = ( ); dependencies = ( - D504C3B6398A702186D49FE4B778051E /* PBXTargetDependency */, - D2A120E24B87240E573F8B0FBD3FA160 /* PBXTargetDependency */, - ADBF59F419A1769B237B2671E4975D51 /* PBXTargetDependency */, - 85C2754009A231976C78A0DF13CED0E3 /* PBXTargetDependency */, - 983600180BD0020E52A5E0C267AB52CE /* PBXTargetDependency */, + 33D09C01EF80EA558D42C96911714DFF /* PBXTargetDependency */, + 8DBC9C82D4F645E38F5388E4EC6F8837 /* PBXTargetDependency */, + C5827E035098A10C8DC173D8807B0496 /* PBXTargetDependency */, + 2DE7668F0442330FCC1AB4038419404C /* PBXTargetDependency */, + 37008CECA85E062E163E323B0DBF02EA /* PBXTargetDependency */, ); name = "Pods-CustomKeyboard"; productName = Pods_CustomKeyboard; productReference = 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */; productType = "com.apple.product-type.framework"; }; + E79E29F55A2453370D27112480FCF6A2 /* JXCategoryView-JXCategoryView */ = { + isa = PBXNativeTarget; + buildConfigurationList = F688458307583BA2FC79B1282B37D611 /* Build configuration list for PBXNativeTarget "JXCategoryView-JXCategoryView" */; + buildPhases = ( + 17BD1ACA0E8D92E2DF87A056B0D17AF7 /* Sources */, + D322DF9855308A001A820F202DCCBA75 /* Frameworks */, + 570AFF54CA367A3A6FC6B25F8F89E223 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "JXCategoryView-JXCategoryView"; + productName = JXCategoryView; + productReference = BB4F011171FCB76B1AEBE390F843E930 /* JXCategoryView-JXCategoryView */; + productType = "com.apple.product-type.bundle"; + }; F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */ = { isa = PBXNativeTarget; buildConfigurationList = 1CF7CA11A791652D6975B2EDE2FC6719 /* Build configuration list for PBXNativeTarget "DZNEmptyDataSet" */; @@ -3207,7 +3796,7 @@ mainGroup = CF1408CF629C7361332E53B88F7BD30C; minimizedProjectReferenceProxies = 0; preferredProjectObjectVersion = 77; - productRefGroup = 92804E5AAC2424AC0EE6ED237A2C4B6F /* Products */; + productRefGroup = 1CD312D2E666224315BB46AF04231D5D /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -3216,6 +3805,10 @@ F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */, 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */, 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */, + 8BEAFAA726C1965864B79B4B441AA513 /* JXCategoryView */, + E79E29F55A2453370D27112480FCF6A2 /* JXCategoryView-JXCategoryView */, + C4E1020AF425614337737213AA26DBD5 /* JXPagingView */, + 16704C6B67439DA959DB043702C75A7A /* JXPagingView-JXPagerView */, 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */, 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */, 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */, @@ -3234,13 +3827,21 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 0C2C6D22B659FD9FBD84420DAAD00401 /* Resources */ = { + 0D07E8D675635C881CCB2DF69C6E7629 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; + 104904C13744D5C7625092B68974D183 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6F3A575F2B9E1CEB696248B9CB96F357 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 1B0BF833FF02F4B145B7A6461734A0F1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3263,6 +3864,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 3A5A6604A2DC218F056C1D04F3DB43CD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5DF02901155278BE109057E17C7C1D99 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 44B3C0D7DDF289331B7732E9D87126DB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3280,18 +3889,49 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8DF763B35C7183D33FE173339E261549 /* Resources */ = { + 570AFF54CA367A3A6FC6B25F8F89E223 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 95CCA80D6790CF64F974A53E815420F8 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5C89912961D7B3B99680563233DBEA04 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 91AFF41167C616A131F2E24563B8DDD8 /* JXPagingView-JXPagerView in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 79F5ED799353ADB8EFED141CD4F84A84 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC078D5CD76868BDE0F67BBEAFFEA217 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 848FF7A10EE5C029902ADD3C55750C9F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 918668F825F51C44A44BDA0D6E26DE0A /* Resources */ = { + 8AF3FF976A1DE9EA4258B9F5B490733A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B61728EFE4A95013413ED38D371A33B0 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8DF763B35C7183D33FE173339E261549 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F7815C2FBD9D954D0C2F3BF0BD6EB813 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3309,21 +3949,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BA262B4873E56403AF0269D5EAEE5E15 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D23FFCFDDE4E84FB67B476373DD24257 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 719245E09E34B28240B8144650B43701 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; D518E37278D48F046F4C76EA0E72D5AC /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3331,6 +3956,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D6BF70856976374C62C62EF42CD1B449 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A1C02A0C13BE4A139BC38BBE20217FA2 /* JXCategoryView-JXCategoryView in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; E664BDFE0B44D742638A43686ACB3008 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3345,14 +3978,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - FA9EC5705AC7C692DDFA718CB01BC202 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E8BB439BCA39F3ED41FF185D6A61EA98 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; FD378D1F5CAFCC3C5D44074788563A1C /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3372,13 +3997,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 086E6CDD1E962F391C206FAE038E1A7E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 090A96B9D443BC38DD5A251A9EE646AE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3477,6 +4095,34 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 17BD1ACA0E8D92E2DF87A056B0D17AF7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1FAEC8C9D1FFBAF2D815698CBBF41366 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 23F7311CB240548CE74F13BA30E805B5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2BCD1AC59060560FEAF74FFFB66F0F9F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 3EA749E8A97310551F543948A8C92475 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3508,34 +4154,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 668D3C1EB9C4184AD9F85DFC1B3DDAAC /* Sources */ = { + 6F3E38196FED4BD0677C98E1E0C6C80C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7C1E7BC9142AEAACC37BBFA5736E21E6 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8B9B9EACA282C583FCF9A3B8E49DD830 /* LSTTimer.m in Sources */, - 18CDCA86F129B7251D21E8F3FF8656B9 /* LSTTimer-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 81DB13C71F9ED4A7F16A03B68EE00629 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 86BA6B9707AE3B1250A31F523EB8DA55 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 059E13B65EC846A6B5D5F5A68D26D194 /* Pods-keyBoard-dummy.m in Sources */, + 3BF23DD02B40D2A2E98FF9D042A5AF4E /* Pods-keyBoard-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3611,6 +4234,67 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 8F5978DBE3D91F845AFFF79059502540 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9E7FD4501C2EF7FBF3379D21E46DB07B /* JXCategoryBaseCell.m in Sources */, + 940CD731A431894B0EE4E3283E6F352F /* JXCategoryBaseCellModel.m in Sources */, + 620A0FFFDE5AEF215E28135566106BA4 /* JXCategoryBaseView.m in Sources */, + BE7F6E08A9BDA2EF6FA625EB5CD685EC /* JXCategoryCollectionView.m in Sources */, + E038F02D08E33A673A360ED34648A027 /* JXCategoryDotCell.m in Sources */, + D31558927DE3F62D1BB1FC416E6F237D /* JXCategoryDotCellModel.m in Sources */, + 20FBBC12322412237D48D3695D98E043 /* JXCategoryDotView.m in Sources */, + EC9B8D81AEAF11E16149869246F7D4C1 /* JXCategoryFactory.m in Sources */, + F847E3C26E5AC43CD73364AD3DF49AFE /* JXCategoryImageCell.m in Sources */, + CE2AF36EBB17CDA2652CBADD4A7ABF82 /* JXCategoryImageCellModel.m in Sources */, + 266352AA446DAE8C9502E83810C174D9 /* JXCategoryImageView.m in Sources */, + 6630C0B541E50903F9AD81FD847CFE7A /* JXCategoryIndicatorBackgroundView.m in Sources */, + 6BF5DB46D42D8B9D536C870EC77BF4A3 /* JXCategoryIndicatorBallView.m in Sources */, + 1C0FA6017CAD67C1A80FFA70024FC6FD /* JXCategoryIndicatorCell.m in Sources */, + 2EDA227454079ED3F6371BF34AFD4735 /* JXCategoryIndicatorCellModel.m in Sources */, + 579DDC4FE78455D88E0350C3268D96C4 /* JXCategoryIndicatorComponentView.m in Sources */, + C922BFFF717515E5878910DF4078CE1E /* JXCategoryIndicatorDotLineView.m in Sources */, + D93EA925FC24665584B3653514A56706 /* JXCategoryIndicatorImageView.m in Sources */, + 3B62431BEF820E7FC779F344AB2A1D17 /* JXCategoryIndicatorLineView.m in Sources */, + 8128D2BD3AC890F75E7AD243AA104C13 /* JXCategoryIndicatorParamsModel.m in Sources */, + 0C312924F0A07471A1D04AD15D32BF3A /* JXCategoryIndicatorRainbowLineView.m in Sources */, + D08901EA319887BE6D694F8333BE8D1F /* JXCategoryIndicatorTriangleView.m in Sources */, + AF17C7BD3344504E243E234004B4593E /* JXCategoryIndicatorView.m in Sources */, + F43396B5CB23638E5509B3ED61AE6192 /* JXCategoryListContainerRTLCell.m in Sources */, + D0E37358C3DCF2A8A572C4F38BB0569B /* JXCategoryListContainerView.m in Sources */, + C22BFD04EAB76981E7F112D57A1F5E79 /* JXCategoryNumberCell.m in Sources */, + E4B688B8A0D07AFB883A52250CA874A1 /* JXCategoryNumberCellModel.m in Sources */, + 020FEDA58170EE1ABDF9E268D373CF4F /* JXCategoryNumberView.m in Sources */, + 79701CF51014A7C02D810F9DAEFE6D79 /* JXCategoryTitleCell.m in Sources */, + 4ECE7F80A917130DE4045E25D741EAF9 /* JXCategoryTitleCellModel.m in Sources */, + 8FF4E9A492CA258F45C0BC51F6F69650 /* JXCategoryTitleImageCell.m in Sources */, + AD395F6BD7F53258A431E9479D07C6AF /* JXCategoryTitleImageCellModel.m in Sources */, + 91BEBD471C408E6C72763AFB6926242B /* JXCategoryTitleImageView.m in Sources */, + 93E2C24501FAE3C3B886B9879786EF22 /* JXCategoryTitleVerticalZoomCell.m in Sources */, + E42D6EF120A5C17DA2F6FD6473CE7E7A /* JXCategoryTitleVerticalZoomCellModel.m in Sources */, + EEF0BF7E53148EB20BED242061BDC5ED /* JXCategoryTitleVerticalZoomView.m in Sources */, + A325C7E5098EB5641EF49D279EA9EF03 /* JXCategoryTitleView.m in Sources */, + 8B990235A0006E1F9C1E6F68AD81F77C /* JXCategoryView-dummy.m in Sources */, + 2395CE03CE80FC5F9A7F61C48270618B /* JXCategoryViewAnimator.m in Sources */, + 2175B894008D948C762468307BA677B8 /* RTLManager.m in Sources */, + 96C1D55B3436C158B4CBB4E3D0AE53EE /* UIColor+JXAdd.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9F03A6C166C310270FB3F4AFE9D7573D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E0DB14976CA6F6E604FD5E4EDF3378E7 /* JXPagerListContainerView.m in Sources */, + 6C76DB1B99B98C951F687DE80FE6F463 /* JXPagerListRefreshView.m in Sources */, + 0D6EFFD314E70C1E547970D8CEF11131 /* JXPagerMainTableView.m in Sources */, + 6204F3E4E75772BB6CAB13CD53D9D93E /* JXPagerSmoothView.m in Sources */, + EE101918DFCDC1D6728BF910DB5AF29A /* JXPagerView.m in Sources */, + 05EEA40D460AB9A5A6E8D33AAAEF801E /* JXPagingView-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; A29E3C9E62E3E86A20CAE1E7632313FC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3643,6 +4327,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D505A0E271350076957F6F32073544D2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; DA0B6A6F9B3EDF226BF081DAC7E777E7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3721,181 +4412,197 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FEEB3280DD885E20A0F8EE0C8798CAB2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ADAB2E78F005C6413F9F3699D60CF727 /* LSTTimer.m in Sources */, + 4E0FBD829EB07B8D5D2A5F6115457BE7 /* LSTTimer-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 31B285B5CDDD3D0B75165B7E60875540 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AFNetworking; - target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = 077F2AA4B2BF11943204812B533088F5 /* PBXContainerItemProxy */; - }; - 579B996E9942825FE7A26DE3FF3B1783 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = LSTTimer; - target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; - targetProxy = FBA8C5046E304FE4BB90D14C4A529288 /* PBXContainerItemProxy */; - }; - 610CFF14AC9EFAF66F9721E282831AE2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MJExtension; - target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; - targetProxy = 2F4CEC846087978E04621E966B9DFF49 /* PBXContainerItemProxy */; - }; - 706669DE3EF507E6ED7756D757CB0803 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "SDWebImage-SDWebImage"; - target = 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */; - targetProxy = 2307258CB6BB82D24A7CA6B7975B1292 /* PBXContainerItemProxy */; - }; - 74D6D9BB82D0FFCAFC06C440BDAB1F50 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FLAnimatedImage; - target = 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */; - targetProxy = B57744F595F66358CF4816DD4793C8A6 /* PBXContainerItemProxy */; - }; - 85C2754009A231976C78A0DF13CED0E3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MJExtension; - target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; - targetProxy = 02DDA276267B945D512FC6AF69590E37 /* PBXContainerItemProxy */; - }; - 983600180BD0020E52A5E0C267AB52CE /* PBXTargetDependency */ = { + 004C87AF28627224BAF0F49A32B4B934 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Masonry; target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = 9F4B8D116BF04BD4F5A8C8D781DA5D62 /* PBXContainerItemProxy */; + targetProxy = F121CDAC85A6DCADB4F82D081323C7C5 /* PBXContainerItemProxy */; }; - A1343B6079DE025DBF916F7B81708222 /* PBXTargetDependency */ = { + 2DE7668F0442330FCC1AB4038419404C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DZNEmptyDataSet; - target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; - targetProxy = B12FC64FF473558C45076A0CEB7D47D1 /* PBXContainerItemProxy */; + name = MJExtension; + target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; + targetProxy = 79523FDE8CA807F68BC7DF678B3199B5 /* PBXContainerItemProxy */; }; - A5740B9DC31236AD3E4CAF5F1E336987 /* PBXTargetDependency */ = { + 33D09C01EF80EA558D42C96911714DFF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = 398B300FAF20E4012B54089285C6D68D /* PBXContainerItemProxy */; + }; + 37008CECA85E062E163E323B0DBF02EA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Masonry; + target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; + targetProxy = 39F2619DE86130266FA45394FE5C260D /* PBXContainerItemProxy */; + }; + 3A33DC80646EE1FEC3F5A81D6D88094E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = LookinServer; target = 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */; - targetProxy = 92CA63B3B20D5FAC965226A6920F1BE4 /* PBXContainerItemProxy */; + targetProxy = AE8D5D579627FAFF8F43B7CEFE066FF2 /* PBXContainerItemProxy */; }; - A707874A71DF7C81F9119F9728626E2F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = HWPanModal; - target = 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */; - targetProxy = 5ABBB136A0AE8EE61D30E75F4BE8572E /* PBXContainerItemProxy */; - }; - AC48B21768E35ECFC605F51956C6C305 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = LSTPopView; - target = 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */; - targetProxy = 01F386055DA043124AA00537EC691754 /* PBXContainerItemProxy */; - }; - ADBF59F419A1769B237B2671E4975D51 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MBProgressHUD; - target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; - targetProxy = 5F98F8D71CDA25588EE186F7253F367F /* PBXContainerItemProxy */; - }; - B58F0F72931D247BC05C471A0226C5F1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "MJExtension-MJExtension"; - target = B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */; - targetProxy = 80217EE617C295C4C81AA1DCF5D85E7E /* PBXContainerItemProxy */; - }; - CBD95011A36DFDA2919E5B3F37459EAE /* PBXTargetDependency */ = { + 3A364CBA383FC741F9B9507BAD524A1F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Bugly; target = 4A68CFD979D413A619DF631BB121D98F /* Bugly */; - targetProxy = 1C0C3A0BDFA6BDE041DC3D513C5650B3 /* PBXContainerItemProxy */; + targetProxy = 4262F1710F9698DFC113026BA2E31021 /* PBXContainerItemProxy */; }; - D2A120E24B87240E573F8B0FBD3FA160 /* PBXTargetDependency */ = { + 3B95059A3ABF817D0636F90C4FE24A57 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DZNEmptyDataSet; - target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; - targetProxy = 5ECDD709038035A28044669BFFE06267 /* PBXContainerItemProxy */; + name = JXPagingView; + target = C4E1020AF425614337737213AA26DBD5 /* JXPagingView */; + targetProxy = 6DB0C5460735B353E7FB2A7058DEB8F3 /* PBXContainerItemProxy */; }; - D2AEA24D136504A1C3C238158CDC14AD /* PBXTargetDependency */ = { + 5B8D2BAFD03C6848DC5CAC776971023C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = LSTTimer; - target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; - targetProxy = 1B50A2D51242B1B501E7A8FE17921A95 /* PBXContainerItemProxy */; + name = LSTPopView; + target = 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */; + targetProxy = 0A1A465C500FD28324C60FF2111766F1 /* PBXContainerItemProxy */; }; - D504C3B6398A702186D49FE4B778051E /* PBXTargetDependency */ = { + 67D06D25CF9C7EFF394097D2AFFD9DF9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = AFNetworking; - target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = 7FA3D0787FAE50268674AAEE62D45295 /* PBXContainerItemProxy */; + name = MJExtension; + target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; + targetProxy = 4E0DD9B103CA9ED24B513A6147DEDB93 /* PBXContainerItemProxy */; }; - DE3981E6419BE407CF93074BF535E2F5 /* PBXTargetDependency */ = { + 7244D798B35A90122DF5F2EBC2C25073 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "MJRefresh-MJRefresh.Privacy"; target = B26054DF1DEA11585A231AF6D1D80D5E /* MJRefresh-MJRefresh.Privacy */; - targetProxy = 9946EDF6CEC75931EE3BCF2D4DC70585 /* PBXContainerItemProxy */; + targetProxy = C279C7A3A264FD3391C8C73B80D3A426 /* PBXContainerItemProxy */; }; - E5D2D0ED9FB1C4A09640F1C1E02963E1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Masonry; - target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = DE9FD566A2ADE13D0844AD68D51F7EAF /* PBXContainerItemProxy */; - }; - EF1B1186931F596FE79ABDD95C3DB3DB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SDWebImage; - target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; - targetProxy = EC0084E5D95CC67D69BF4291415A7EE1 /* PBXContainerItemProxy */; - }; - F59B858EFCDFF0A159DB925DA2871952 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MBProgressHUD; - target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; - targetProxy = BDE883F6A985897AA115496E325146FA /* PBXContainerItemProxy */; - }; - FBD20C5E1BFF0138D14604A3E9892BAE /* PBXTargetDependency */ = { + 75023E301D2D56786B69F7BD1B998E06 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MJRefresh; target = 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */; - targetProxy = 95E55F6C03A77816AFA1A59466D8CD82 /* PBXContainerItemProxy */; + targetProxy = 9E88A4DD9EF59B6718F28ECC701DF551 /* PBXContainerItemProxy */; + }; + 7986360E8EC5F57AE4012FDDB8A6D701 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MBProgressHUD; + target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; + targetProxy = F9F28B72CAD6F7E15F267C3F8D685EA8 /* PBXContainerItemProxy */; + }; + 82007E5716B41B7A56E454204B106954 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "JXPagingView-JXPagerView"; + target = 16704C6B67439DA959DB043702C75A7A /* JXPagingView-JXPagerView */; + targetProxy = C389A17163C51915594BC17BC8BF9DE0 /* PBXContainerItemProxy */; + }; + 8DBC9C82D4F645E38F5388E4EC6F8837 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DZNEmptyDataSet; + target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; + targetProxy = 6FA747ECA11691BE7229C287223E399A /* PBXContainerItemProxy */; + }; + A036241AE2FD9088F99D8A60AFCD1514 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LSTTimer; + target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; + targetProxy = 0CEF032AE3DE8459AABC366D5EAD57AC /* PBXContainerItemProxy */; + }; + A8CFE4713F435C9FF4AA9FA8D460F3A7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SDWebImage; + target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; + targetProxy = 803F302DC5C2EA85B4CBBDCD27A43286 /* PBXContainerItemProxy */; + }; + B48CA5483F83ECB025E2CF88895F910F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = HWPanModal; + target = 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */; + targetProxy = DB3A9F97FFF5759DFB4E243D0C12B290 /* PBXContainerItemProxy */; + }; + BFFE20AC77F2320185030DE7FAF95A94 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DZNEmptyDataSet; + target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; + targetProxy = 36EAD987437C03F015C383238BF3C1B7 /* PBXContainerItemProxy */; + }; + C11D50FE786831BFAA5FB3ED4D276FC5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "JXCategoryView-JXCategoryView"; + target = E79E29F55A2453370D27112480FCF6A2 /* JXCategoryView-JXCategoryView */; + targetProxy = 7B014B80CCB8DDBC4906B5D8D3002093 /* PBXContainerItemProxy */; + }; + C5827E035098A10C8DC173D8807B0496 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MBProgressHUD; + target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; + targetProxy = 686994C0035F8FADAF6A6C4E910239B2 /* PBXContainerItemProxy */; + }; + C8CAA3DF1F34F4917BE346E82645B672 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LSTTimer; + target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; + targetProxy = 2635D33260052793F7319FAC3997C416 /* PBXContainerItemProxy */; + }; + C9B3D25C71255E9DFCE9A741B4BFF3BA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = EF1EC9615D03559D465834BE2D7F527F /* PBXContainerItemProxy */; + }; + CA5A82B04166A988C7834D6E5F130D24 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "MJExtension-MJExtension"; + target = B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */; + targetProxy = D89A563DA511A2A01EFDD5299EBCEE42 /* PBXContainerItemProxy */; + }; + D1DA99819466A8666489AD8ABE8C04A5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FLAnimatedImage; + target = 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */; + targetProxy = CE0514BD8BDC97E49F2A38CD065EDCFC /* PBXContainerItemProxy */; + }; + E3CE26F82AC9FA20A1C696AD05CBE607 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = JXCategoryView; + target = 8BEAFAA726C1965864B79B4B441AA513 /* JXCategoryView */; + targetProxy = 648F8AAC5DF3351FEF10F1C29B3E11DF /* PBXContainerItemProxy */; + }; + E918590C6B33D5799C74C34CD2BB5722 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "SDWebImage-SDWebImage"; + target = 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */; + targetProxy = B296FC77430103DDB971813228C8D4EF /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 08509768DC98A9784BD41AE1B13133E6 /* Debug */ = { + 056C2C119D321A1782845A1C09FB3561 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9CE0E20C019F9D3D3297E4BD9E854459 /* MJExtension.debug.xcconfig */; + baseConfigurationReference = 23FBEE27BD56B7C8EB3849A2221CDA65 /* JXPagingView.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; - IBSC_MODULE = MJExtension; - INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJExtension; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXPagingView"; + IBSC_MODULE = JXPagingView; + INFOPLIST_FILE = "Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = JXPagerView; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; - name = Debug; - }; - 139C4D5063C989448E1492598E6DCB05 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 46BD456754A833616748AAFE8A1AF2F2 /* MJRefresh.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; - IBSC_MODULE = MJRefresh; - INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJRefresh.Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; + name = Release; }; 1A69165A21A7A1CC42A38CF8ADE98215 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 506D2884030F20EC06A10DCFA7347584 /* LookinServer.release.xcconfig */; + baseConfigurationReference = B8E77F018E5BE1F8C021ACB0978497F6 /* LookinServer.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3970,48 +4677,9 @@ }; name = Release; }; - 2A478E3BD7684211516AEB6E73031711 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; 2D1085CA7BD144CABF012FC10C6C9120 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 04A09AD12EF8C816FA9546838C3F429E /* Masonry.debug.xcconfig */; + baseConfigurationReference = 93A6F66AA21D4921B2C52643DAEF998F /* Masonry.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4046,43 +4714,9 @@ }; name = Debug; }; - 2DD4779BD119802B7DDE3163EB446D6F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 107E86B9F22190515234220978E5F1C3 /* MJExtension.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; - IBSC_MODULE = MJExtension; - INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJExtension; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 30665B5D85CB0DE44CCE0EF52CECD3E6 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5157E3FB4160ED0759A1F38EFDEC5877 /* MJRefresh.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; - IBSC_MODULE = MJRefresh; - INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJRefresh.Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; 35044A57510DB3F4E442A9C16E980E4A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1FABCE7CC795C2D70EA3AAEE06EDD595 /* DZNEmptyDataSet.debug.xcconfig */; + baseConfigurationReference = 6315771A902975A20B41342DD5234115 /* DZNEmptyDataSet.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4117,9 +4751,63 @@ }; name = Debug; }; + 4414117132ADFB2C5F5B1E433FC53228 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7A9939FAA68717870D107439064CEFF4 /* JXCategoryView.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXCategoryView"; + IBSC_MODULE = JXCategoryView; + INFOPLIST_FILE = "Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = JXCategoryView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 4949308A42E0BAB6B0B815F496FC5869 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A76F5B96F548930505FADC6CE9430C2D /* LSTTimer.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; + PRODUCT_MODULE_NAME = LSTTimer; + PRODUCT_NAME = LSTTimer; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 49CEA33268972C89BF290FCBF8F9DFC0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1FABA21668D0F7EA5314EF00C93346A5 /* DZNEmptyDataSet.release.xcconfig */; + baseConfigurationReference = 7755C313C99E29481B2A9849C31152BE /* DZNEmptyDataSet.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4155,9 +4843,26 @@ }; name = Release; }; + 49F55F836D397AB94087D90F9BE32CB2 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 580E2C96AABF74B3FD0C199D09864253 /* MJRefresh.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; + IBSC_MODULE = MJRefresh; + INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJRefresh.Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; 51753BD6FE635BB9421BCA4C05F63C6A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5157E3FB4160ED0759A1F38EFDEC5877 /* MJRefresh.release.xcconfig */; + baseConfigurationReference = 580E2C96AABF74B3FD0C199D09864253 /* MJRefresh.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4194,9 +4899,64 @@ }; name = Release; }; + 53552C84CADFAFE2D92EA24C81A4B387 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D7708C3743D0A5955D7A50F4A72818A5 /* JXCategoryView.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXCategoryView"; + IBSC_MODULE = JXCategoryView; + INFOPLIST_FILE = "Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = JXCategoryView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 571314BC8A84B1CED724D0AFB1CED826 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7A9939FAA68717870D107439064CEFF4 /* JXCategoryView.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/JXCategoryView/JXCategoryView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/JXCategoryView/JXCategoryView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/JXCategoryView/JXCategoryView.modulemap"; + PRODUCT_MODULE_NAME = JXCategoryView; + PRODUCT_NAME = JXCategoryView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; 614F7847ADAD2F1EEC9E48FAEC955108 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 46BD456754A833616748AAFE8A1AF2F2 /* MJRefresh.debug.xcconfig */; + baseConfigurationReference = 0B18274068E3388B3808CDDEB810ECFA /* MJRefresh.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4234,7 +4994,7 @@ }; 618AB008538F74AAF983C04297207BB6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EA60319FCBE8ADFF00A52058DBE7C157 /* LookinServer.debug.xcconfig */; + baseConfigurationReference = E654A0C1F961A76933C784134A3D98E4 /* LookinServer.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4268,9 +5028,26 @@ }; name = Debug; }; + 62792DAC98F4B79EB2EFE6B1EBB47A34 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0B18274068E3388B3808CDDEB810ECFA /* MJRefresh.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; + IBSC_MODULE = MJRefresh; + INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJRefresh.Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; 63708B35D08B13BC40AB51386020974A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 779E8085B0101C4CB480F794DECA558B /* HWPanModal.release.xcconfig */; + baseConfigurationReference = CA18A067DCACA93C5FD4591EBC943217 /* HWPanModal.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4306,9 +5083,26 @@ }; name = Release; }; + 674DB84A106C256BD3A902B6559D9288 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E392F0E432282B33F9A7A49E5F6DFDE1 /* SDWebImage.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; + IBSC_MODULE = SDWebImage; + INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = SDWebImage; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; 67BAB382C3420CD62CB414CAA4D8A5B1 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DDD6B4DA641B2F94F2D426AC2D4A5E7E /* FLAnimatedImage.release.xcconfig */; + baseConfigurationReference = C06B04E0ABEA41660753A9D5F58572EE /* FLAnimatedImage.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4344,6 +5138,23 @@ }; name = Release; }; + 751527A9729DD8ADD668EBD1AFCD16A0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FFC39DF551599EB371EA8F85F9A9DDCF /* MJExtension.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; + IBSC_MODULE = MJExtension; + INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; 7BB5AE2225500DE9658B6277FED45BCD /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 0D6215D1BCCE125B8DF73E38013CBBDC /* Pods-CustomKeyboard.debug.xcconfig */; @@ -4383,6 +5194,44 @@ }; name = Debug; }; + 869A260EDB31DBC8F1FD513756A77A93 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 29485CC6A452A36B28B71FA9AC5A4CE4 /* JXPagingView.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/JXPagingView/JXPagingView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/JXPagingView/JXPagingView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/JXPagingView/JXPagingView.modulemap"; + PRODUCT_MODULE_NAME = JXPagingView; + PRODUCT_NAME = JXPagingView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4449,9 +5298,48 @@ }; name = Debug; }; + 8EAC2F834160F0D756B3363236E0940A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 23FBEE27BD56B7C8EB3849A2221CDA65 /* JXPagingView.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/JXPagingView/JXPagingView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/JXPagingView/JXPagingView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/JXPagingView/JXPagingView.modulemap"; + PRODUCT_MODULE_NAME = JXPagingView; + PRODUCT_NAME = JXPagingView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; 8F481C1C1CF7C89F42A9EFE335DEA2BC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A16C385BAD6F9C544C59D31A650946CC /* LSTPopView.release.xcconfig */; + baseConfigurationReference = B79CB4484CF793AF65C86B424D955922 /* LSTPopView.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4487,44 +5375,6 @@ }; name = Release; }; - 92C888FE2C8775DD87E819591F638CAA /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CB1BEFB1C0257A74B80CAF80DB336894 /* LSTTimer.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; - PRODUCT_MODULE_NAME = LSTTimer; - PRODUCT_NAME = LSTTimer; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; 9E406C6AAF85E580207CD97B0044DEAB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4589,7 +5439,7 @@ }; 9E9FB1E032B56896F9380263D45A0F9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 107E86B9F22190515234220978E5F1C3 /* MJExtension.release.xcconfig */; + baseConfigurationReference = 04A5DA1EDA3B5149D813E6B1D2B5ADDD /* MJExtension.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4628,7 +5478,7 @@ }; 9F519E5162C0E51D10B7E999E2FD0125 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 218908923AE7877657207C72921D322E /* SDWebImage.release.xcconfig */; + baseConfigurationReference = E392F0E432282B33F9A7A49E5F6DFDE1 /* SDWebImage.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4664,9 +5514,46 @@ }; name = Release; }; + A04019026E1B09655264B132BF5345A4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D7708C3743D0A5955D7A50F4A72818A5 /* JXCategoryView.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/JXCategoryView/JXCategoryView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/JXCategoryView/JXCategoryView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/JXCategoryView/JXCategoryView.modulemap"; + PRODUCT_MODULE_NAME = JXCategoryView; + PRODUCT_NAME = JXCategoryView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; B04295D726C1883ADA40A304483D7E33 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0EE4E19A07BCCCF8BDCE77F2A5966D55 /* SDWebImage.debug.xcconfig */; + baseConfigurationReference = 2252400966339192E785E1533182460B /* SDWebImage.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4701,9 +5588,65 @@ }; name = Debug; }; + B0474165CD8F05374CFDCCDA05985E9E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2252400966339192E785E1533182460B /* SDWebImage.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; + IBSC_MODULE = SDWebImage; + INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = SDWebImage; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + B1990C10B74E98AD1A318202655814D4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + INFOPLIST_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; B26FBB655ABB114E4C0D589843814D6C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 090BA40A2CB6D8D73A78895D821E7E93 /* Bugly.release.xcconfig */; + baseConfigurationReference = 956C8FF42F553F12124DED23E19FE31D /* Bugly.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -4719,9 +5662,26 @@ }; name = Release; }; + B413A840D435DD0DE4EA09E77C5232AA /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 29485CC6A452A36B28B71FA9AC5A4CE4 /* JXPagingView.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXPagingView"; + IBSC_MODULE = JXPagingView; + INFOPLIST_FILE = "Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = JXPagerView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; B429B9740B8EB5894C5BF953D9590A46 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C8974089710AB7F8A65D77241AA70557 /* FLAnimatedImage.debug.xcconfig */; + baseConfigurationReference = 36A28302FD0C37C0A56E64EA97977A8E /* FLAnimatedImage.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4756,7 +5716,228 @@ }; name = Debug; }; - B60B7F89F4C4C73830498E2EEE95F8BB /* Release */ = { + BCD70A0BB22D0C72BAF7207A7D4F44BD /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 648C72C63334BCDFD466058863FCDAC9 /* MBProgressHUD.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD.modulemap"; + PRODUCT_MODULE_NAME = MBProgressHUD; + PRODUCT_NAME = MBProgressHUD; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + BDD02D9903A09C2C9D362C7536416CFB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C6B15D5B29642260AB882050F51A8AE5 /* HWPanModal.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/HWPanModal/HWPanModal-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/HWPanModal/HWPanModal-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/HWPanModal/HWPanModal.modulemap"; + PRODUCT_MODULE_NAME = HWPanModal; + PRODUCT_NAME = HWPanModal; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + BE0CDEB7BE0A402663AFCC2111742430 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 035807D7A9181D8E0DF6FAF1E2D6B33C /* MBProgressHUD.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD.modulemap"; + PRODUCT_MODULE_NAME = MBProgressHUD; + PRODUCT_NAME = MBProgressHUD; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + C9E0A2B5A2A51C141248D224C0567EBC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 294754F45B0BF3519369080425B4F2FD /* LSTTimer.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; + PRODUCT_MODULE_NAME = LSTTimer; + PRODUCT_NAME = LSTTimer; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + CBAFED52B4B51F600FAF2141BA449F2E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DDA8FA3EA27827F124700F1B6176E4CE /* Bugly.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + CEE7FEC0A1B23DE7053203A448EEB294 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8A6F594F279129456C02C7701DE5EDC3 /* AFNetworking.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/AFNetworking/AFNetworking-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/AFNetworking/AFNetworking.modulemap"; + PRODUCT_MODULE_NAME = AFNetworking; + PRODUCT_NAME = AFNetworking; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + CFF1A479BBAF93B993D005A4C4B2808E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 04A5DA1EDA3B5149D813E6B1D2B5ADDD /* MJExtension.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; + IBSC_MODULE = MJExtension; + INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + D02A5C00C024FCD02DABC63A4DA783E8 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.release.xcconfig */; buildSettings = { @@ -4796,229 +5977,9 @@ }; name = Release; }; - BAC0E29E75929E3F1EBBE8FCB244F722 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8769FA429275709C356B4C8A5DDEC26E /* LSTTimer.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; - PRODUCT_MODULE_NAME = LSTTimer; - PRODUCT_NAME = LSTTimer; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - BCD70A0BB22D0C72BAF7207A7D4F44BD /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B0B0D3A4B05EE4A8AA2F56AF68EA3ADF /* MBProgressHUD.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD.modulemap"; - PRODUCT_MODULE_NAME = MBProgressHUD; - PRODUCT_NAME = MBProgressHUD; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - BDD02D9903A09C2C9D362C7536416CFB /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F2C18394D397CD373A1F089F0924F724 /* HWPanModal.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/HWPanModal/HWPanModal-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/HWPanModal/HWPanModal-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/HWPanModal/HWPanModal.modulemap"; - PRODUCT_MODULE_NAME = HWPanModal; - PRODUCT_NAME = HWPanModal; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - BE0CDEB7BE0A402663AFCC2111742430 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2B7A32CBCCAE8AB83DA3CB95667709E3 /* MBProgressHUD.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD.modulemap"; - PRODUCT_MODULE_NAME = MBProgressHUD; - PRODUCT_NAME = MBProgressHUD; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - CBAFED52B4B51F600FAF2141BA449F2E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EF66633D19CE6F4EBFF2331E624219EC /* Bugly.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - CEE7FEC0A1B23DE7053203A448EEB294 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9118BCB61472BB3349D3BC26BBAA9EE0 /* AFNetworking.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/AFNetworking/AFNetworking-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/AFNetworking/AFNetworking.modulemap"; - PRODUCT_MODULE_NAME = AFNetworking; - PRODUCT_NAME = AFNetworking; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - CF142E310500F5E5BB783606035C0752 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 218908923AE7877657207C72921D322E /* SDWebImage.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; - IBSC_MODULE = SDWebImage; - INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = SDWebImage; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; D0AB0AEF4014B926FCD853D3AE0A370A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 72FF1B2D48227EDD9EB762579BA5D936 /* Masonry.release.xcconfig */; + baseConfigurationReference = 0B0EEEE5F23AC446F4729522F4FC7A73 /* Masonry.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5056,7 +6017,7 @@ }; DA533AA9B577872DAFB44EF2CF26C49A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 42D65971D9F40DBD6785D6A1D0AEBFBD /* AFNetworking.release.xcconfig */; + baseConfigurationReference = A697ED78520252C2C8CA71D13BA57F79 /* AFNetworking.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5094,7 +6055,7 @@ }; EC66105EE15F9DC9B6F20F58FB67957D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9CE0E20C019F9D3D3297E4BD9E854459 /* MJExtension.debug.xcconfig */; + baseConfigurationReference = FFC39DF551599EB371EA8F85F9A9DDCF /* MJExtension.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5132,7 +6093,7 @@ }; F48613BDFA945AC2A18363244F54E67C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0874A58BB3E268A75B1BD3D594CBAA2D /* LSTPopView.debug.xcconfig */; + baseConfigurationReference = D0317376A8F5B09CBBAC757A9410CF00 /* LSTPopView.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5167,26 +6128,27 @@ }; name = Debug; }; - FE5E9EA22284A509601F2785ED15C7E8 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0EE4E19A07BCCCF8BDCE77F2A5966D55 /* SDWebImage.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; - IBSC_MODULE = SDWebImage; - INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = SDWebImage; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 0C35983ABF9DEA95C8B29A7F8482E5AE /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B1990C10B74E98AD1A318202655814D4 /* Debug */, + D02A5C00C024FCD02DABC63A4DA783E8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 15624921AFB223858478F40D5FC30D8A /* Build configuration list for PBXNativeTarget "LSTTimer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4949308A42E0BAB6B0B815F496FC5869 /* Debug */, + C9E0A2B5A2A51C141248D224C0567EBC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 1CF7CA11A791652D6975B2EDE2FC6719 /* Build configuration list for PBXNativeTarget "DZNEmptyDataSet" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5214,15 +6176,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 33D6375648A0A6BF2A26AA104B964F82 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FE5E9EA22284A509601F2785ED15C7E8 /* Debug */, - CF142E310500F5E5BB783606035C0752 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5241,6 +6194,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 6245C5FFE40FC7DFDD2CA00871D0EA40 /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 62792DAC98F4B79EB2EFE6B1EBB47A34 /* Debug */, + 49F55F836D397AB94087D90F9BE32CB2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 773A22765B846DE10CADF4D2E77FE841 /* Build configuration list for PBXNativeTarget "JXPagingView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 869A260EDB31DBC8F1FD513756A77A93 /* Debug */, + 8EAC2F834160F0D756B3363236E0940A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 7CEB2E47380AD51987AA02ECD4DFBCD9 /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5250,24 +6221,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 7F4FDDAED424001F24F18A5ED96ABA7B /* Build configuration list for PBXNativeTarget "LSTTimer" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - BAC0E29E75929E3F1EBBE8FCB244F722 /* Debug */, - 92C888FE2C8775DD87E819591F638CAA /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 8C2F7BD693160E3E0554D67620B26026 /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2A478E3BD7684211516AEB6E73031711 /* Debug */, - B60B7F89F4C4C73830498E2EEE95F8BB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 91696E961FC8FD5A148C3EBCD7606569 /* Build configuration list for PBXNativeTarget "LSTPopView" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5295,15 +6248,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A6F832309249E7B81D966980E5A2AA5B /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 139C4D5063C989448E1492598E6DCB05 /* Debug */, - 30665B5D85CB0DE44CCE0EF52CECD3E6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; AAA1F8799DB68036C3BE983C05FAA2C7 /* Build configuration list for PBXNativeTarget "Masonry" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5322,6 +6266,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + B662A4FAD3B72B94AAE82FA4EF54A8A1 /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 751527A9729DD8ADD668EBD1AFCD16A0 /* Debug */, + CFF1A479BBAF93B993D005A4C4B2808E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D0D337F808B517A6F9A6D14C71CB5B25 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0474165CD8F05374CFDCCDA05985E9E /* Debug */, + 674DB84A106C256BD3A902B6559D9288 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; D47A0ADD8E3841C9330561C3E1664BB3 /* Build configuration list for PBXNativeTarget "HWPanModal" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5331,6 +6293,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + DB4C55F70CF73736D3687A2E620AC793 /* Build configuration list for PBXNativeTarget "JXCategoryView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A04019026E1B09655264B132BF5345A4 /* Debug */, + 571314BC8A84B1CED724D0AFB1CED826 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DDFDCCDD059A0AA2C5DEAA3588DE41A7 /* Build configuration list for PBXNativeTarget "JXPagingView-JXPagerView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B413A840D435DD0DE4EA09E77C5232AA /* Debug */, + 056C2C119D321A1782845A1C09FB3561 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; E7624967EDC883D80ED3DA81C495736B /* Build configuration list for PBXNativeTarget "LookinServer" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5349,11 +6329,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - FF5CD44349A7EEBF8A674DDD0F0574CF /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */ = { + F688458307583BA2FC79B1282B37D611 /* Build configuration list for PBXNativeTarget "JXCategoryView-JXCategoryView" */ = { isa = XCConfigurationList; buildConfigurations = ( - 08509768DC98A9784BD41AE1B13133E6 /* Debug */, - 2DD4779BD119802B7DDE3163EB446D6F /* Release */, + 53552C84CADFAFE2D92EA24C81A4B387 /* Debug */, + 4414117132ADFB2C5F5B1E433FC53228 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView-JXCategoryView.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView-JXCategoryView.xcscheme new file mode 100644 index 0000000..177a116 --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView-JXCategoryView.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView.xcscheme new file mode 100644 index 0000000..375271a --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView-JXPagerView.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView-JXPagerView.xcscheme new file mode 100644 index 0000000..d4e7bad --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView-JXPagerView.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView.xcscheme new file mode 100644 index 0000000..0d1b64d --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Target Support Files/JXCategoryView/JXCategoryView-Info.plist b/Pods/Target Support Files/JXCategoryView/JXCategoryView-Info.plist new file mode 100644 index 0000000..66116d5 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + ${PODS_DEVELOPMENT_LANGUAGE} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.6.8 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/JXCategoryView/JXCategoryView-dummy.m b/Pods/Target Support Files/JXCategoryView/JXCategoryView-dummy.m new file mode 100644 index 0000000..c2b08cd --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_JXCategoryView : NSObject +@end +@implementation PodsDummy_JXCategoryView +@end diff --git a/Pods/Target Support Files/JXCategoryView/JXCategoryView-prefix.pch b/Pods/Target Support Files/JXCategoryView/JXCategoryView-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Pods/Target Support Files/JXCategoryView/JXCategoryView-umbrella.h b/Pods/Target Support Files/JXCategoryView/JXCategoryView-umbrella.h new file mode 100644 index 0000000..db80d54 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView-umbrella.h @@ -0,0 +1,59 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "JXCategoryView.h" +#import "JXCategoryBaseCell.h" +#import "JXCategoryBaseCellModel.h" +#import "JXCategoryBaseView.h" +#import "JXCategoryCollectionView.h" +#import "JXCategoryFactory.h" +#import "JXCategoryIndicatorParamsModel.h" +#import "JXCategoryIndicatorProtocol.h" +#import "JXCategoryListContainerRTLCell.h" +#import "JXCategoryListContainerView.h" +#import "JXCategoryViewAnimator.h" +#import "JXCategoryViewDefines.h" +#import "UIColor+JXAdd.h" +#import "JXCategoryDotCell.h" +#import "JXCategoryDotCellModel.h" +#import "JXCategoryDotView.h" +#import "JXCategoryImageCell.h" +#import "JXCategoryImageCellModel.h" +#import "JXCategoryImageView.h" +#import "JXCategoryIndicatorBackgroundView.h" +#import "JXCategoryIndicatorBallView.h" +#import "JXCategoryIndicatorComponentView.h" +#import "JXCategoryIndicatorDotLineView.h" +#import "JXCategoryIndicatorImageView.h" +#import "JXCategoryIndicatorLineView.h" +#import "JXCategoryIndicatorRainbowLineView.h" +#import "JXCategoryIndicatorTriangleView.h" +#import "JXCategoryIndicatorCell.h" +#import "JXCategoryIndicatorCellModel.h" +#import "JXCategoryIndicatorView.h" +#import "JXCategoryNumberCell.h" +#import "JXCategoryNumberCellModel.h" +#import "JXCategoryNumberView.h" +#import "RTLManager.h" +#import "JXCategoryTitleCell.h" +#import "JXCategoryTitleCellModel.h" +#import "JXCategoryTitleView.h" +#import "JXCategoryTitleImageCell.h" +#import "JXCategoryTitleImageCellModel.h" +#import "JXCategoryTitleImageView.h" +#import "JXCategoryTitleVerticalZoomCell.h" +#import "JXCategoryTitleVerticalZoomCellModel.h" +#import "JXCategoryTitleVerticalZoomView.h" + +FOUNDATION_EXPORT double JXCategoryViewVersionNumber; +FOUNDATION_EXPORT const unsigned char JXCategoryViewVersionString[]; + diff --git a/Pods/Target Support Files/JXCategoryView/JXCategoryView.debug.xcconfig b/Pods/Target Support Files/JXCategoryView/JXCategoryView.debug.xcconfig new file mode 100644 index 0000000..4256a18 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView.debug.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/JXCategoryView +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/JXCategoryView/JXCategoryView.modulemap b/Pods/Target Support Files/JXCategoryView/JXCategoryView.modulemap new file mode 100644 index 0000000..fec3cc8 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView.modulemap @@ -0,0 +1,6 @@ +framework module JXCategoryView { + umbrella header "JXCategoryView-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/JXCategoryView/JXCategoryView.release.xcconfig b/Pods/Target Support Files/JXCategoryView/JXCategoryView.release.xcconfig new file mode 100644 index 0000000..4256a18 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView.release.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/JXCategoryView +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist b/Pods/Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist new file mode 100644 index 0000000..644e001 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + ${PODS_DEVELOPMENT_LANGUAGE} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.6.8 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/JXPagingView/JXPagingView-Info.plist b/Pods/Target Support Files/JXPagingView/JXPagingView-Info.plist new file mode 100644 index 0000000..08ba171 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + ${PODS_DEVELOPMENT_LANGUAGE} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.1.3 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/JXPagingView/JXPagingView-dummy.m b/Pods/Target Support Files/JXPagingView/JXPagingView-dummy.m new file mode 100644 index 0000000..6a26959 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_JXPagingView : NSObject +@end +@implementation PodsDummy_JXPagingView +@end diff --git a/Pods/Target Support Files/JXPagingView/JXPagingView-prefix.pch b/Pods/Target Support Files/JXPagingView/JXPagingView-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Pods/Target Support Files/JXPagingView/JXPagingView-umbrella.h b/Pods/Target Support Files/JXPagingView/JXPagingView-umbrella.h new file mode 100644 index 0000000..67650f6 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView-umbrella.h @@ -0,0 +1,21 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "JXPagerListContainerView.h" +#import "JXPagerListRefreshView.h" +#import "JXPagerMainTableView.h" +#import "JXPagerSmoothView.h" +#import "JXPagerView.h" + +FOUNDATION_EXPORT double JXPagingViewVersionNumber; +FOUNDATION_EXPORT const unsigned char JXPagingViewVersionString[]; + diff --git a/Pods/Target Support Files/JXPagingView/JXPagingView.debug.xcconfig b/Pods/Target Support Files/JXPagingView/JXPagingView.debug.xcconfig new file mode 100644 index 0000000..eefa6a8 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView.debug.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/JXPagingView +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/JXPagingView/JXPagingView.modulemap b/Pods/Target Support Files/JXPagingView/JXPagingView.modulemap new file mode 100644 index 0000000..5702dc0 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView.modulemap @@ -0,0 +1,6 @@ +framework module JXPagingView { + umbrella header "JXPagingView-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/JXPagingView/JXPagingView.release.xcconfig b/Pods/Target Support Files/JXPagingView/JXPagingView.release.xcconfig new file mode 100644 index 0000000..eefa6a8 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView.release.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/JXPagingView +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist b/Pods/Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist new file mode 100644 index 0000000..5b5034b --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + ${PODS_DEVELOPMENT_LANGUAGE} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + BNDL + CFBundleShortVersionString + 2.1.3 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown index 2a72233..4a433e6 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown @@ -87,6 +87,56 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## JXCategoryView + +MIT License + +Copyright (c) 2018 暴走的鑫鑫 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +## JXPagingView + +MIT License + +Copyright (c) 2018 暴走的鑫鑫 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## LSTPopView Copyright (c) 2020 490790096@qq.com diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist index 2a65449..446a6f9 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist @@ -122,6 +122,68 @@ SOFTWARE. Type PSGroupSpecifier + + FooterText + MIT License + +Copyright (c) 2018 暴走的鑫鑫 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + JXCategoryView + Type + PSGroupSpecifier + + + FooterText + MIT License + +Copyright (c) 2018 暴走的鑫鑫 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + JXPagingView + Type + PSGroupSpecifier + FooterText Copyright (c) 2020 490790096@qq.com <LoSenTrad@163.com> diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist index 7026892..466ee5a 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist @@ -3,6 +3,8 @@ ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework ${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework ${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework ${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework +${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework +${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework ${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework ${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework ${BUILT_PRODUCTS_DIR}/LookinServer/LookinServer.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist index 44c2c72..41036e9 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist @@ -2,6 +2,8 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HWPanModal.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTPopView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTTimer.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LookinServer.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist index a1e87cf..a7b1474 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist @@ -3,6 +3,8 @@ ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework ${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework ${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework ${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework +${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework +${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework ${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework ${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework ${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist index 12df5ac..6400ccd 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist @@ -2,6 +2,8 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HWPanModal.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTPopView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTTimer.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh index fd710bd..b51cb50 100755 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh @@ -180,6 +180,8 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework" install_framework "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework" install_framework "${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework" + install_framework "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework" + install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework" install_framework "${BUILT_PRODUCTS_DIR}/LookinServer/LookinServer.framework" @@ -194,6 +196,8 @@ if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework" install_framework "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework" install_framework "${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework" + install_framework "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework" + install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework" install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework" diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig index 3620983..490ea4d 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig @@ -1,10 +1,10 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer/LookinServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer/LookinServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "LSTPopView" -framework "LSTTimer" -framework "LookinServer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +OTHER_LDFLAGS = $(inherited) -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "LSTPopView" -framework "LSTTimer" -framework "LookinServer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig index 0e9c332..1e97dd5 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig @@ -1,10 +1,10 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_ROOT}/Bugly" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_ROOT}/Bugly" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AFNetworking" -framework "Bugly" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "LSTPopView" -framework "LSTTimer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AFNetworking" -framework "Bugly" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "LSTPopView" -framework "LSTTimer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 50a4752..2fde4eb 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -20,6 +20,34 @@ 0477BE002EBC6A330055D639 /* HomeRankVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDFF2EBC6A330055D639 /* HomeRankVC.m */; }; 0477BE042EBC83130055D639 /* HomeMainVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BE032EBC83130055D639 /* HomeMainVC.m */; }; 047C650D2EBC8A840035E841 /* KBPanModalView.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C650C2EBC8A840035E841 /* KBPanModalView.m */; }; + 047C65102EBCA8DD0035E841 /* HomeRankContentVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C650F2EBCA8DD0035E841 /* HomeRankContentVC.m */; }; + 047C652D2EBCAAAC0035E841 /* crab_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651F2EBCAAAC0035E841 /* crab_selected.png */; }; + 047C652E2EBCAAAC0035E841 /* crab.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651E2EBCAAAC0035E841 /* crab.png */; }; + 047C652F2EBCAAAC0035E841 /* arrow_down.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651A2EBCAAAC0035E841 /* arrow_down.png */; }; + 047C65302EBCAAAC0035E841 /* football.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65212EBCAAAC0035E841 /* football.png */; }; + 047C65312EBCAAAC0035E841 /* city.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65122EBCAAAC0035E841 /* city.png */; }; + 047C65322EBCAAAC0035E841 /* apple_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65192EBCAAAC0035E841 /* apple_selected.png */; }; + 047C65332EBCAAAC0035E841 /* carrot.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651C2EBCAAAC0035E841 /* carrot.png */; }; + 047C65342EBCAAAC0035E841 /* lobster.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65262EBCAAAC0035E841 /* lobster.png */; }; + 047C65352EBCAAAC0035E841 /* lufei.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 047C65282EBCAAAC0035E841 /* lufei.jpg */; }; + 047C65362EBCAAAC0035E841 /* river.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65152EBCAAAC0035E841 /* river.png */; }; + 047C65372EBCAAAC0035E841 /* watermelon_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C652A2EBCAAAC0035E841 /* watermelon_selected.png */; }; + 047C65382EBCAAAC0035E841 /* JXCategoryView.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65242EBCAAAC0035E841 /* JXCategoryView.png */; }; + 047C65392EBCAAAC0035E841 /* JXCategoryViewStructure.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65252EBCAAAC0035E841 /* JXCategoryViewStructure.png */; }; + 047C653A2EBCAAAC0035E841 /* arrow_up.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651B2EBCAAAC0035E841 /* arrow_up.png */; }; + 047C653B2EBCAAAC0035E841 /* boat.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65112EBCAAAC0035E841 /* boat.png */; }; + 047C653C2EBCAAAC0035E841 /* grape_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65232EBCAAAC0035E841 /* grape_selected.png */; }; + 047C653D2EBCAAAC0035E841 /* lobster_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65272EBCAAAC0035E841 /* lobster_selected.png */; }; + 047C653E2EBCAAAC0035E841 /* light.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65132EBCAAAC0035E841 /* light.png */; }; + 047C653F2EBCAAAC0035E841 /* seaWave.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65162EBCAAAC0035E841 /* seaWave.png */; }; + 047C65402EBCAAAC0035E841 /* watermelon.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65292EBCAAAC0035E841 /* watermelon.png */; }; + 047C65412EBCAAAC0035E841 /* lotus.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65142EBCAAAC0035E841 /* lotus.png */; }; + 047C65422EBCAAAC0035E841 /* grape.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65222EBCAAAC0035E841 /* grape.png */; }; + 047C65432EBCAAAC0035E841 /* filter.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65202EBCAAAC0035E841 /* filter.png */; }; + 047C65442EBCAAAC0035E841 /* apple.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65182EBCAAAC0035E841 /* apple.png */; }; + 047C65452EBCAAAC0035E841 /* carrot_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651D2EBCAAAC0035E841 /* carrot_selected.png */; }; + 047C65502EBCBA9E0035E841 /* KBShopVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C654F2EBCBA9E0035E841 /* KBShopVC.m */; }; + 047C65532EBCBAC60035E841 /* KBCommunityVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C65522EBCBAC60035E841 /* KBCommunityVC.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -123,6 +151,37 @@ 0477BE032EBC83130055D639 /* HomeMainVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeMainVC.m; sourceTree = ""; }; 047C650B2EBC8A840035E841 /* KBPanModalView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBPanModalView.h; sourceTree = ""; }; 047C650C2EBC8A840035E841 /* KBPanModalView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBPanModalView.m; sourceTree = ""; }; + 047C650E2EBCA8DD0035E841 /* HomeRankContentVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeRankContentVC.h; sourceTree = ""; }; + 047C650F2EBCA8DD0035E841 /* HomeRankContentVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeRankContentVC.m; sourceTree = ""; }; + 047C65112EBCAAAC0035E841 /* boat.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = boat.png; sourceTree = ""; }; + 047C65122EBCAAAC0035E841 /* city.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = city.png; sourceTree = ""; }; + 047C65132EBCAAAC0035E841 /* light.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = light.png; sourceTree = ""; }; + 047C65142EBCAAAC0035E841 /* lotus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lotus.png; sourceTree = ""; }; + 047C65152EBCAAAC0035E841 /* river.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = river.png; sourceTree = ""; }; + 047C65162EBCAAAC0035E841 /* seaWave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = seaWave.png; sourceTree = ""; }; + 047C65182EBCAAAC0035E841 /* apple.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple.png; sourceTree = ""; }; + 047C65192EBCAAAC0035E841 /* apple_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple_selected.png; sourceTree = ""; }; + 047C651A2EBCAAAC0035E841 /* arrow_down.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_down.png; sourceTree = ""; }; + 047C651B2EBCAAAC0035E841 /* arrow_up.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_up.png; sourceTree = ""; }; + 047C651C2EBCAAAC0035E841 /* carrot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = carrot.png; sourceTree = ""; }; + 047C651D2EBCAAAC0035E841 /* carrot_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = carrot_selected.png; sourceTree = ""; }; + 047C651E2EBCAAAC0035E841 /* crab.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = crab.png; sourceTree = ""; }; + 047C651F2EBCAAAC0035E841 /* crab_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = crab_selected.png; sourceTree = ""; }; + 047C65202EBCAAAC0035E841 /* filter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = filter.png; sourceTree = ""; }; + 047C65212EBCAAAC0035E841 /* football.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = football.png; sourceTree = ""; }; + 047C65222EBCAAAC0035E841 /* grape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = grape.png; sourceTree = ""; }; + 047C65232EBCAAAC0035E841 /* grape_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = grape_selected.png; sourceTree = ""; }; + 047C65242EBCAAAC0035E841 /* JXCategoryView.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JXCategoryView.png; sourceTree = ""; }; + 047C65252EBCAAAC0035E841 /* JXCategoryViewStructure.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JXCategoryViewStructure.png; sourceTree = ""; }; + 047C65262EBCAAAC0035E841 /* lobster.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lobster.png; sourceTree = ""; }; + 047C65272EBCAAAC0035E841 /* lobster_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lobster_selected.png; sourceTree = ""; }; + 047C65282EBCAAAC0035E841 /* lufei.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = lufei.jpg; sourceTree = ""; }; + 047C65292EBCAAAC0035E841 /* watermelon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = watermelon.png; sourceTree = ""; }; + 047C652A2EBCAAAC0035E841 /* watermelon_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = watermelon_selected.png; sourceTree = ""; }; + 047C654E2EBCBA9E0035E841 /* KBShopVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBShopVC.h; sourceTree = ""; }; + 047C654F2EBCBA9E0035E841 /* KBShopVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBShopVC.m; sourceTree = ""; }; + 047C65512EBCBAC60035E841 /* KBCommunityVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCommunityVC.h; sourceTree = ""; }; + 047C65522EBCBAC60035E841 /* KBCommunityVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCommunityVC.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -272,6 +331,120 @@ path = FunctionTest; sourceTree = ""; }; + 047C65172EBCAAAC0035E841 /* Indicator */ = { + isa = PBXGroup; + children = ( + 047C65112EBCAAAC0035E841 /* boat.png */, + 047C65122EBCAAAC0035E841 /* city.png */, + 047C65132EBCAAAC0035E841 /* light.png */, + 047C65142EBCAAAC0035E841 /* lotus.png */, + 047C65152EBCAAAC0035E841 /* river.png */, + 047C65162EBCAAAC0035E841 /* seaWave.png */, + ); + path = Indicator; + sourceTree = ""; + }; + 047C652B2EBCAAAC0035E841 /* Images */ = { + isa = PBXGroup; + children = ( + 047C65172EBCAAAC0035E841 /* Indicator */, + 047C65182EBCAAAC0035E841 /* apple.png */, + 047C65192EBCAAAC0035E841 /* apple_selected.png */, + 047C651A2EBCAAAC0035E841 /* arrow_down.png */, + 047C651B2EBCAAAC0035E841 /* arrow_up.png */, + 047C651C2EBCAAAC0035E841 /* carrot.png */, + 047C651D2EBCAAAC0035E841 /* carrot_selected.png */, + 047C651E2EBCAAAC0035E841 /* crab.png */, + 047C651F2EBCAAAC0035E841 /* crab_selected.png */, + 047C65202EBCAAAC0035E841 /* filter.png */, + 047C65212EBCAAAC0035E841 /* football.png */, + 047C65222EBCAAAC0035E841 /* grape.png */, + 047C65232EBCAAAC0035E841 /* grape_selected.png */, + 047C65242EBCAAAC0035E841 /* JXCategoryView.png */, + 047C65252EBCAAAC0035E841 /* JXCategoryViewStructure.png */, + 047C65262EBCAAAC0035E841 /* lobster.png */, + 047C65272EBCAAAC0035E841 /* lobster_selected.png */, + 047C65282EBCAAAC0035E841 /* lufei.jpg */, + 047C65292EBCAAAC0035E841 /* watermelon.png */, + 047C652A2EBCAAAC0035E841 /* watermelon_selected.png */, + ); + path = Images; + sourceTree = ""; + }; + 047C652C2EBCAAAC0035E841 /* Resource */ = { + isa = PBXGroup; + children = ( + 047C652B2EBCAAAC0035E841 /* Images */, + ); + path = Resource; + sourceTree = ""; + }; + 047C65462EBCBA880035E841 /* M */ = { + isa = PBXGroup; + children = ( + ); + path = M; + sourceTree = ""; + }; + 047C65472EBCBA880035E841 /* V */ = { + isa = PBXGroup; + children = ( + ); + path = V; + sourceTree = ""; + }; + 047C65482EBCBA880035E841 /* VC */ = { + isa = PBXGroup; + children = ( + 047C65512EBCBAC60035E841 /* KBCommunityVC.h */, + 047C65522EBCBAC60035E841 /* KBCommunityVC.m */, + ); + path = VC; + sourceTree = ""; + }; + 047C65492EBCBA880035E841 /* Community */ = { + isa = PBXGroup; + children = ( + 047C65462EBCBA880035E841 /* M */, + 047C65472EBCBA880035E841 /* V */, + 047C65482EBCBA880035E841 /* VC */, + ); + path = Community; + sourceTree = ""; + }; + 047C654A2EBCBA880035E841 /* M */ = { + isa = PBXGroup; + children = ( + ); + path = M; + sourceTree = ""; + }; + 047C654B2EBCBA880035E841 /* V */ = { + isa = PBXGroup; + children = ( + ); + path = V; + sourceTree = ""; + }; + 047C654C2EBCBA880035E841 /* VC */ = { + isa = PBXGroup; + children = ( + 047C654E2EBCBA9E0035E841 /* KBShopVC.h */, + 047C654F2EBCBA9E0035E841 /* KBShopVC.m */, + ); + path = VC; + sourceTree = ""; + }; + 047C654D2EBCBA880035E841 /* Shop */ = { + isa = PBXGroup; + children = ( + 047C654A2EBCBA880035E841 /* M */, + 047C654B2EBCBA880035E841 /* V */, + 047C654C2EBCBA880035E841 /* VC */, + ); + path = Shop; + sourceTree = ""; + }; 04A9FE122EB4D0D20020DB6D /* Manager */ = { isa = PBXGroup; children = ( @@ -408,6 +581,8 @@ 0477BDFC2EBC6A170055D639 /* HomeHotVC.m */, 0477BDFE2EBC6A330055D639 /* HomeRankVC.h */, 0477BDFF2EBC6A330055D639 /* HomeRankVC.m */, + 047C650E2EBCA8DD0035E841 /* HomeRankContentVC.h */, + 047C650F2EBCA8DD0035E841 /* HomeRankContentVC.m */, 0477BE012EBC6D420055D639 /* FunctionTest */, ); path = VC; @@ -490,6 +665,9 @@ 04FC95BF2EB1E3B1007BD342 /* Class */ = { isa = PBXGroup; children = ( + 047C65492EBCBA880035E841 /* Community */, + 047C654D2EBCBA880035E841 /* Shop */, + 047C652C2EBCAAAC0035E841 /* Resource */, 04FC95EE2EB3399D007BD342 /* Manager */, 04FC95ED2EB33611007BD342 /* Login */, 04FC95E82EB23B67007BD342 /* Network */, @@ -813,6 +991,31 @@ buildActionMask = 2147483647; files = ( 04C6EABA2EAF86530089C901 /* Assets.xcassets in Resources */, + 047C652D2EBCAAAC0035E841 /* crab_selected.png in Resources */, + 047C652E2EBCAAAC0035E841 /* crab.png in Resources */, + 047C652F2EBCAAAC0035E841 /* arrow_down.png in Resources */, + 047C65302EBCAAAC0035E841 /* football.png in Resources */, + 047C65312EBCAAAC0035E841 /* city.png in Resources */, + 047C65322EBCAAAC0035E841 /* apple_selected.png in Resources */, + 047C65332EBCAAAC0035E841 /* carrot.png in Resources */, + 047C65342EBCAAAC0035E841 /* lobster.png in Resources */, + 047C65352EBCAAAC0035E841 /* lufei.jpg in Resources */, + 047C65362EBCAAAC0035E841 /* river.png in Resources */, + 047C65372EBCAAAC0035E841 /* watermelon_selected.png in Resources */, + 047C65382EBCAAAC0035E841 /* JXCategoryView.png in Resources */, + 047C65392EBCAAAC0035E841 /* JXCategoryViewStructure.png in Resources */, + 047C653A2EBCAAAC0035E841 /* arrow_up.png in Resources */, + 047C653B2EBCAAAC0035E841 /* boat.png in Resources */, + 047C653C2EBCAAAC0035E841 /* grape_selected.png in Resources */, + 047C653D2EBCAAAC0035E841 /* lobster_selected.png in Resources */, + 047C653E2EBCAAAC0035E841 /* light.png in Resources */, + 047C653F2EBCAAAC0035E841 /* seaWave.png in Resources */, + 047C65402EBCAAAC0035E841 /* watermelon.png in Resources */, + 047C65412EBCAAAC0035E841 /* lotus.png in Resources */, + 047C65422EBCAAAC0035E841 /* grape.png in Resources */, + 047C65432EBCAAAC0035E841 /* filter.png in Resources */, + 047C65442EBCAAAC0035E841 /* apple.png in Resources */, + 047C65452EBCAAAC0035E841 /* carrot_selected.png in Resources */, 04A9FE212EB893F10020DB6D /* Localizable.strings in Resources */, 04C6EABC2EAF86530089C901 /* LaunchScreen.storyboard in Resources */, 04C6EABD2EAF86530089C901 /* Main.storyboard in Resources */, @@ -936,6 +1139,7 @@ 04FC95D82EB1EA16007BD342 /* BaseCell.m in Sources */, 0477BDF72EBC63A80055D639 /* KBTestVC.m in Sources */, 04FC95C92EB1E4C9007BD342 /* BaseNavigationController.m in Sources */, + 047C65102EBCA8DD0035E841 /* HomeRankContentVC.m in Sources */, 04FC95DD2EB202A3007BD342 /* KBGuideVC.m in Sources */, 04FC95E52EB220B5007BD342 /* UIColor+Extension.m in Sources */, 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */, @@ -950,6 +1154,7 @@ A1B2D7022EB8C00100000001 /* KBLangTestVC.m in Sources */, 04C6EABF2EAF86530089C901 /* main.m in Sources */, 04FC95CC2EB1E780007BD342 /* BaseTabBarController.m in Sources */, + 047C65502EBCBA9E0035E841 /* KBShopVC.m in Sources */, 0477BE042EBC83130055D639 /* HomeMainVC.m in Sources */, 0477BDFD2EBC6A170055D639 /* HomeHotVC.m in Sources */, A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */, @@ -958,6 +1163,7 @@ 04FC95F42EB339C1007BD342 /* AppleSignInManager.m in Sources */, 04C6EAC12EAF86530089C901 /* ViewController.m in Sources */, A1B2C4002EB4A0A100000004 /* KBAuthManager.m in Sources */, + 047C65532EBCBAC60035E841 /* KBCommunityVC.m in Sources */, A1B2C4212EB4B7A100000001 /* KBKeyboardPermissionManager.m in Sources */, 0459D1B42EBA284C00F2D189 /* KBSkinCenterVC.m in Sources */, ); @@ -1092,6 +1298,7 @@ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UIUserInterfaceStyle = Light; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1131,6 +1338,7 @@ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UIUserInterfaceStyle = Light; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/keyBoard/Assets.xcassets/Tabbar/Contents.json b/keyBoard/Assets.xcassets/Tabbar/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/Contents.json b/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/Contents.json new file mode 100644 index 0000000..7af5406 --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_home@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_home@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/tab_home@2x.png b/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/tab_home@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..54341f2652195a57e84b60a566f6de2b45827704 GIT binary patch literal 1624 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/Contents.json b/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/Contents.json new file mode 100644 index 0000000..ebc818b --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_home_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_home_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/tab_home_selected@2x.png b/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/tab_home_selected@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fa0f28d642fbe25d5a1974874f75d211d076efb6 GIT binary patch literal 2371 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/tab_my@3x.png b/keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/tab_my@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9f9d55aaac4b531629d6a3d1d3ea559e4084e872 GIT binary patch literal 5373 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 bK~w_(7nU};xszH~00000NkvXXu0mjf1=DYK literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/Contents.json b/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/Contents.json new file mode 100644 index 0000000..96d8332 --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_my_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_my_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/tab_my_selected@2x.png b/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/tab_my_selected@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9afd6047679c754530ffd59d2298f3aa0c6c1a40 GIT binary patch literal 3899 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 WW!s$?^p?2*0000iJv% literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/tab_shequ@3x.png b/keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/tab_shequ@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..78f9d1b5aec54b09d72f33983b90cb7b1796c095 GIT binary patch literal 5847 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 O0000NP|^{Sd6q5A`ijEoGj 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/Contents.json b/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/Contents.json new file mode 100644 index 0000000..52f0b4a --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_shop_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_shop_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/tab_shop_selected@2x.png b/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/tab_shop_selected@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4478dca2d838cf5ed4066f9f80a5d3dd48d47cf6 GIT binary patch literal 2239 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface KBCommunityVC : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Community/VC/KBCommunityVC.m b/keyBoard/Class/Community/VC/KBCommunityVC.m new file mode 100644 index 0000000..8819311 --- /dev/null +++ b/keyBoard/Class/Community/VC/KBCommunityVC.m @@ -0,0 +1,31 @@ +// +// KBCommunityVC.m +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import "KBCommunityVC.h" + +@interface KBCommunityVC () + +@end + +@implementation KBCommunityVC + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/keyBoard/Class/Home/V/KBPanModalView.m b/keyBoard/Class/Home/V/KBPanModalView.m index 5fe71e9..de1d0e3 100644 --- a/keyBoard/Class/Home/V/KBPanModalView.m +++ b/keyBoard/Class/Home/V/KBPanModalView.m @@ -23,6 +23,8 @@ @property (nonatomic, strong) UIViewController *currentChild; @property (nonatomic, strong) HomeHotVC *hotVC; @property (nonatomic, strong) HomeRankVC *rankVC; +@property (nonatomic, assign) NSInteger currentIndex; + @end @implementation KBPanModalView @@ -83,6 +85,10 @@ return NO; // 在 short 状态禁止继续往下拉(锁住最小高度) } +- (CGFloat)topOffset{ + return 0.001; +} + /// 允许时间穿透 - (BOOL)allowsTouchEventsPassingThroughTransitionView { return YES; @@ -94,7 +100,10 @@ - (UIScrollView *)panScrollable { - return self.hotVC.tableView; + if (self.currentIndex == 0) { + return self.hotVC.tableView; + } + return self.rankVC.tableView; } // 可选:完全不允许拖拽关闭(避免被拉到底消失) @@ -130,7 +139,7 @@ self.topBar.backgroundColor = [UIColor colorWithWhite:1 alpha:0.9]; [self addSubview:self.topBar]; // 首次展示时先隐藏,待转场完成后再淡入,避免“自底向上滑入”的错觉 - self.topBar.alpha = 0.0; +// self.topBar.alpha = 0.0; // 两个按钮 self.hotButton = [UIButton buttonWithType:UIButtonTypeCustom]; @@ -200,12 +209,13 @@ - (void)onTapTopButton:(UIButton *)sender { [self switchToIndex:sender.tag animated:YES]; - [self hw_panModalSetNeedsLayoutUpdate]; +// [self hw_panModalSetNeedsLayoutUpdate]; } #pragma mark - Switch Child - (void)switchToIndex:(NSInteger)index animated:(BOOL)animated { + self.currentIndex = index; UIViewController *target = (index == 0) ? self.hotVC : self.rankVC; if (!target) { if (index == 0) { @@ -235,11 +245,11 @@ [self.containerView addSubview:target.view]; target.view.backgroundColor = [UIColor colorWithWhite:0.98 alpha:1]; [target.view mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.containerView); + make.left.top.right.equalTo(self.containerView); + make.bottom.equalTo(self.containerView).offset(-KB_TABBAR_HEIGHT); }]; - [target didMoveToParentViewController:self]; +// [target didMoveToParentViewController:self]; self.currentChild = target; - [self updateButtonStateForIndex:index animated:animated]; } diff --git a/keyBoard/Class/Home/VC/HomeRankContentVC.h b/keyBoard/Class/Home/VC/HomeRankContentVC.h new file mode 100644 index 0000000..ae458c0 --- /dev/null +++ b/keyBoard/Class/Home/VC/HomeRankContentVC.h @@ -0,0 +1,18 @@ +// +// HomeRankContentVC.h +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import +#import "JXCategoryListContainerView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeRankContentVC : UIViewController +@property (nonatomic, strong) BaseTableView *tableView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/VC/HomeRankContentVC.m b/keyBoard/Class/Home/VC/HomeRankContentVC.m new file mode 100644 index 0000000..6fcf1d8 --- /dev/null +++ b/keyBoard/Class/Home/VC/HomeRankContentVC.m @@ -0,0 +1,96 @@ +// +// HomeRankContentVC.m +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import "HomeRankContentVC.h" +#import "HomeHotCell.h" +@interface HomeRankContentVC () +@property (nonatomic, strong) NSArray *dataSource; // 简单模拟数据 + +@end + +@implementation HomeRankContentVC + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + // 构建数据(演示) + self.dataSource = @[ + @{@"rank":@4, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@5, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@YES}, + @{@"rank":@6, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@7, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@4, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@5, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@YES}, + @{@"rank":@6, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@7, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@4, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@5, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@YES}, + @{@"rank":@6, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@7, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO} + ]; + // 设置背景颜色:随机色 + self.view.backgroundColor = COLOR_WITH_RGB(arc4random()%255/255.0, arc4random()%255/255.0, arc4random()%255/255.0, 1); + [self.view addSubview:self.tableView]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.right.equalTo(self.view); + make.bottom.equalTo(self.view); + + }]; +} + +#pragma mark - UITableViewDataSource + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.dataSource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + HomeHotCell *cell = [tableView dequeueReusableCellWithIdentifier:HomeHotCell.reuseId forIndexPath:indexPath]; + NSDictionary *item = self.dataSource[indexPath.row]; + // 配置 cell + [cell configWithRank:[item[@"rank"] integerValue] + title:item[@"title"] + subtitle:item[@"sub"] + joined:[item[@"joined"] boolValue]]; + return cell; +} + +#pragma mark - UITableViewDelegate + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 84.0; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + +} + +- (BaseTableView *)tableView { + if (!_tableView) { + // 使用 BaseTableView,统一默认配置 + _tableView = [[BaseTableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.dataSource = self; + _tableView.delegate = self; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; // 设计为卡片式,去掉系统分割线 + _tableView.showsVerticalScrollIndicator = NO; + _tableView.contentInset = UIEdgeInsetsMake(8, 0, KB_SafeAreaBottom(), 0); + [_tableView registerClass:HomeHotCell.class forCellReuseIdentifier:HomeHotCell.reuseId]; + } + return _tableView; +} + + +#pragma mark - JXCategoryListContentViewDelegate + +/** + 实现 协议方法,返回该视图控制器所拥有的「视图」 + */ +- (UIView *)listView { + return self.view; +} +@end diff --git a/keyBoard/Class/Home/VC/HomeRankVC.h b/keyBoard/Class/Home/VC/HomeRankVC.h index e439160..908f65f 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.h +++ b/keyBoard/Class/Home/VC/HomeRankVC.h @@ -6,11 +6,13 @@ // #import - +#import "JXCategoryView.h" +#import "JXCategoryListContainerView.h" NS_ASSUME_NONNULL_BEGIN -@interface HomeRankVC : UIViewController - +@interface HomeRankVC : UIViewController +// 列表 +@property (nonatomic, strong) BaseTableView *tableView; @end NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/VC/HomeRankVC.m b/keyBoard/Class/Home/VC/HomeRankVC.m index bd13aa3..a59417d 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.m +++ b/keyBoard/Class/Home/VC/HomeRankVC.m @@ -6,8 +6,13 @@ // #import "HomeRankVC.h" +#import "HomeRankContentVC.h" -@interface HomeRankVC () +@interface HomeRankVC () +@property (nonatomic, strong) NSArray *titles; +@property (nonatomic, strong) JXCategoryTitleImageView *myCategoryView; +@property (nonatomic, strong) JXCategoryListContainerView *listContainerView; +@property (nonatomic, assign) JXCategoryTitleImageType currentType; @end @@ -17,16 +22,124 @@ [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor grayColor]; + self.titles = @[@"螃蟹啊斯柯达积分卡", @"小龙虾", @"苹果", @"胡萝卜", @"葡萄", @"西瓜"]; + [self.view addSubview:self.myCategoryView]; + [self.view addSubview:self.listContainerView]; +// self.listContainerView.scrollView.scrollEnabled = false; + NSArray *imageNames = @[@"crab", @"lobster", @"apple", @"carrot", @"grape", @"watermelon"]; + NSArray *selectedImageNames = @[@"crab_selected", @"lobster_selected", @"apple_selected", @"carrot_selected", @"grape_selected", @"watermelon_selected"]; + + self.myCategoryView.titles = self.titles; + self.myCategoryView.imageInfoArray = imageNames; + self.myCategoryView.selectedImageInfoArray = selectedImageNames; + self.myCategoryView.loadImageBlock = ^(UIImageView *imageView, id info) { + NSString *imageName = info; + imageView.image = [UIImage imageNamed:imageName]; + }; + self.myCategoryView.imageZoomEnabled = YES; + self.myCategoryView.imageZoomScale = 1.3; + self.myCategoryView.averageCellSpacingEnabled = NO; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + lineView.indicatorWidth = 20; + self.myCategoryView.indicators = @[lineView]; + + [self configCategoryViewWithType:JXCategoryTitleImageType_LeftImage]; } -/* -#pragma mark - Navigation +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. + self.myCategoryView.frame = CGRectMake(0, 0, self.view.bounds.size.width, [self preferredCategoryViewHeight]); + self.listContainerView.frame = CGRectMake(0, [self preferredCategoryViewHeight], self.view.bounds.size.width, self.view.bounds.size.height - [self preferredCategoryViewHeight]); +} + +//- (JXCategoryBaseView *)preferredCategoryView { +// return [[JXCategoryBaseView alloc] init]; +//} + +- (CGFloat)preferredCategoryViewHeight { + return 50; +} + +- (void)configCategoryViewWithType:(JXCategoryTitleImageType)imageType { + self.currentType = imageType; + if ((NSInteger)imageType == 100) { + NSMutableArray *types = [NSMutableArray array]; + for (int i = 0; i < self.titles.count; i++) { + if (i == 2) { + [types addObject:@(JXCategoryTitleImageType_OnlyImage)]; + }else if (i == 4) { + [types addObject:@(JXCategoryTitleImageType_LeftImage)]; + }else { + [types addObject:@(JXCategoryTitleImageType_OnlyTitle)]; + } + } + self.myCategoryView.imageTypes = types; + }else { + NSMutableArray *types = [NSMutableArray array]; + for (int i = 0; i < self.titles.count; i++) { + [types addObject:@(imageType)]; + } + self.myCategoryView.imageTypes = types; + } + [self.myCategoryView reloadData]; +} + +// 分页菜单视图 +- (JXCategoryTitleImageView *)myCategoryView { + if (!_myCategoryView) { + _myCategoryView = [[JXCategoryTitleImageView alloc] init]; + _myCategoryView.delegate = self; + + // !!!: 将列表容器视图关联到 categoryView + _myCategoryView.listContainer = self.listContainerView; + } + return _myCategoryView; +} + +// 列表容器视图 +- (JXCategoryListContainerView *)listContainerView { + if (!_listContainerView) { + _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + } + return _listContainerView; +} + +#pragma mark - JXCategoryViewDelegate + +// 点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,不关心具体是点击还是滚动选中的。 +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + NSLog(@"%@", NSStringFromSelector(_cmd)); + self. + // 侧滑手势处理 + self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0); +} + +// 滚动选中的情况才会调用该方法 +- (void)categoryView:(JXCategoryBaseView *)categoryView didScrollSelectedItemAtIndex:(NSInteger)index { + NSLog(@"%@", NSStringFromSelector(_cmd)); +} + +#pragma mark - JXCategoryListContainerViewDelegate + +// 返回列表的数量 +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +// 返回各个列表菜单下的实例,该实例需要遵守并实现 协议 +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + HomeRankContentVC *list = [[HomeRankContentVC alloc] init]; + self.tableView = list.tableView; + return list; +} + + +#pragma mark - TitleImageSettingViewControllerDelegate + +- (void)titleImageSettingVCDidSelectedImageType:(JXCategoryTitleImageType)imageType { + [self configCategoryViewWithType:imageType]; } -*/ @end diff --git a/keyBoard/Class/Home/VC/HomeVC.m b/keyBoard/Class/Home/VC/HomeVC.m index 94f4f45..d6badcb 100644 --- a/keyBoard/Class/Home/VC/HomeVC.m +++ b/keyBoard/Class/Home/VC/HomeVC.m @@ -26,12 +26,12 @@ // 创建sheetVC HomeSheetVC *vc = [[HomeSheetVC alloc] init]; // 使用宏,避免误写成函数指针判断导致恒为 true - if (KB_DEVICE_HAS_NOTCH) { - vc.minHeight = KB_SCREEN_HEIGHT - topV - 34; - }else{ +// if (KB_DEVICE_HAS_NOTCH) { +// vc.minHeight = KB_SCREEN_HEIGHT - topV - 34; +// }else{ vc.minHeight = KB_SCREEN_HEIGHT - topV; // - } +// } vc.topInset = 100; [self presentPanModal:vc]; } diff --git a/keyBoard/Class/Resource/Images/Indicator/boat.png b/keyBoard/Class/Resource/Images/Indicator/boat.png new file mode 100644 index 0000000000000000000000000000000000000000..f0805999148d111a457e3c8a869c45b30d6ee692 GIT binary patch literal 21478 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∋#OpxCY=nM_`#C+>VEZp5D^7OmMR1f9scn&r<6mrGQPkx}td(=>6dq>7Q@-o_f@GDjCFIzH{BgtM>bIz_q!I(Vdl~aE|kF68>6nFGQ zf9a^tr^5A!U2N$vdrU;12M@n+^=Ia0Wilfwoj&)fYlU+DhPL<)XE-OB8j~fxZqV2r zUxefFzO5W29Zttq{uC>?X%^b9dZ)hK@)}Flkp4Rf{tdxx8`lXP4 zTYdZ3cfPP8Z^^Dxfvi=l5j#^H4HwEeceEioy7$vkD5AgBx;vYNxJx*R!!Fi{Hi2u&`({~j` z;ISN9iTygm+(k=vKH+#CjV^P!jOQIYecz${H#<>m(X;F+f6`JA4+3HUi_f~UFo~C5vpJZ`=xv3@*U>)Pj-7p6}|Ac1p?pS zDGS3d4~(5|I<%W+L2=PE#vxnQ-qIV?tVVVl-w@A@b#E$#y```FfZgG?V6MEe6v=WO z>(w#h{l(Y;gU#4U&4Ic*EO)%F@|~}V;Tvubfqmbim|@EY&)vnVKStJjpAwS=`=Wk5 z>l)hLE18WyLLIg#3{!N#sX$e5+F?uoJ@`S7*$?dNeGDh54T1CxpIKl(RzIqDF^_vP zq83r+`Zny&y()I^Q&2nA2D5ol%;_`buVQy7PNgtDP%9-J*e+u%8)E z(B+52iQ`fKRd=25aCOn1s8L35Ve}TAsG}RBi{7F{7oC_<5+O>AAfvZLbfSyig$xEE z>Ua@^C}DJwXu&+-pL;(zdD@xV`Z8iE$V8)jJ_~M#IoCe+bI(mk-48+ zzP+|mJhBRec@2`Q<-|o_*Q2`Sb1zxwr+5lOb)6nbvjG5ij6@E5i0DBQIvtNMm6p{F zl7qzKrlHY^rOlIH_@^6JU_j;eHrtku;qz>UdFad$KR)#`1ppOrfgwq(78jH-MwbKi zgO6{+cGol0#czw&@9;s`>~s^zNG!JFCsVfr0{ALJjbEWcwsqk0?P(dR6&e_BI3f5n z#T-rm<|yLXmah^}=4E2r-tN*QQRa19Qp0F%lR~z+Jik!FeUPZa81^(vzd{~XNHmK0 zjo&z*Ut!7jIExiK-4(N<5^6{S{Jgag{$VSC0Bj-&7&c_J57+q+;BpQEcWGeWg8th| z+ogolLosO}ZL2gFA^09CIC4iqg*OOLP=NzG`u|JjPMVaX&r`-I;WZi<6^K$-8bAUV zwZip0<@ffw`wRcvswhG)WX4hgFdHckt2DsB!V&H zD%Ub6(Ag&(0Q}XdWS44L^Nm>(5HOZTahQJa0@xn$9G%Y}?|lRIXe6j%{Ux3s48Py1 za8br^hSGjXTF?~;hSegB~P~J$vC5lA)q)A98WWwaZ*itYO8fHzD^ zBQ<#p#IV)kRiMNVfEYEHb3o=g>Q&}HCdE|U=V4&V!SlJOx#IpYD_FR_nJ$E26!0XV z7*EQ)okIcMZU@mM%nB>%7P%M!U3nK~2Mgtbo0Ef?r{Wk_N+tuPfzI#d;VdG8RJ{V= zUF$l#j3Wm4SsQ~+^s#$o(tW_^@5WSGKvI1J}>q?UUVLd(gA!OS^(OvyFJeYJnn+i z0i$V?k}UsMVLh=2!iWd_m^b{D)bOx1KhC8FYu51~|MwT?CJh2i7q= z#t==-o#9frAeg%t?rI9j0MVF0r0#?Dknw`x+ze0|RP&!Y#&nv7TXRk{I%is)B#}B3 zWTTjU6aZN59}J7Hc^7tM3fXqNo5rGPDGHpx1!VN8$M0y)iR8j2|Cci+qV76goJ$~D z76W4B%+1}}X!KjjIqb;>~!R~BX}PS@B2E@;aZ@O9Y+Fwu5$XXqPg)SY13RGKSdp-A`fVVO6k?r03IV$FfSRZkp~Vl*pl|i z?s^xF4SEWWr7t-%e{TJl{GOh+iBeQTQ`9e&p@N${w_oJV!HAxi?jDe#RZL%A0fdz; zU0vqd7_zMtmDtoIVZp0h*yz3Z9}eBSFUvPqRl3sf03{>$sne12M zCVpO;d|#2rRdhGXvn318VWVqv&T9D}e-bA^s|;Lh?VM&O9E#kFwslm<&j5)TIi`FEF<}hvsk@xn**Er^{O8>pl4X6fZCyggzAXJHxsy`%WM0H{VP8*dc^J zzTjnV$%E$k?yP!~#wS|IcJ5$o0wE2qY0NepAoY_UA3jn{*e__>th>6l1#KEmn;0p7 zF?V2jxts&r=-3W*TH1GIe~7MQ z6GwjeqgMH|q1;6I5g2?h#>&B977Y@29jY`G?>+kkc56;mW}O-n^0+?r0YjN*wCQ@$h8(jUL7kv;tiwoMy7bguP-il;EPK5duA zJWU@eR~|p34dljsG{u~#vk}+EDy)KNs=K!Z6KYV>O<>uR7Y)w+XzYcu}?rt zu&z&Q(Ls~(@=*=+ri-+cOB(>~K9dR)K+1NNv z=XgM1JaqlXQV{_MC6QExchlM07H<2#<3RTu5x>p`)`@UyLsmq@mDwA$9m2(+vXY=V zg3}Rqb<>Os<7?aCOq#4tOnjiN$0DzQ2&iWsb_73Xa@kii2mk$EGdT-`ZEgSgdk-D4 z!FJ*Q&&^GOw7y7uhG|t{>R_a7e{y-qH+kyDbX%|Mr`+C@H783A+&G8T*H>M0SfRHz z@#0G60gFa!2eyh&+l8umc7%kVUGELjYPN?dYAL;?tswXq_`p95Azex?fBEh#OM$ed zWuMTmm}r2VjFuG&J zn$(S}Vg#m{JEKjnEx%Bl0yF;!yC@N@5!@9~nsIOxqrse?8$W9Cw%)-tiK@Js0l_vf zyVhRT5y@z4Si^QfN|SWw4y_JsjVbcWP^_rZk46DkXvvvD#?Q_r;eXBM1BZmxi^dgz zn432GroBtsi`lnaYAevokH9j671m)SmnGO)QocVt$QKKBuV$MAzC{ynzAf`U)awcv z5aKw>z@}~;fKIjKo;IwE-(E7=D8Ez$dgDKH zvP%)l%6vuR;*z^3`C7fH+*tgYu{Gp7AVanV>YJ~~gl|dE#@`#{38Fb}O`YL{q6 z6Zu=!qxyn7<%huA^21ijf<=#|qt@YV1J1D%ZABV+zgdd*KN2p4L)an zEvDqwNJlR5Ycru*MhucG#^4p?!*{04zM8r@e1Ua`rZqRy5 z)`x}=8S1$8N|zIgNuLgN4!Zg@f9JtTMej8ympN6Tb1iNaW%*o1I7t z{rbLJ2lU-!wdcFePkWp=ml_EF+*+New~>?W`<=rIP?M!?b@5`^Zccp?(dj{kw87m- z@igA*n9mlmuRQR?BOMsh4@~~@kvO%or~3(-(ns1=m+Xd>b=357o_cuA+k;7dqR z^xt5LR)vi&M%wJg$&tDXBB>aEShOpGUR=nJG4m$dx~T2FMsu=rw<0NJMhGV^I0TXB z{!sH!jxBvfw;U2~BlEQ*n0csf*F7OiKe?iTBQsB73_Ex(F(Z4kxL;6%;=Sl+J~54s zWUP6ed(I_C_%(!Nxn9A-%E0e2Lb{1O=~<6bTRAxlJ9X_^wN=ESL;e>1sbJs?7Iqd# zLj1*sb}YjKLGPdRbQ<&dnc{DQfn>jho6RmL%VCXw@$Q+qwmu8_$_0zF%~MkhL|`jI zg--s@VC3VB+kzvOXp2gZ(I&`~spIgwRGZpc2IofXSLB*2U!!{Kl;VixDJT#ryyam< z@Le}M?f4J1t@yEwk|afLcPyW6>6Ord7=OiB-1i5Dr4WXhA*v1Vi}TQUpv=7QupuK= zl*1s|u{;|niyii+_@PN&(|3%;x141wbmO*!7oF8mU45ph^Z;Jaif&vW6MJ`-6*IHn z+#SW3ur9K9btf#*vyu{Vdpw83$*mBA5K|In(I+5dsl$=a+N{4T{NIbc-e>~8rp+H> zx&*jhFgln}m?BdJyVc!!(i=_`z`-V%j~^4C+jU_$t5Lm+TAyC1a@?WHr4_cz$P&f= z5>YVqb<4z>bY}?*k|*C4v!P)@zxLsPeH;UO_*E(4BB&5~jLx>GJOmv=t%b5pVGMQb z;<(K;BvM8=Mj&=qo)F$YN)f3FBmvztx-sS!&XsP>?@&vn9uEdy&AoJb#+$~X_ zIJZV@E2Yx4{CBW?N$1T+`l7@n|LVo;@$+L)vE^&?$Ik>|Ls?OJow44vZu;}Zwy4U$1kuZ0W{}Cfi!X=T)`DQk|U*73n!*=Pn@w% z-ApYj7jgXOLdj;@*=rvu1B1M{{HnVTWdbiHEq|Jkn5eTqe$w_+kZeS)?BKMy3Abf} z`7zS_{7aCFz|V)f2T6m!3MTIgXj`zjTTfwd;c!|VT9R3Ogc>{k6IAgo>bxBSFuTH>cj2^6i)MGEPsfc6#1LcShKyIb9J#QzwE4F2z=xzxMRQzLmH|z=MU}74 z-&?;X@O)Z9aB`I53;a8jk~CIsxYDdhZ6lT#p0 z<#g)(0v>x+YkTV*@#>HkJUNw`cr-g;)`iaxO@8Z&kT+XVFqbn}I^J0N%$7T-{x>X) zr4aRHv#t20(!uMrhRLj$?HoSKnvzU-scRO0z71sdw89Yhc2WyVA#J4?bQ9|pAG77; zT~*;$ThdE(j}!zK9pn#ED8@ht>qxuAev3}&0W<8BpO1vl7!XY4AbFUhyl_8Co(v~x z-UeO@d_D*FL*&FkcgEBIn=nT%k{RBIM+>a7Dn#!ff6BjOWBDa8J&oJ!geseXTh|B$!T;!^R8jpg*xc+%vdrqjE{Gm8wNsS(MW`K|usfkn??c4Vm zt3ZwZ()uwcAUYToioKXsrxE5=1|>Ldj40r8if2vC*rAbSvNI$%D{t~GTo7^y(%7;_ zjZ~q5>aQO_RSgMN3NN5bvGTxDd)%O3F!*;g%KG0e&&lhO~z7MT2=TldKn6wvWDrtb{gMGL@{vHOc zgIi2A;!%H-0*~tlp9?)Z^ij+&1ceL#nhJ(F46x1yUiy->vQG@=!g9(%bZy2HD4>7DtD$E4;%}!S zJa}fE1a(u3MfTy8LyruhU}V4V4b%uziB%Wf1n$7hhfI!rl!vNLJDUU<7z-Qc?>3hv zd*ZCOHE5N1j9;-`P!*!SaS6l8*vTG^W>1|-tWzknI_0X&X}Uqv?)oZTN~(i*xhz*3 zqJ(0rBZzSAb}KhxD(Z{t6_XbYGt|Am{rTe{(k0SzOScU^dT*BS5q+$1eudfN&wu$7 zuBQ9hD^pl6JxN6;uKP?#nm$P!{XoZ^#_#47q7=LYN?T;p3B%~vD(a#ker1Y|$=Q_! zI1i8G+U%hPcxhFPm?yJEzx&Ly*tIGiI~GeXd!rfG+8*xYhyZ`;A7xY|v5-0Kac<8D z<2da5t5QB?=bE4m(|DB%l$70D{aCLqpQg_s6Wz1LYEW&<#m7P1Vmxpni8VI#m~Ny9 zm29rCcT9UM?mO2V|FUYvJRv7DsL(2OCXT@4&^N^H9EO%1#O(yRj| zy0Ntnm|*$}kekjL*fy8%H63rA)=jMnAkwqPc>aBCscK-3gO|#nu}MuS{d~yhi3+zA z$($#WZ_sv%e<}oMwW}aWga(TtfG9;Fij}XkVqTdZJtnE$3GteE5W3m10m^pEKNWCq zJS=L9Y^o&SvsAmOd(;Cq~{yEKRUVU_gZ^ z@dLHRzo8kecPCjR&V}3G#CN)bX};gPf+KV))*l9G-MAd05Udu(coh0tI_6ngq_3k# zO-p%rgvA={@aPhxkFQj}rVT6}`>~D9zeKLxR(;!BIr$#6HDAsa0%U=0jzLlhSS%k; zep`v0s)cv|hK$RMs>DqEafyZ>C9-F&Yl)?sIb_Dbo1HI)aHAIA&K}?HL@e4!4^s$H zz2CamIl&?L&Wg2jo#4KG^W32!`oV=EM%Y_OWy0wVpu=ZW#H{k{n|&?j`S0oeOXQ=L z{gn?pXPfQVotAntvp>BiDxS6P$`>pc9#?pW8OrpCyjFrj9_jLn#!;n265pl>qG7r$4OE{=-T?cw}y2(c57ua`^#+= zKKnf!@YWA?Mw!gQ6OUP#W0erq-Yq8+xz08G<>wrla zmjUZP+3Um;Y*21+_T$fA4@RwizmaC!Q%$%3w%=Z*bvuUi^CBj@Z8g_o)+|MPs0(p# zpo6g4a)~o`SHG70zWuWLo?p=Z?Uv!!(Ds6(4Gc2WZ22QPI$Q~6bL}QMBK=)H5h2Ff z(avcL%jW^#K7J(m0?&0_@*U@+PQKFhMQ?=}5;a+7h0YX|C2fNKQ?dG&n5O<=Nug;P z#HY{{s+R#Qq#Pje@r{I zT7pJdR9`+1Hs7n#(uO?h*Q$|-z)R$i?X8giY&sM8vzDQrqwgGR{6nH;tIn%vN5V3B zAm%s2>f&?xWVTY5dx88^#Tf6z4*q!@Y~Ov-T~$IEQ2goXoVLI-mMl++$$oR7Sy zQJyI%mO=Ds%$0DcF(sc1CmS6Xm7LfLxOOFxV0k zw|0tpax?(kOkhhxJ@$D@(`98gP5{VLKd~~J?~Hu)n)nSj(_>djBev3Yl|Vt25%Po3 z{=)w91bCA8f?yyMQ55<3@Sq%voJDEOR7~_scWYw`prOno5IXc&FDZJUm0XL|&Zlg&aHx#)@YaE=@ilD>-L38;?}?~y<=v0nwe&kp zagw5qOB$nHZa&g1y%lL7kL0r7_Zok<%*wmc3&Kc1JJwoeuFBB03GDB8djR!nk6vNdNw@*3b7jxnyS{x>N&FgI{X3(X*7ZT zZdXa1e^Q%9{%f#6ql9%jHAXg$K+e@w9ye_8wIwC-cCY(;3My|F#L@QcecL1AG!H8i zuQd@dFo=V%Ks#e&PG)v8anL3DR~+26`pp%A(FCuVK8h$?L&!nE#!OfH&pk9oM3Uvr zZINFiEeAT=LC`_`oXiTyL$iA#`6)s=FFencJ$~wFnY3W+o?K~+e&$4-<$JU8MgxSx z!&?WY*qsmgT@o$*6b)6&D?kfYOnpOsqb@lpNLtNxFnV3W7ccqBzJB*f1AU-cMfu44 z>0q+VO;prmOJllPrcTIQp^$(pyamC0xJdEuO@{L{JxKfG{bdp*zI`_+giZD3J3xCW z1=Wasb4)qgi2Zwtn{Lhnrgn>`rm_z literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/Indicator/lotus.png b/keyBoard/Class/Resource/Images/Indicator/lotus.png new file mode 100644 index 0000000000000000000000000000000000000000..0e33fdec0d3993e97c85d7de85923b25ac3b5659 GIT binary patch literal 178089 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/Indicator/river.png b/keyBoard/Class/Resource/Images/Indicator/river.png new file mode 100644 index 0000000000000000000000000000000000000000..3e0ca5e469fc15250cec17c325f448224cae7f09 GIT binary patch literal 19245 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Ξ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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/JXCategoryView.png b/keyBoard/Class/Resource/Images/JXCategoryView.png new file mode 100644 index 0000000000000000000000000000000000000000..ffee70913eca84d1416e87a65a6e7886559bd6fc GIT binary patch literal 2968 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 O0000ImHtz0_;2s8d0s(@%1-s-w z_ndWJ?#u0mUR^a+^?hAc-Lq${Jz+`;QdqA@ULhbLV97{}Ll6*<0R#lZ4RqvZ4TDfx z*t6iJB&RCz^z^j2xX8uDg^Bs)t2st^qf`Y>3A;?vnwp=VU(@)J zS;~U8wsuQPiymxl{`WZ?4qsbaJ2<=B+}u1pJ#}z!*xugWJh*Xnb)}@hJwHG1pZcAZ zmBq)$H#av|Qc_Y^SJ&O$ou8k7xREftbe5Qy7*z3VbaXT~&D5)C6~20~xez5S!8-Zt z;ynjta8`$i5QBa8az*EKXlUs7*%LM85B>f9x!r#%D=RHcK1tc8`*|pY1*yfy$F~hH zFT=y!;%d)(be!#^q@|^a`3#d=w-RG?ds;o)>s;!}><7Dj;tP8$L(7Y@Eu!i+4-O9Y z_V#ASzUl{*sJiDH=mEX znbZbl5irvk1LEbdM4TE3jruS+OcV4!nui6j&bt~;oHnKb z@|oI)Wlp?rM+Y^KyijJWT^riPx1zKCDU&I3#8aF3+-rWq=u46j*pc5Q)%Gcv>AadD zD!D9Xo*}V)s#+zkD%ROgsz4$#)u}QYcYv~7tj~b#g#)k(mfl%omKbE45o8u%o_jO} zuK$<{%xn6w(fvh9RF@$X)oi^61J;w+V!LQlk+Jegyr1qaOCl2Y_~c1F4{o`YS(gJm z`nSv=Y@eVArmV9an;}&JvxpIi<*+|0iLZs7$IU#dxE0&GU_dP}`~{L3LB`>h;)4?n zj!JDU7r6>-N?29jOl4_PsCV{&(QwNdxSUb7G!dK+Y97qEpdT`KFbK zUT!0NM&cqsZm$C#@n_c8{~*_?yOCtV6w5(@_P5tO>AKsyZ+X(bSaY?IyeFky!z=K< z6?cbos#9gZnl!>d!l^f)5mzxWkacTQ}-4s#{$y3zWv*kHR zRDjNaLFtExnSZMHdeNzb^koG&5x;rYz&*Crp$wH_FYG=lC2pxPSd91!(fsuRYGd`5 z(9pxUUXDHbmb`?dMvzqt%eO{n%bKYZoO$tG#TG#-%T7ltAf{HR4sBmJ$7mxuA-N3_nT50Ex+tHlZCt)o;o&qN_EmV$w>rOjrPT)x6IKTOxa7wp zO4|!`M*PICH+SjVZIA1v4(?4Q`oGQgme~vt_csA%0x1*ZPv2V?qW)wa0*CoI0`3Ft zUAcXluatdt?}*x}XUCazD4Es47v9Vj%kGI*J6kc#hY3Sy(?{@swR$SXtNb3roLMz! zVH;Ra_-y9^Xe7_mymntBKaZAem8*5D;*RznXxNmtqhn(l9KQ2Zm_;*q?q(_GnV}ps z^3b;9XwLyUi@UzV#D2%)W;e39(!jC+GqM3{VhxPvhOUQGX}=`PUwr1ZxqVlB-K;?} z(6OoAE<)dsX!&5Ja9?N+h+|Lm7VL%dmioGn-tE)1Xpn>&Y-qQ~c#gR3x;Gr(#UK^VJ5@#hNI0#gyCMh6oYv)FvXE00dHs3OZJs;Ma@%11np9(A zqe)SX@5Z02Pl8{F9wm2eQX5U_@ea8P?Ffr(ph5u8l(45!1owqg)CHP9bXb==VB6~> zSiPA`v$*mbl+QnvK-Eq_s9W51eE*R%(7+nLp@f(E!HgL2^btN@I_JxU7#=p%Yrg1! zy$BUcMRlx>$p_%H@>9(+Qx*%d1$l1;^bH@tca?lD5n@x9Y*tecIPV}GSkK@lyUV3P zB~?5PD-p@PnA_FPpm`F%#u;kv3qZS6_eAuj24+!bw-q1-)?@>5{^m?5v*oHgKS)rx zv{u3SRTtbWiCOm=b02!%6p2ld0n#|uAcs(JXwLY#;8_etMt^Omn)ayY-!mNS&Dahl zkV6x=O6_@5=`wuL=3wY0okO%>N0#siq{ogqe>EHT) zW-x&8y#6=;GyC83f4h{cluSwzGocWu@j~+ps}~XHZ}B2|hE#vmBUiH&&Y0HonU`vU zzhqNnm!1gh>fN}`OuY`cZcZ;fuA27gm>hbtLg-xRsem+=b*nRPJ+M?mV<;2%KFGNt zH17OT0qg}3bSf{TZmwT(|{aNU5}7wfs; zq*WJD;4ktTdjrq8vuTBhumKRmsl>mI&#BX?bRkZLfU38^56v*}mnaSX3Ik{YG3#oV z4BN~PvVwVO{?}pAbJ$YQPF=PMtA`!6)@gWy-Y9sOR1COz_Y5$$mzZ^JVm^HlE|+Si zm2GxPJ;E0MvcOPbfVWzsqPl}+*h1};Rc2?*^ zw@oW*f@qxETbF5N^yrIJ+0B&n13Or~8x;Psc+bvgFuCS$yIID#DHV-tc*WXGdWDzZ zJypA-DnQ>IQW`{66MYb`DXEyX0varIz}5}*1c=C?g|_HuuyoWn%}rFtFwb4kdyC`j zC!q<+$is|*c>~(uZ2^+_6^o{pQJ*7EH_DCo@i607m!GiGTIoL6Fe7lQBxT(|+d>Dp zuu{{yWYrXwttppUN#v*^>!hvoQkPCk97V!ulEHxJ{e)=A^#yo4>+Z$n$Sgiu3ke07 zQ;**e{Gk#yv7-o%gm3~=PC#C9qWEd7MEk3dD(zyju=MbsNre_O;czSHA5%rqb=h|o zusv!(df&;S0JN1YOnMzZ*1fyCG0puHK;(4?yN}pLCZnA9cL-gGioz9(_<`D@+hoxF zYlsWe>4V@u?%go;={J9chZ&=sN*9&!WYh~7&0yj9dUN^YrP7Si1Nre)LA4Na(G9QA zaHnJ>p#3wH;dP@=P&6;Fx-&7jEbHXGAe%LgBc>8F*kyHUHZfi>-4o|OIZDpGMq3#Y z29ZmC&A%~50O~eVB4JPVJV~?S(T6J4uoMiZg)?n*Ai9UL-x{Gp!xD3Ph1Z^sYbqS;f@Fl=j$PI>XXR!l(aUf!Mg4r{lcCieO1D~ z9RAji<2s_-!kl2r(f0xcc=Bhbjs19t-ucx%M3%<@Ve>dmW`-zL1Jv_oTB#2 z&J?9RJp~KcEc2zf@^P=gI|Y!|Z=Ruj&%m?JjLa5^b`|W7Iu&e6wph|HAF~UyM^RU^ zRy}$8JA@yOQCmbTZXn&bhwDM9G=RyED>1vv{yog}!jCDJ@oPOn`&;S1ugDg% zsVi-iW8f1!N~OcO;h&*Fb1uqw5gs`-lI^wnAdS{f&`@g*Fm?-W>1i!N#ZNocMA1pE z-d4Jb<@o9Na0Nb!-RXv-VySinCByXPcCi$SqX`j zKa~&>%6jo(!ysQr2%~(UG>XIk(F}nn?+`>1G=ta`Txg-fU9c~a#Qrraq@avDzFTNj zi4oX~QZ95!x{fDwz9taVA=63d)bhAp&9UFUdj8#$zsB>1`y}G`;b9FFNqmj+Y0Ddo zrILfkYS%@_P7noseyC>W+gd|-EWDhKm>V(N9HzKreBgHgUlQb%LYR;MiQL4Z`eGHl z{CY9sP%SNS@VN!qYvWsiMIk0s8JGqj_NgP4$*R8Ptd-XG5O z*3-LhQ?z&ZMl{z>CO;pgbyya9cyu70F$dqbwQF;xDu`WBTn32#>ry#}&;QQnja@ym?{3KI_J?!oQ2; z#va|REs?hZuiWI~kG)S96UY9N zg3NXy*O^2E`%@K!q*H`Ss}%m8Ti+`~T=l|tA<2-Pk-CO1-?%yp9SyPrQU3N$yeWVU zsMN)(WAAe*ku71?=sA$()U!ectWaJ@y*MnQnESK58um5 zwe5pHaYdn{0@PkKGJ!9;Jhj0_d1wZ22+0+99vilRgRQ2ufmJ=BW#i$Y%A*Dmj%4QuJDzUKJ=>l~h z0H*OF;k)qfDrxw<3XI4AV_Xq8Y=-Y9H_oSX^uw8)qfeLW?1o$%x^`m$x_o_amKcGO zat=54`m0D)yu3urbF1zcXL|26O{y&&ADFBJ6Deh>JeY$Xkwkk=te>MdW4c9n0Hy5*7f$8K;Hx`(G)h9r}W)h+rOv%4;m|=xXHhQn#BTkb=S?m50??2pZP5|i{=rH8x49K=I z3l~|Nx$oAj!2Bo#fl28-+8GHjRNVA!6~)`zZ-e@(%%b^J5E%W-xbvodS+g{G#=vqY zlkQ-iWJ#KYZXBd0PAyeLzQB}|eM&4;V`uxm|Ba-CfBBLOs8H5+uveAVaBx{D ze0txNO}lEKWL#<-6m^C*UZ9G?f(?{ULkB%e#lMGbU?<9cg37>gT*0K&ksjD|G8->= zX~|?uENFFiSJUiW>KiSX0fWOFZnkKcUfBqFp+Q>tQZP!Y zjmG+?I7yYuCTvf;GoM&;GDHk?87^IZM|p>71A#iNsvgdB1|%V# z+3pGXdG0J+)kDdmt<%7TS9q;%&B5?W;s8a=4ySQzll2U%XRsNsg1z6IAdl|@V5IJo z6BL(w(T%2E^S^v54u<(f!&Cmw4#DHqntuNx=>Mzar3V=K6t52|kzC~3oc-&5On|0A zhenD2XC8|NQ`?!RjrjKc)*pl$|%_dAC zI@%`xV!t=}dx7jwXxPNGop06+$NYbS)Lx9^R;rg7O~B*b$4s8d@^U>Ak+#=tDQ=IO|J(Icr$6I@#?9lI+sy)t(LivJrhNdAEWc)v?^%@ zM_nVmbu#~=op+Szn9e?nbo1v`t+xw^{I$Wq3yOCNJ6l44_yNH?AiC zewP}td&x*QGP0Sz^yYfi)Bh3eaDbrOYMdxEDtRSeb~je(?^jH5f4`KQr@e@l&UOoqSN_7?=n87m&470_MT`n=k!0+qg{7j zl+R@3RtbTh(o#-%8yGS4ub+-47t6Prf-`&ZuJoNm2$yuhp*_i>A-$Y1Ki;L1%$ubJ z39Y{t3bvhe$?)9#i?aN^B$c;E^OMh7Yx{vx9VZYuKKRLv07y}|D5n=vF{u8mQTBwhsnX@4`f z9JlT_#EKN~=lcfHg+-eyC)q#lHeejGJ%8C5WG1lDWre-eh3T6p6U-$qib9(+gVq`y z<3ccIljP`^I5Fmj8=SYbnmzH{Xo0*S#*Ti8-C-$rJ*%l!?%gW+!uOA~85<1iB(fB@ z%47DPZTyBdSMNDYq#jKdkL?BG;Z?oVXU2BdBoVdE-tAY)i$S2-3&OyJ8WIF;X@WGV zwG^{}%`)c5<$U;~9ItwDKbcg?HFKeCCe63;sv5?KboPcs_{rNdEeZ7?6#v2ij=oOE zER-i~Ws>q+42w{1t!%tpt8zI##mL#s7SjG*R{x1VIG#gtmNf{Qk{$u_v1!`++9k~=iUXnfr?WsER* z*YWX+;|{{^7+z_w%rBrTp*5@FCk*Bst@zRwQL|1M%{UtlM(Slm|58SLWBUD=Q^1-A zUW1hNF8WXOFTtpGF@c;g51OiZ(s9%77yO^ci2A#E5n^QgjZ)UwU6qIjvgvzu(;sdb zB?!}oatvPR%4;mL1Xy2KI0+eOqlh}oaP&qMYPYVu2zHb%OcM|m9V{Dkpw2KowI$Ky z7F{t!f42F6(AQ_9-`4%t9MW+D&yx-n{k*B^sW z*9Ibm->Fv8eBndANT zqwu-EWkgw{G8p)9HcKQODLyg(7DQ7}tI2PG`NB0tm;Fg(rwF<&8$|vm9&gOtmpEmahpnuoZ3k z3iHDDVfIewDek~u`+hlN!1>{-Q1JsUMtJRf2a>_L=J}t$BGh*vEFLY!2tT}7>;8bM z^C}E#ccR)W#=g$RN!%brOi4?HcXJ1VEBUYmi+OX-G@i*alFoWUWwfBtUq2+q*Mf8A zAO@}bI%#AItha7eC6B{-)kga5e#YwWTR3Lnc`R4I z^zeKe>D4c-$3nCfARMQ&{-pYzjO`{4QjadC>jR7aIyJ_jYq7|wJ4#O+!pDo&FAts~ z&cH+|iHr8f*{LFu8&04`nwN=$qCR_A}Lsq6?<0orQ zg4rY>Yu)0f`A_d zgqrOC;W7?$(Nb4QxEcqSl(g82Mw)X!b0!l7#iz*b{HT%L{Iy&l3#9~CRXu|3k&dG< zOys?vn;%nV(E2j}oP_=v%@(HJ)pg;2u=3q{la~nPq&t2+#thrcon62v?RyA|&1-EU zf{*|dYSrK|`J0>!T`#=ZJ}SM7fvWO(x?oc{&#uj0``SEL5jdG`9chQf&|G~?+k^{It=ccsi(I~1{ zR|S0*A2;u8 zTiUUYn={5dJ~Citd|VPmuW_eW`q}V->balPx_#IKcZB5qN0&8>W_(koK`?zYaGOBr zvRT=w`D1J$_N`AH#oAg`Cu^;iiPyR=i3%;=yUIN~Wm3Jk_rq*q0wxrj*gcK)T=z31 z?B9G!I+)WKMfzdqq$LOJfBFf1 zj2F>(vTG8N1RI=^9IwC#%I;3R>O9kSJRjeXDS$o}Qdz~fHo)4edoz+V>XUw`|L%y@ zehKf4XS3mU1A!Bi%}cA*J;qu&?U?k1Ce*?c&<#w7-JsC0_Bho)4?QWrS1xNj`4y+E znFaVRo;-=LDrb4K-vM)(aLbFlHCg1Uy=|x@xmKxdbOBBzAA{OVuV(MSD4wY$Y`E)6^3 zhm`%}mo+yX7qfIxk$-6f7=Xju+Trs2ZRYs!x7I35jgw|$Vn8tZhN%@_||{}hn6721$vNeJvpkG;UPJ^UwoTO z2{aSUt}JDAo&zcBG=t_JHQ)xW8qhS zHQNnddE%6pu+PfGcCiBLP=&8X^}eK%9zY~Le3&JX%3SU9j}SVUMCC%&c++`fW-Ar# z($col&u%6^h&GGU-!Z}F3okr}tnz?(`;IGgfThVW;{~Y5Zykygxt0VO|Mr^ILE&x0 zn#Wzcx{rNf{q!Qai4;4J={?fiX&!8gU^HHGyad}Li`)Fzx1nRbw|@0$z*eTp#Si@4 z=A>EilCAn?7d2*Ou4&v^sK=R*svndx_4|{SRuA2B0ap%WJnHXJ2B#KH_aXs@qfJ7x@Pa{{qK)`>xZX)FBaTdohWZb zj9e`QcmC`Wu|-?7b^LAl8DpK$sa@{movc>cj{m*D&0na%PrHbB1Fy6Z)&~-64+^z-Wfp z%m}MR=w6aL0jUHKfVDcU1rY*{6Kkme1Vpe_?DOj({~sgZX}&IfuD5|Vax>=T%OFls z{cvR|b}wZc@xbHt8#HvdyvA1LzB!NH-I{?jP8!E3d5VA@=H_)>ap)S~4qsVlBl`ab z>i=>HFxb$)6yc5@{~ct)++?|a^q~&evLe^3@~xW5D0LXWKz?v5br0=xq1tS7ADPcK z#PK4PiTK4z((FAps>h0dG(*}tjD+9b;@4fHW?uqc>(J?ce37t@eKyg6P@K9;bSQRs zAotNu#dzXXB6Ow<67D_bIWz* z`v&WyzF>BLkL3sEQ2L>E^}_9!$>urvfZ*amWHf)Kivr5Bne0r{9Dna{%U$>J@TIxk z`j~kbMcyXRfSz~mT5U5Qx<99y@Uv#dQbaF7re>-7x43|X_DaQga?MswNBTm3Xxy6R z-Dh{r*Yfe66>?*^7qv4wQcZu1E#{Tkr-uj~vRQq@-1aa{M-@(o@5fs7T=|tv1Y;E< z4y8#3u$E?)ryNq7xZ_*>ghjSkSFlvObTZjZMn2P4G-_Xw%4-a$@o~%aS@-cP{&b?X zPiv~5=Np*gZSRyrS;|@4iO~zkv)liV@ z-2OdukRD0eMzeA+J2$iW@F%lj_an|OS&~?SYP)*5ylmCjCU`i1EPB)Sb&n3egTGr1 zMSi}17Wpyl7$v`$kWPHVEQ_PdB>&5dnT-uIlD~z(-K6v}>xVW^*&Y4DoYsGYBRtJQVK5v-<^+byPjX6ILB4;>y-Zv4>&OFQF{;wGM#4F8Q zmGm`s%Pxoh{->X;Og5)mJV$_*HAOCRnDZZ-EHZ(u6WUZmeyU*FR1s8a+Q}=~H=^;8 zO@GE+MdNKHDLr1wG~+*91;z%atA9q9;abJ{gf3INhZh_x&Rnr^6lUa+&Toj`GG#~X zu87H8_6=3M7&#r29`Wnc1!>Tru=pmbIcMQAJE&4!YmCx8BdY@~aY} zrX31ad-+U$>CQ0xV%bYHUM7Vf{pOq#fW-!L?IV<$C(c4dalmg7c{ebFV}na45F?>+ zG_(sb^kw6_)PcdYb57U?yUCovw0DK5LmSU2ak}e`KYB|``^&p~Kp35R=tI`&#h2t* z@pOLG7Yfp~sjhnxw6qK2M%ofALY&vhecVEO(bT^aO;3{on!Sx-qfL~lC`dNb4R}&3 zoWbo*+cTgy){2<`ua$6-bwvwRg@ zUaGX#u)@Gr6ZFrf4QWWv#nLT;VKry{$Fg?mFu=pxxKf4W^|!)W3^aSlKeU5uiFN;F z+#Xbp$*&~>A+a9|RVZKXg&7eRqDj3uoAo)O;uGRL_<;uzJxKyV7~}i3##m1=s<)ZZ ze&fn0G_WDQk&hLBtG+>4i{pUiP2?rn7ZN~*u=?26K@1`dT_ld_3{|Q?y{LubA}I#M zMjI6k`leA-BRYuZSc~C!A+;i8Bfmaa6Np!mMfrI}gQk0@e^%xE7@B?Rie_pt8rJ+Jy#m^eh=~0vup-9|IT*c<#nQIuI`y6Q zW?$ckDPjs8XQ{)n%bziOV4(@KK@Sy)(1zLW74P>%ol9?Cw1ChD9kG{00bNcWBJPn= zmL``kz(swONs%-McUi&d)jvZegVWp5)sRl(V z*sa>*$S$(#kER>aUKq1aK=i}ZjqtCHZlKe|-6|xI^ z9rW50uHGq{r8$I&ZpVPHtB78t+%1im*BS7yI{J!@hwdO(pGUb3-!R1#2iy zZw;)!D`ihl&2^*{k#1+#w%MlPAAV7O$WbGGi`$Yda=uGlH-vxVb!De!{h44|jPRT*SOR#@8migum@2E&}CW=)9w>O&v;=w2;t{nlorX&5QD*sf--M;_&a2w z4Z~08ch|@MH+%3>B-gmCv`jqb(~;CovEf`nC>H&zgN(UK)w4vfK;KHo$9I~St^85@Zq^MWb34<(ZdSn$9wasJNq*^DN%!6<+QRe@g zbc|^6&t3Yi>!UKAU~)dB7jsB{Z#0?@w2o(GRg;OVD5qu*bjU>`%yyi z3Ja6_PlDna$VmozvAV^Qjzduk%OY8P<0XLM8%r=OlJypV5soX9=T((;z?u|dhB4SL zg#m|oe@YoT3$t8l#l|9-pB4D)W!`(@-HLk$$3*zumHEY)4t~~RV(x2<{W0x6@rrwv zw)E+qKes^Dh+qiGfe&)y(&I%YO)@Oxzj9113$h^$TtYcplF9WMy$H^~Dkw)R79$e- z{?i*exL>cNL+bV93;reE#lDj6TJ~BL^f20>%IEr5tj*{T^mlu0o++NhLwW~s{EPO; zpX&Y@kbvdYZRW&ebNl?us2@C3?iY<0Q>g3Enj^fo1tSZV!)7@w%_VP(5Q^`IF#}-B zd~UN_4SMrVf|0}O`&Z{Et`E*5zlGX+<`z1nHg~O1&Ylt>BawUn+PoG*0(FcZ@>8ZA zVc?2*4pvxbchC+>QslXT;0f6_{ZS@OlYHz~mseA>lAkQIS_i>De%&*<)*_y0k&zf$ zO?XJ5cPR`I*rLlifGajuS&n+UZ_8SkStC?Vk4Gc=^5{CZH2UB+Y>x}grXh7Zl+hi_ zj%k)n?%}j6K46hVdOo1AuHFYq5)505*kqzK{q8UC0A*h_G6*&4l!bl(uZ~4Tea$1% zoZXq6U(!G31-y?%LZRcIa55o|+Se7HzR*-x3w!Nt)yUBr+~XQiUOHo~&)_~;JA2*H zd*QnIYYUU7KbO%e;k!H4EU~6Vu!{We@$^Xrj5qx3753# zl91~6?IRv!<=TXapk5`CO0Yx&&$2oGDMaVUzJzJX5!_;6fA$4J?#P;PW!tJ%w|lf2 zwN&x8lZPA_cjNw@6kKV^)WyH4S~tNI=*@qe$a_vO5her7QIl`?g8=gPT=yTXzS^ka zW)*;~wHN9#yK-k4`BowMI^+E{>JTPbBk=hb?Uf-_DcvS@0h%>8xJ|2ojs1rrCDIs( z%QTcVWOPzht;D4tYLJj$K;PV!R>Uhv5QsH4G5;?M>q zY8VAp;6RJXC$#<3`I505!3|U;<=~K0uBzyrod}q!zZq(rArH&TnXQr$=@hT%di&eOr(Yo2IiqeoCA?6DNkz|# zK$g~gY`g7Y1#VAiy{Rm1nQv+~oMtYZ?HGRTLFf_V-jb1``uCdeZr@cmhCJ@Im`Vqi zB>IPF^a-myu!*hFS9tqRl!iqYV@CYr$a%AH(u(3)6#L=ujf|FBn-aDZ94HuCK4k=! z&?B*H(|X>E!9mlM2Rr#!8}+!6`etEZbp0HTBFwJG%Rry_cpvBMK|W{lFFDhdyJT2y zR5V7+d0#$ax&O9NQS;HYqs7vDPjE4NB`>Br(AK7a6UVLocW*r0AzP!9?SOnv3@T*J zvnCIB%6o<|t7aXl%;QTM=k1$XK^Yg)W??WF28@JU#rZK;qG)M~1k%dRzYuf_>at%c z!9CkYc6xi^-2ZJLZ+18QC#`UCnDH})p@U|_{++9{@rKvlHy0uqcgV-W>S%MTsrq_^ zj7~Sh(>vfg9ycg}NcS53^*i0NU&5Ua|0JyJ?-VVgLl4;Co0w zlo$bTxBDmQ_G*Or#>T!-IKt9)h8aS&Sx8}md5UeX zd9XL9VwM4iPUzs8B2ZK>6YEsP;r3)@eNEJKaq+qj>8tb;Qq%V_K1d#cPAuU(+tjxX znKp_l$a!8VYKA={9V_}rJR_CfA9FKj>neD!COz}XIpkMgGIKWm!N56CwfY?F_mhX; zUmlm|&H_Y+&v%livYO}y5dGg7MK!vm*33{EMV3t4czIQ?$&-CKS5z|YAz z79ZIG-ObQu{a+HQn{nd!2vUh(I6H(eb9Jcw`50}(uiB1&3vPD-!_H4HHduhxRdQv|UY zMlY%lB$`eurU8EjRHEG$es|-HLXPx^`5m*fx31AWY8A={Ewyo bHBP+Q=>y*ABOT4<{L{)vD2P{z8V3F!A`x|j literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/apple.png b/keyBoard/Class/Resource/Images/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..f5644a4e116ba9d1f100db7a37c218e2b6de90f9 GIT binary patch literal 2032 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/arrow_up.png b/keyBoard/Class/Resource/Images/arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..33c503ee7e3304fd2dca85dadc0bd47f1660cad2 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!P=HT}t9yZuk&%(UzCMuD)6)Yo z*8gMs4wPjp3GxeO_-K$|r*Ly=nFmnB*we)^q~g}vv(|hJ4jfL7fA0Q2HG2VPw*K8c yY%+Sqx6jsCH@ULyIuV>Qb~dH*W99#C68-~ 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/crab_selected.png b/keyBoard/Class/Resource/Images/crab_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..8a91fb37e26320bb9d77e198d7d7b8661e3313ec GIT binary patch literal 2195 zcmV;E2yFL>P)L~TM8W
    +m^y(?}=_&m0BlPMh`0XYC`5pD^DD>(m^y(<|>L~T< zDD>(m_UtG1>L~Q;DD>(m^y(<{>L~yJ5cKLQ^y(@0>M8c?DX)Y|X#fBK8+1}mQvk#* z{O5+_Pn-jWbS)6(H^I2;a#!{KoFXM~;?)4qgpRmCCc zOS8bnx1h|!U1Ug$lY<+(@zaEs<)w|G_7ZQL;t~ivbO4+(PZna-Q1Le`OI$cmu+KA5 z(i#)&t)g6g2NUd^)WQHWY-^Kpw3tzb%5p@QW#_cI)W$3~rLm;2vBam9}^ zX%$HeZB28pVGYUV!{h=3(RYu}S{SgyRSIImK;7OtV*?}p<^_>86%n1=#lWSXdYlz>`Gc$!5FCX0uwSSpjMO^6SS_YgP{)1SwN|!5=xhL`x}xk$m+8Lm6}?p zsBg0zT9pe0JA;Z%0TiZ|^|Yphq2e@95TuM}L(QTUSx|FbD3GJbVR&DaR3W`AtP)c5 zFu@j(Q4IqbNvfUtaO1X0un(H3^Y=VzPX!|p^J?U-&#eK5@6`E z&4Se9QxSuDC1fBe@x=L}vDWO&f*%C&@gKhF3#RAVKHB2uOBJMpo-U${p@#tk^ehzs z!1pwUSIpwORo_@tG}ORANwLt+foyd5bAP=*nb2r% zG-TgDqal^oW@;Uzw=998BJfB{stV#r7ZRN$eal>XNLkdohW#*o`hh9wxaO)LprMeV zgCDbHv=o~GMd@)f3R3A-M4q)^(@5QaavJvyEzJUcNnQAcpMP3RbQf3YmtPb`_E+)O zCH1UuG$S!T{}IuMr#X02vsI0&?7{$}zdXB1l^0FqIs)hvJytkw)D(FYJNKqwX7JRK z^rRIe7}k(6PgoicVg%+r;)&;e$(ZPtv3RsnuW06V#HBr!* zS2~ZIs>cDtILWA^IHgCji-1}ilA32jA&95<5b@(Oayv4^_ZEY;bxsm1V#u7_Xq!{* z&23s?NGGE~Zu=}sbvC8A7n+w1-?A?nsZQuIJ`e;rRV2A|VDw5_;^A4B(LkIDd?3g; zjL2g3RL`CE7L2Qn2kDm2M~Als!E_LGjz7PQ2x(C{x#YDX^gdLPUS!de90M&akej&4 zV^f}h65qf)2tT)#8w>y1_mkTENlhp)aK69Xs!v8b*2lwR*(scQ=2MY|Mzv=nuA#)n zIn<4zRL69axEQbvpLq2%U1e)roz3;jg86M#ndw$O_07qdJO`8b4llW{3MM(8>S3a# zxz!d!;v%pfIY}j?KB6bI$4RguCv`C-V$yWRo`~+{&8~@y9TPEW`@)VDr0-f|x18{$ zO}C6)U_7K`B*#wqWT=n|vI`{{3jlPifR6EDEW=Hkkg>4dUqRfEUSQcBHo()bI~Kjf z64({Hq7MY&mFm%RV|r1GIqL_Z7sUc|7%LMgEvS5@2vot@C!j0`}O;S@Dbz)as;_KX00R05oCoi@*c-v zKW44J(m+9Ahxinzq!7$FArNGHkA-cL;54tFuG; zi6*#t! z{m!n%^2ciiVeltLJLAvq9qhdMtkvPYm{$n0Mv_091p$NKIahrs$k~?_w$#1l6EMee zaqYraqBn`7g}!Z$xq~E%>BEu+#>_8&O|r&+83`qRSZn|Ce7J9PiV7-8PYVCRnCRE+H_!vD_n+cE!^AmlAL2M)A3&Ba@k&_)u^KRFs9 z0^hsR?#N*R7n9t^_vrUXtn{2UZEfSuuG^-#q!#^Jp;c8@NQcAWa5x+ehr{78_CKOk VXxDr}sv-aY002ovPDHLkV1j$JLlgi2 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/filter.png b/keyBoard/Class/Resource/Images/filter.png new file mode 100644 index 0000000000000000000000000000000000000000..8e425bb776334bd728825c58def6bbe6bdb6a7cb GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!L4Z$)t9yZuJ`5Nb7yy|N5+;U1 z1EnPA{P_md%U=@Y7tGKgaKL`S`Gf}!1_}WiCQR6>Yz34G@pN$vskl|z70q=(LEy-y zu-Ciy{?E;xxUlZZh7Bq_Uw$hy=!UxZN_rJ>d}llK@<}>_=+3Sh&C5qqBh;(k&z#ZQ seOy8R;LrW8H+7OyVl!0C6u149-(Ja-T4C@+9B4j+r>mdKI;Vst03fDF!2kdN literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/football.png b/keyBoard/Class/Resource/Images/football.png new file mode 100644 index 0000000000000000000000000000000000000000..843a03263681b80742b4be7b3af5ac902c8ae0de GIT binary patch literal 65011 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 x0+8KH&Nf$nFHmTIt_di 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%0Dr(twJtnye^O)ss*`EBXCorVy0q}_`Rr14i$ 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/grape_selected.png b/keyBoard/Class/Resource/Images/grape_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..fe393d6ef3a24f30f62562412b9ca62b19c12c3d GIT binary patch literal 1915 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/lobster_selected.png b/keyBoard/Class/Resource/Images/lobster_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..efaa832ebeb41a5fee62c5ad3500963fb0714b14 GIT binary patch literal 2856 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 L&m{oH{uucmKCsyB literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/watermelon.png b/keyBoard/Class/Resource/Images/watermelon.png new file mode 100644 index 0000000000000000000000000000000000000000..cb3f2bda052f448f4ac82958b6911287ca47cfca GIT binary patch literal 3531 zcmV;+4K(tJP) zE9gCJERP~EnJ6iXATypSHKHvrm?t`=Fe!*1DTp5|kRmCHA1R0*Go30kpDVlEpW{ey z#jTMli6A$mFa8-||N7bD7hw|<6Wv5;HKHx=7hNlkBK;U(FqbDYohvSrCGrla|> z7GTjAQMDIHhZQ+Z6ej-o*!mb?;22hE6feXVOh2bJU$szCuSJ>8f~3=ocoj7C_0QxM zVEyUPrWQoWso~Gb&@X=9G4b8_qewD_|$*HY+Ds8``pRpENtdAaq98M z{_xbY*_e#UcR&;(;u>T1r>*(Mz34%AMyovOPJZ*6rfIrb-|W8D>9*t~XL7z^AQBhw zhMW4)#PW}!z~7^J6gl+e$g`1oXWSZ{0000bbW%=J0Q!FeEL=+!I|}LX$@(9U@2{Wl zbZLOu!NQQ@*sh?q;n2YA%y2c;FaQ7y1xZ9fRCwC$o!MI&%@W2zb`V^S3vMxf=h$}7 z8A1#g4KAQW+>OS4-!&%YIsgCNfo4oOOOF&X(0LwyH@Q$J^HTLzRrmC$t4Wh4O`0@m z(xgd~CQX|BEqHw`oqZ#{;fUK!i0XDn!o4GXojtz5U!)<}HWGFdBPvnL|3-R;y5yJR z?|fg10C^2}Z>LvY6)n9gK@jQl%c#OP;wES!@t|b3=mQm4EgjP2SfDdP-o$&q6f)xE z?Sy>|m(ih;nh@z~sEi?%)Qm`vr$I72ZR4b-M1qa!eGyV?M&AYMpH+P-sX3oU+q>$V zUtQzG0mes1M+bxT3FIhnFLLema2Lu=u6O^tO;)PVdG8rO(1f9L=K_#ThC}c>c z9)cg^foKfh)MXL^yhES8B613ehOp}?xr6{d>1!`+KG-rW`N9zRWG^I&+jtBUK!ORS z>P@Z~0VHZ8_%-i4BAwR(Oe={H8NH6rtpJhI>-f6WM&$E45cME7fu!_0epTX@(d$4D z!Xh#X!582zIlYb_9Q)+72!1yuB4=jdO)@TJX5m*?0aeP(!n?g&(#!(dD?BDAYi0of zMA4Eiv+%wBy_}OTe&HUGGqdo|e8%O>EPVYPmop&vol{lTfB?gYekfZ&@Ey@BZ9ss* zN`&~O4G1t$i4dRs0g1LtxU7PJV3f!!L>;ZU5TBgW34Z+bOFO><1G1K1^#e}GpsNMw z|EI)%{{1f_|E(+kTPTtH2vi`d_2p!nqb1H#V+|#_K}#$Upduk*`2KlXVk^;DA!}tJ z$2cLwu3n>%^NBG7bIW65X1>`7Pkfsh6SF)wW%z{-NB4)T4af(3?E#P*)eNAD@9hv1Z*lr<^*5-sucNV_BuP`LT-=` z7IZ=uc~DQ&=DS(7yBlTFMx`=qr*hM55w^vJ`w)gLi=q9xXKCi$jtrbKxTpR0)zMG@qd_`1o$X@(Zr#!V}O`iU^l zg>2|dGOKXDj9D?Kl(80~aEv~%zwR{KrzLK2{JsGp}oY{onYmDn8yg=JErCtWr@Aatx3E5 zNc<3~gzWiY4wv}4(@ZN`-*JsSR1^|7HWGTlCJbFo+((K^gsnZXQz`_8fY@I*!Pt`4 zMt}-8gZc?@r@38Mx8}ZnofMBKQ?oY1R$@*t5(uuFEU*h&B9lc`-!{Wj95v4`vc*`U zL6a|I<=OWRSABiP_20v@Nm#NWLekF`$>XYTz<8uAo6$_dQVj}-W|0S!*IVH{uihk& zj1`iN3CLA77U?oS>db4Ce0@U#wU=F2V-c@;ljMeSF6=|{d1p#gre=3+>csMw&-MX% z&a4GgI~=e&cX>cd{IU&6VpF)7+JT|NvInlt*azf_a^^7>fyZtgrrg?Pb|IPKYdhh{ zGHJKYnzawenU+~7iv%sUMAaPSTrrzovMQWeW?>E#v~p#}u4J7anl>KB5syYfZqwrG zniZKAWr*;06}x-gf#J%6oGu6gLOx(0OShOq za=6cm6fAA>IU$%`Hj6q$4KeYB>kt{_bhjLkO9G6ePXz_s=7DRAahpt!VVIjs*vx2_ z3&v!cmDr%1JmSGF1O(_ehlH*(FuXH>(b*nv>KR=?RNOIHb4cd5%M%y(J4-vOB*i#q zS`R@5q*ZWk5!yR+MNs0L4j4}E2r3}KSKmFlh2#Py4(ix1uS2%yQ2}`;c!Skkf|vGR zR|2Dou)NvpfS#VoqXN<%sNiXOo^sCFD@qb4c1w&|SV`IHc%+;=f(l5t3lJ8r>>cGi zzM^CnrY`Gs)|U!&TxEDX^occ&bUF|UlNZb{mZQyWBJ3wKFs+E@Wa#r2{R0fbD;B1y zN4*suo_V00!z)&%uqK$Us(kb|J;BP{?^4bYK?S78B_>W@as-AilR(T*pmJ5PvMsPO zr{|P&o2}VflpdYm)vQ*7clVe^dfI4pg>xdzEKzPH6YQBSsu=|3^!6CyH2?g8R=V!l zGpQ;b^el_Q!MUcK%nd;W#P6~t5GEFer(35Cf`WhaCI|mbpQ+ty;T z$NrE=nior`h@>DKr)RXxG443yKnVK_5gs%pyZfM|kV;l&_8qI;p|uGHI<_dx?)DW6 z|4TsQM924xR=X}3Fp+|%Yc^+5W;S6X3uFNI=M)OBok8%w+YoF5N~osfis_^XI{mWl zzUQVUXI{!kvls0B6zKSXH@es+=IqLBu$L6T_WIWGRn*A2H-PnB(4pfaYQz%bG1x@C zS)^sQ_Lz?Jnkkvgo`7KJIQ>O676{HDZLUi3bPzqcgXi>GXBv=Vy10C`oJporX=Y&m zCxyDJL&fV5E72QX{nHsU^bCRmIhI;W>b7?iIuVHpX5@6^ke1oLAvlAyA^!*m(Q~;% zH4ZnJ73p*;wKo0oNK|rdEtNSurXZOsS=S^&81J5eX_AxP_etK;;4vWX*jSyjaWe$JsF)L2A zVVD6%bL{@P2u~|a;cbWhfsx`36C=lq6ryq=POTkLQavuw%<~2ES!6s0W3K9my(dO4 zk0`LU&WtQ;QzEls|N0Pq_%26~I)+28Y6*-G6F0XMI6PZFWjgpl#ox@##q|;e7LU=d zC-k`9KqyX3WEZyS3zoJv_8D+G_xtxGGjP9tU35kU((>sNt7AYkCgOWMaG77EKqfOSbvILNkBUl}6A=g{!a$8AR(4+vn=V!k*)~_!1_llbC_x3L?t~MUewsxt3 z?W1{O!8kS?c)Y#Dg6#1D6#}s`vY5XlR(!;V15c=vSaNf;NKtG*eb3_GLTU}VYKA{d zta+$h%k~PWK%~`x&*iC|5KkaZMC6X2UQM#am4%0F6|YS?@rU<(VIpS!dw%7XT5_;* zbetnLjEmDM3g)OGp?){9Xa3W6tLWf94#i^LV9*-~xun43 z@_1X~Zc-^D{Urx@o_|;-_^0ddA0e+2?(_v*@)Pj4bjBmr$<*7?-{SMS{w4y!?w0=k z&d!dGc)X*tzopyf4+aoPBvYm}Y0{)glO|1?G-)C^{|AL~Q;DE99o_3J0|>M8W

    $m^XVz{>L~Q;DD>$l^y(<|>L~W?C-v(m|Nb2R?;`Z- zDD>(m|Nj8??IiT-D)i|o^y(?~>nV+7Xp#T`02XvoPE!C}*%vzGkMH_^%)p>+DoY3t zwyXjkj9;zb000K;Nklb{IK>l{GN*(@%rx`-0EJf@fB3Oy5IujsKN$|$?X<%VdIS5qPM=(B?)E1k_x*%lq zgsq5;%*ot)!Y#9y1O?#Cb(E5!!bgR`MaSrfA@~4CD;Y8<(VIkYfRY%W7Xr90ggDm=IWFRJdJ@5Hx{RLOmPnVnPUnDy&vf?_1j%;Rq){cu96MY6gdJEP~vqc_1X5I^LgzkSrqV zc&`u`-B%d|ymtz&5SkFAM!}tM4urS#MnR7NX}`!Ij2Rx98WN%qdMb)~kkrPL0%yUP z!})exS)f7?DMCF+A-(6A2?7-&E>U<^h!#PkXtRQ(3~JL;ZxFzzl-PiUNTbMEVF=OZ ztsEf>af9L}P!Q->B@U;-Sf*GVA_!YZrDzyK5Tb7!D+EsWomE61Bw?y)0HpNI@{ZQHo^ii080FB6+ zI%5CzO2)a6>NF~oO@t86V^qL?aoN0yJ5P>M3oH;B{EkbMB_;S&;WbR1v`=x>a zSto?CNMWj}5T2YWL^bmwn6P|YCXJBD^h+ius3Fyps$fseW2%6C&qmZL>4gl|)cB{V z*If%yU2_FGA#vuB|NMnr7w`fLzrm5dp#@v1O zE;Vb?2w?+S&#KMH&1!}XFygTYQ{*g<;f-2x-31d!y_%$%>#!W^Bb|?BX?%Pwgp>im z8fT3rZ>!;9lKJpqYzlVv@~n7nzmpXKGM*;O+`5>cVA&vZr34HWqIz_oI#rTSMBJ< zgfgOaw@M9!GjQ#m!!xv_N!ZV^3jM@2v0wj0CpeZe1&cOXiMMUZiG6OG<`?F@a{(Xn z5}qW32imPS;zb?2b?`bRC}1Cp@D3#;zU?uHDMVhuE_-JHvF%PTa1-!fyK8S1V+XYF zZJ1ch;OpEZg7LY1(lm{Mt_l+-UjF~|{N3ua+ZSh+h9V!nApkI7_#FiqN_qk7tIFM-^IYfbyH! z$j~@Uk!hr}un-f0e|7!9B$z-Dcp`CXwllP`qV@L8zU*NREyJzGK2k_wjeS2Kt+Q|a zpK&a4WCpVz&kAo~VWwqM5LDRaW_BjZpy|E9tX~(p{BHK=mOEh0r6(p3Fy<^Bk`;+L zhPL|PmQ)!joJ!$e$CBl(IhI?qRmyUKw{ + +NS_ASSUME_NONNULL_BEGIN + +@interface KBShopVC : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Shop/VC/KBShopVC.m b/keyBoard/Class/Shop/VC/KBShopVC.m new file mode 100644 index 0000000..cacd540 --- /dev/null +++ b/keyBoard/Class/Shop/VC/KBShopVC.m @@ -0,0 +1,31 @@ +// +// KBShopVC.m +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import "KBShopVC.h" + +@interface KBShopVC () + +@end + +@implementation KBShopVC + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/keyBoard/KeyBoardPrefixHeader.pch b/keyBoard/KeyBoardPrefixHeader.pch index 6f7a6ad..a622d40 100644 --- a/keyBoard/KeyBoardPrefixHeader.pch +++ b/keyBoard/KeyBoardPrefixHeader.pch @@ -49,6 +49,9 @@ #define KB_NAVBAR_BASE_HEIGHT 44.0 #define KB_TABBAR_BASE_HEIGHT 49.0 +#define COLOR_WITH_RGB(R,G,B,A) [UIColor colorWithRed:R green:G blue:B alpha:A] + + // 当前 KeyWindow(iOS 13 场景化兼容) static inline UIWindow *KB_KeyWindow(void) { UIWindow *window = nil;