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 0000000..54341f2 Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/tab_home@2x.png differ diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/tab_home@3x.png b/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/tab_home@3x.png new file mode 100644 index 0000000..ab6b987 Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/tab_home@3x.png differ 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 0000000..fa0f28d Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/tab_home_selected@2x.png differ diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/tab_home_selected@3x.png b/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/tab_home_selected@3x.png new file mode 100644 index 0000000..1579dad Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/tab_home_selected@3x.png differ diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/Contents.json b/keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/Contents.json new file mode 100644 index 0000000..46617d7 --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_my@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_my@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/tab_my@2x.png b/keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/tab_my@2x.png new file mode 100644 index 0000000..c769634 Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/tab_my@2x.png differ 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 0000000..9f9d55a Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/tab_my@3x.png differ 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 0000000..9afd604 Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/tab_my_selected@2x.png differ diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/tab_my_selected@3x.png b/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/tab_my_selected@3x.png new file mode 100644 index 0000000..79483e3 Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/tab_my_selected@3x.png differ diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/Contents.json b/keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/Contents.json new file mode 100644 index 0000000..94e016f --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_shequ@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_shequ@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/tab_shequ@2x.png b/keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/tab_shequ@2x.png new file mode 100644 index 0000000..1298c86 Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/tab_shequ@2x.png differ 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 0000000..78f9d1b Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/tab_shequ@3x.png differ diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/Contents.json b/keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/Contents.json new file mode 100644 index 0000000..e509d9b --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_shequ_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_shequ_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/tab_shequ_selected@2x.png b/keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/tab_shequ_selected@2x.png new file mode 100644 index 0000000..6177181 Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/tab_shequ_selected@2x.png differ diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/tab_shequ_selected@3x.png b/keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/tab_shequ_selected@3x.png new file mode 100644 index 0000000..f0c0a08 Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/tab_shequ_selected@3x.png differ diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/Contents.json b/keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/Contents.json new file mode 100644 index 0000000..b5f1900 --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_shop@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_shop@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/tab_shop@2x.png b/keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/tab_shop@2x.png new file mode 100644 index 0000000..4836fee Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/tab_shop@2x.png differ diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/tab_shop@3x.png b/keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/tab_shop@3x.png new file mode 100644 index 0000000..a980981 Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/tab_shop@3x.png differ 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 0000000..4478dca Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/tab_shop_selected@2x.png differ diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/tab_shop_selected@3x.png b/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/tab_shop_selected@3x.png new file mode 100644 index 0000000..baa22ac Binary files /dev/null and b/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/tab_shop_selected@3x.png differ diff --git a/keyBoard/Class/Base/VC/BaseTabBarController.m b/keyBoard/Class/Base/VC/BaseTabBarController.m index daabefe..87ba3e7 100644 --- a/keyBoard/Class/Base/VC/BaseTabBarController.m +++ b/keyBoard/Class/Base/VC/BaseTabBarController.m @@ -9,6 +9,9 @@ #import "HomeVC.h" #import "HomeMainVC.h" #import "MyVC.h" +#import "KBShopVC.h" +#import "KBCommunityVC.h" + #import "BaseNavigationController.h" #import "KBAuthManager.h" @interface BaseTabBarController () diff --git a/keyBoard/Class/Community/VC/KBCommunityVC.h b/keyBoard/Class/Community/VC/KBCommunityVC.h new file mode 100644 index 0000000..3b47be3 --- /dev/null +++ b/keyBoard/Class/Community/VC/KBCommunityVC.h @@ -0,0 +1,16 @@ +// +// KBCommunityVC.h +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import + +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 0000000..f080599 Binary files /dev/null and b/keyBoard/Class/Resource/Images/Indicator/boat.png differ diff --git a/keyBoard/Class/Resource/Images/Indicator/city.png b/keyBoard/Class/Resource/Images/Indicator/city.png new file mode 100644 index 0000000..b8f55d6 Binary files /dev/null and b/keyBoard/Class/Resource/Images/Indicator/city.png differ diff --git a/keyBoard/Class/Resource/Images/Indicator/light.png b/keyBoard/Class/Resource/Images/Indicator/light.png new file mode 100644 index 0000000..7e17ac8 Binary files /dev/null and b/keyBoard/Class/Resource/Images/Indicator/light.png differ diff --git a/keyBoard/Class/Resource/Images/Indicator/lotus.png b/keyBoard/Class/Resource/Images/Indicator/lotus.png new file mode 100644 index 0000000..0e33fde Binary files /dev/null and b/keyBoard/Class/Resource/Images/Indicator/lotus.png differ diff --git a/keyBoard/Class/Resource/Images/Indicator/river.png b/keyBoard/Class/Resource/Images/Indicator/river.png new file mode 100644 index 0000000..3e0ca5e Binary files /dev/null and b/keyBoard/Class/Resource/Images/Indicator/river.png differ diff --git a/keyBoard/Class/Resource/Images/Indicator/seaWave.png b/keyBoard/Class/Resource/Images/Indicator/seaWave.png new file mode 100644 index 0000000..761e689 Binary files /dev/null and b/keyBoard/Class/Resource/Images/Indicator/seaWave.png differ diff --git a/keyBoard/Class/Resource/Images/JXCategoryView.png b/keyBoard/Class/Resource/Images/JXCategoryView.png new file mode 100644 index 0000000..ffee709 Binary files /dev/null and b/keyBoard/Class/Resource/Images/JXCategoryView.png differ diff --git a/keyBoard/Class/Resource/Images/JXCategoryViewStructure.png b/keyBoard/Class/Resource/Images/JXCategoryViewStructure.png new file mode 100644 index 0000000..a6351e7 Binary files /dev/null and b/keyBoard/Class/Resource/Images/JXCategoryViewStructure.png differ diff --git a/keyBoard/Class/Resource/Images/apple.png b/keyBoard/Class/Resource/Images/apple.png new file mode 100644 index 0000000..f5644a4 Binary files /dev/null and b/keyBoard/Class/Resource/Images/apple.png differ diff --git a/keyBoard/Class/Resource/Images/apple_selected.png b/keyBoard/Class/Resource/Images/apple_selected.png new file mode 100644 index 0000000..4b9ab90 Binary files /dev/null and b/keyBoard/Class/Resource/Images/apple_selected.png differ diff --git a/keyBoard/Class/Resource/Images/arrow_down.png b/keyBoard/Class/Resource/Images/arrow_down.png new file mode 100644 index 0000000..38d129c Binary files /dev/null and b/keyBoard/Class/Resource/Images/arrow_down.png differ diff --git a/keyBoard/Class/Resource/Images/arrow_up.png b/keyBoard/Class/Resource/Images/arrow_up.png new file mode 100644 index 0000000..33c503e Binary files /dev/null and b/keyBoard/Class/Resource/Images/arrow_up.png differ diff --git a/keyBoard/Class/Resource/Images/carrot.png b/keyBoard/Class/Resource/Images/carrot.png new file mode 100644 index 0000000..0ec6b23 Binary files /dev/null and b/keyBoard/Class/Resource/Images/carrot.png differ diff --git a/keyBoard/Class/Resource/Images/carrot_selected.png b/keyBoard/Class/Resource/Images/carrot_selected.png new file mode 100644 index 0000000..b4dcb64 Binary files /dev/null and b/keyBoard/Class/Resource/Images/carrot_selected.png differ diff --git a/keyBoard/Class/Resource/Images/crab.png b/keyBoard/Class/Resource/Images/crab.png new file mode 100644 index 0000000..b689ecb Binary files /dev/null and b/keyBoard/Class/Resource/Images/crab.png differ diff --git a/keyBoard/Class/Resource/Images/crab_selected.png b/keyBoard/Class/Resource/Images/crab_selected.png new file mode 100644 index 0000000..8a91fb3 Binary files /dev/null and b/keyBoard/Class/Resource/Images/crab_selected.png differ diff --git a/keyBoard/Class/Resource/Images/filter.png b/keyBoard/Class/Resource/Images/filter.png new file mode 100644 index 0000000..8e425bb Binary files /dev/null and b/keyBoard/Class/Resource/Images/filter.png differ diff --git a/keyBoard/Class/Resource/Images/football.png b/keyBoard/Class/Resource/Images/football.png new file mode 100644 index 0000000..843a032 Binary files /dev/null and b/keyBoard/Class/Resource/Images/football.png differ diff --git a/keyBoard/Class/Resource/Images/grape.png b/keyBoard/Class/Resource/Images/grape.png new file mode 100644 index 0000000..08719a6 Binary files /dev/null and b/keyBoard/Class/Resource/Images/grape.png differ diff --git a/keyBoard/Class/Resource/Images/grape_selected.png b/keyBoard/Class/Resource/Images/grape_selected.png new file mode 100644 index 0000000..fe393d6 Binary files /dev/null and b/keyBoard/Class/Resource/Images/grape_selected.png differ diff --git a/keyBoard/Class/Resource/Images/lobster.png b/keyBoard/Class/Resource/Images/lobster.png new file mode 100644 index 0000000..5c6b342 Binary files /dev/null and b/keyBoard/Class/Resource/Images/lobster.png differ diff --git a/keyBoard/Class/Resource/Images/lobster_selected.png b/keyBoard/Class/Resource/Images/lobster_selected.png new file mode 100644 index 0000000..efaa832 Binary files /dev/null and b/keyBoard/Class/Resource/Images/lobster_selected.png differ diff --git a/keyBoard/Class/Resource/Images/lufei.jpg b/keyBoard/Class/Resource/Images/lufei.jpg new file mode 100644 index 0000000..83b417e Binary files /dev/null and b/keyBoard/Class/Resource/Images/lufei.jpg differ diff --git a/keyBoard/Class/Resource/Images/watermelon.png b/keyBoard/Class/Resource/Images/watermelon.png new file mode 100644 index 0000000..cb3f2bd Binary files /dev/null and b/keyBoard/Class/Resource/Images/watermelon.png differ diff --git a/keyBoard/Class/Resource/Images/watermelon_selected.png b/keyBoard/Class/Resource/Images/watermelon_selected.png new file mode 100644 index 0000000..7c77dbf Binary files /dev/null and b/keyBoard/Class/Resource/Images/watermelon_selected.png differ diff --git a/keyBoard/Class/Shop/VC/KBShopVC.h b/keyBoard/Class/Shop/VC/KBShopVC.h new file mode 100644 index 0000000..52a1580 --- /dev/null +++ b/keyBoard/Class/Shop/VC/KBShopVC.h @@ -0,0 +1,16 @@ +// +// KBShopVC.h +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import + +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;