TiUIMenuThreeViewCell.m 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. //
  2. // TiUIMenuThreeViewCell.m
  3. // TiSDKDemo
  4. //
  5. // Created by iMacA1002 on 2019/12/6.
  6. // Copyright © 2020 Tillusory Tech. All rights reserved.
  7. //
  8. #import "TiUIMenuThreeViewCell.h"
  9. #import "TIConfig.h"
  10. #import "TiUISubMenuThreeViewCell.h"
  11. #import "TIDownloadZipManager.h"
  12. @interface TiUIMenuThreeViewCell ()<UICollectionViewDelegate,UICollectionViewDataSource>
  13. @property(nonatomic,strong) UICollectionView *menuCollectionView;
  14. @property(nonatomic,strong) NSIndexPath *selectedIndexPath;
  15. @end
  16. static NSString *const TiUIMenuCollectionViewCellId = @"TiUIMainMenuTiUIMenuThreeViewCellId";
  17. @implementation TiUIMenuThreeViewCell
  18. -(UICollectionView *)menuCollectionView{
  19. if (_menuCollectionView == nil) {
  20. UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
  21. layout.scrollDirection = UICollectionViewScrollDirectionVertical;
  22. layout.itemSize = CGSizeMake(TiUISubMenuTowViewTIButtonWidth, TiUISubMenuTowViewTIButtonWidth);
  23. // // 设置最小行间距
  24. // CGFloat spacing2 = ((TiUIViewBoxTotalHeight- TiUIMenuViewHeight - TiUISliderRelatedViewHeight) -10 - 3*TiUISubMenuTowViewTIButtonWidth) /2;
  25. CGFloat spacing1 = (SCREEN_WIDTH -80 - 5*TiUISubMenuTowViewTIButtonWidth) /4;
  26. layout.minimumLineSpacing = spacing1;
  27. layout.minimumInteritemSpacing = spacing1;
  28. _menuCollectionView =[[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
  29. _menuCollectionView.showsVerticalScrollIndicator = NO;
  30. _menuCollectionView.backgroundColor = [UIColor whiteColor];
  31. _menuCollectionView.dataSource= self;
  32. _menuCollectionView.delegate = self;
  33. [_menuCollectionView registerClass:[TiUISubMenuThreeViewCell class] forCellWithReuseIdentifier:TiUIMenuCollectionViewCellId];
  34. }
  35. return _menuCollectionView;
  36. }
  37. - (instancetype)initWithFrame:(CGRect)frame
  38. {
  39. self = [super initWithFrame:frame];
  40. if (self) {
  41. [self.contentView addSubview:self.menuCollectionView];
  42. [self.menuCollectionView mas_makeConstraints:^(MASConstraintMaker *make) {
  43. make.top.equalTo(self.mas_top).offset(5);
  44. make.bottom.equalTo(self.mas_bottom).offset(-5);
  45. make.left.equalTo(self.contentView.mas_left).offset(40);
  46. make.right.equalTo(self.contentView.mas_right).offset(-40);
  47. }];
  48. }
  49. return self;
  50. }
  51. #pragma mark ---UICollectionViewDataSource---
  52. //设置每个section包含的item数目
  53. - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
  54. switch (self.mode.menuTag) {
  55. case 2:
  56. return [TIMenuPlistManager shareManager].tiezhiModeArr.count;
  57. break;
  58. case 3:
  59. return [TIMenuPlistManager shareManager].liwuModeArr.count;
  60. break;
  61. case 7:
  62. return [TIMenuPlistManager shareManager].shuiyinModeArr.count;
  63. break;
  64. case 8:
  65. return [TIMenuPlistManager shareManager].mianjuModeArr.count;
  66. break;
  67. case 9:
  68. return [TIMenuPlistManager shareManager].lvmuModeArr.count;
  69. break;
  70. default:
  71. return 0;
  72. break;
  73. }
  74. }
  75. //返回对应indexPath的cell
  76. - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
  77. TiUISubMenuThreeViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:TiUIMenuCollectionViewCellId forIndexPath:indexPath];
  78. TIMenuMode *subMod = nil;
  79. switch (self.mode.menuTag) {
  80. case 2:
  81. {
  82. subMod = [TIMenuPlistManager shareManager].tiezhiModeArr[indexPath.row];
  83. [cell setSubMod:subMod WithTag:2];
  84. }
  85. break;
  86. case 3:
  87. {
  88. subMod = [TIMenuPlistManager shareManager].liwuModeArr[indexPath.row];
  89. [cell setSubMod:subMod WithTag:3];
  90. }
  91. break;
  92. case 7:
  93. {
  94. subMod = [TIMenuPlistManager shareManager].shuiyinModeArr[indexPath.row];
  95. [cell setSubMod:subMod WithTag:7];
  96. }
  97. break;
  98. case 8:
  99. {
  100. subMod = [TIMenuPlistManager shareManager].mianjuModeArr[indexPath.row];
  101. [cell setSubMod:subMod WithTag:8];
  102. }
  103. break;
  104. case 9:
  105. {
  106. subMod = [TIMenuPlistManager shareManager].lvmuModeArr[indexPath.row];
  107. [cell setSubMod:subMod WithTag:9];
  108. }
  109. break;
  110. default:
  111. break;
  112. }
  113. if (subMod.selected)
  114. {
  115. self.selectedIndexPath = [NSIndexPath indexPathForRow:indexPath.row inSection:0];
  116. }
  117. return cell;
  118. }
  119. #pragma mark ---UICollectionViewDelegate---
  120. //选择了某个cell
  121. - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
  122. if (self.selectedIndexPath.row==indexPath.row) {
  123. return;//选中同一个cell不做处理
  124. }
  125. switch (self.mode.menuTag) {
  126. case 2:
  127. {
  128. TIMenuMode *mode = [TIMenuPlistManager shareManager].tiezhiModeArr[indexPath.row];
  129. if (mode.downloaded==TI_DOWNLOAD_STATE_CCOMPLET)
  130. {
  131. [TIMenuPlistManager shareManager].tiezhiModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(YES) forKey:@"selected" In:indexPath.row WithPath:@"stickers.json"];
  132. [TIMenuPlistManager shareManager].tiezhiModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(NO) forKey:@"selected" In:self.selectedIndexPath.row WithPath:@"stickers.json"];
  133. if (self.selectedIndexPath) {
  134. [collectionView reloadItemsAtIndexPaths:@[self.selectedIndexPath,indexPath]];
  135. }else{
  136. [collectionView reloadItemsAtIndexPaths:@[indexPath]];
  137. }
  138. self.selectedIndexPath = indexPath;
  139. [[TiSDKManager shareManager] setStickerName:mode.name];
  140. }
  141. else if (mode.downloaded==TI_DOWNLOAD_STATE_NOTBEGUN)
  142. {
  143. // 开始下载
  144. [TIMenuPlistManager shareManager].tiezhiModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(TI_DOWNLOAD_STATE_BEBEING) forKey:@"downloaded" In:indexPath.row WithPath:@"stickers.json"];
  145. [collectionView reloadItemsAtIndexPaths:@[indexPath]];
  146. WeakSelf;
  147. [[TIDownloadZipManager shareManager] downloadSuccessedType:TI_DOWNLOAD_TYPE_Sticker MenuMode:mode completeBlock:^(BOOL successful) {
  148. DownloadedState state = TI_DOWNLOAD_STATE_BEBEING;
  149. if (successful) {
  150. // 开始下载
  151. state = TI_DOWNLOAD_STATE_CCOMPLET;
  152. }else{
  153. state = TI_DOWNLOAD_STATE_NOTBEGUN;
  154. }
  155. [TIMenuPlistManager shareManager].tiezhiModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(state) forKey:@"downloaded" In:indexPath.row WithPath:@"stickers.json"];
  156. [weakSelf.menuCollectionView reloadItemsAtIndexPaths:@[indexPath]];
  157. }];
  158. }
  159. }
  160. break;
  161. case 3:
  162. {
  163. TIMenuMode *mode = [TIMenuPlistManager shareManager].liwuModeArr[indexPath.row];
  164. if (mode.downloaded==TI_DOWNLOAD_STATE_CCOMPLET)
  165. {
  166. [TIMenuPlistManager shareManager].liwuModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(YES) forKey:@"selected" In:indexPath.row WithPath:@"gifts.json"];
  167. [TIMenuPlistManager shareManager].liwuModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(NO) forKey:@"selected" In:self.selectedIndexPath.row WithPath:@"gifts.json"];
  168. if (self.selectedIndexPath) {
  169. [collectionView reloadItemsAtIndexPaths:@[self.selectedIndexPath,indexPath]];
  170. }else{
  171. [collectionView reloadItemsAtIndexPaths:@[indexPath]];
  172. }
  173. self.selectedIndexPath = indexPath;
  174. [[TiSDKManager shareManager] setGift:mode.name];
  175. }
  176. else if (mode.downloaded==TI_DOWNLOAD_STATE_NOTBEGUN)
  177. {
  178. // 开始下载
  179. [TIMenuPlistManager shareManager].liwuModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(TI_DOWNLOAD_STATE_BEBEING) forKey:@"downloaded" In:indexPath.row WithPath:@"gifts.json"];
  180. [collectionView reloadItemsAtIndexPaths:@[indexPath]];
  181. WeakSelf;
  182. [[TIDownloadZipManager shareManager] downloadSuccessedType:TI_DOWNLOAD_STATE_Gift MenuMode:mode completeBlock:^(BOOL successful) {
  183. DownloadedState state = TI_DOWNLOAD_STATE_BEBEING;
  184. if (successful) {
  185. // 开始下载
  186. state = TI_DOWNLOAD_STATE_CCOMPLET;
  187. }else{
  188. state = TI_DOWNLOAD_STATE_NOTBEGUN;
  189. }
  190. [TIMenuPlistManager shareManager].liwuModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(state) forKey:@"downloaded" In:indexPath.row WithPath:@"gifts.json"];
  191. [weakSelf.menuCollectionView reloadItemsAtIndexPaths:@[indexPath]];
  192. }];
  193. }
  194. }
  195. break;
  196. case 7:
  197. {
  198. TIMenuMode *mode = [TIMenuPlistManager shareManager].shuiyinModeArr[indexPath.row];
  199. if (mode.downloaded==TI_DOWNLOAD_STATE_CCOMPLET)
  200. {
  201. [TIMenuPlistManager shareManager].shuiyinModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(YES) forKey:@"selected" In:indexPath.row WithPath:@"watermarks.json"];
  202. [TIMenuPlistManager shareManager].shuiyinModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(NO) forKey:@"selected" In:self.selectedIndexPath.row WithPath:@"watermarks.json"];
  203. if (self.selectedIndexPath) {
  204. [collectionView reloadItemsAtIndexPaths:@[self.selectedIndexPath,indexPath]];
  205. }else{
  206. [collectionView reloadItemsAtIndexPaths:@[indexPath]];
  207. }
  208. self.selectedIndexPath = indexPath;
  209. if (indexPath.row)
  210. {
  211. [[TiSDKManager shareManager] setWatermark:YES Left:(int)mode.x Top:(int)mode.y Ratio:(int)mode.ratio FileName:mode.name];
  212. }
  213. else
  214. {
  215. [[TiSDKManager shareManager] setWatermark:NO Left:0 Top:0 Ratio:0 FileName:@"watermark.png"];
  216. }
  217. }
  218. else if (mode.downloaded==TI_DOWNLOAD_STATE_NOTBEGUN)
  219. {
  220. // 开始下载
  221. [TIMenuPlistManager shareManager].shuiyinModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(TI_DOWNLOAD_STATE_BEBEING) forKey:@"downloaded" In:indexPath.row WithPath:@"watermarks.json"];
  222. [collectionView reloadItemsAtIndexPaths:@[indexPath]];
  223. WeakSelf;
  224. [[TIDownloadZipManager shareManager] downloadSuccessedType:TI_DOWNLOAD_STATE_Watermark MenuMode:mode completeBlock:^(BOOL successful) {
  225. DownloadedState state = TI_DOWNLOAD_STATE_BEBEING;
  226. if (successful) {
  227. // 开始下载
  228. state = TI_DOWNLOAD_STATE_CCOMPLET;
  229. }else{
  230. state = TI_DOWNLOAD_STATE_NOTBEGUN;
  231. }
  232. [TIMenuPlistManager shareManager].shuiyinModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(state) forKey:@"downloaded" In:indexPath.row WithPath:@"watermarks.json"];
  233. [weakSelf.menuCollectionView reloadItemsAtIndexPaths:@[indexPath]];
  234. }];
  235. }
  236. }
  237. break;
  238. case 8:
  239. {
  240. TIMenuMode *mode = [TIMenuPlistManager shareManager].mianjuModeArr[indexPath.row];
  241. if (mode.downloaded==TI_DOWNLOAD_STATE_CCOMPLET)
  242. {
  243. [TIMenuPlistManager shareManager].mianjuModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(YES) forKey:@"selected" In:indexPath.row WithPath:@"masks.json"];
  244. [TIMenuPlistManager shareManager].mianjuModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(NO) forKey:@"selected" In:self.selectedIndexPath.row WithPath:@"masks.json"];
  245. if (self.selectedIndexPath) {
  246. [collectionView reloadItemsAtIndexPaths:@[self.selectedIndexPath,indexPath]];
  247. }else{
  248. [collectionView reloadItemsAtIndexPaths:@[indexPath]];
  249. }
  250. self.selectedIndexPath = indexPath;
  251. [[TiSDKManager shareManager] setMask:mode.name];
  252. }
  253. else if (mode.downloaded==TI_DOWNLOAD_STATE_NOTBEGUN)
  254. {
  255. // 开始下载
  256. [TIMenuPlistManager shareManager].mianjuModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(TI_DOWNLOAD_STATE_BEBEING) forKey:@"downloaded" In:indexPath.row WithPath:@"masks.json"];
  257. [collectionView reloadItemsAtIndexPaths:@[indexPath]];
  258. WeakSelf;
  259. [[TIDownloadZipManager shareManager] downloadSuccessedType:TI_DOWNLOAD_STATE_Mask MenuMode:mode completeBlock:^(BOOL successful) {
  260. DownloadedState state = TI_DOWNLOAD_STATE_BEBEING;
  261. if (successful) {
  262. // 开始下载
  263. state = TI_DOWNLOAD_STATE_CCOMPLET;
  264. }else{
  265. state = TI_DOWNLOAD_STATE_NOTBEGUN;
  266. }
  267. [TIMenuPlistManager shareManager].mianjuModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(state) forKey:@"downloaded" In:indexPath.row WithPath:@"masks.json"];
  268. [weakSelf.menuCollectionView reloadItemsAtIndexPaths:@[indexPath]];
  269. }];
  270. }
  271. }
  272. break;
  273. case 9:
  274. {
  275. TIMenuMode *mode = [TIMenuPlistManager shareManager].lvmuModeArr[indexPath.row];
  276. if (mode.downloaded==TI_DOWNLOAD_STATE_CCOMPLET)
  277. {
  278. [TIMenuPlistManager shareManager].lvmuModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(YES) forKey:@"selected" In:indexPath.row WithPath:@"greenscreens.json"];
  279. [TIMenuPlistManager shareManager].lvmuModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(NO) forKey:@"selected" In:self.selectedIndexPath.row WithPath:@"greenscreens.json"];
  280. if (self.selectedIndexPath) {
  281. [collectionView reloadItemsAtIndexPaths:@[self.selectedIndexPath,indexPath]];
  282. }else{
  283. [collectionView reloadItemsAtIndexPaths:@[indexPath]];
  284. }
  285. self.selectedIndexPath = indexPath;
  286. [[TiSDKManager shareManager] setGreenScreen:mode.name];
  287. }
  288. else if (mode.downloaded==TI_DOWNLOAD_STATE_NOTBEGUN)
  289. {
  290. // 开始下载
  291. [TIMenuPlistManager shareManager].lvmuModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(TI_DOWNLOAD_STATE_BEBEING) forKey:@"downloaded" In:indexPath.row WithPath:@"greenscreens.json"];
  292. [collectionView reloadItemsAtIndexPaths:@[indexPath]];
  293. WeakSelf;
  294. [[TIDownloadZipManager shareManager] downloadSuccessedType:TI_DOWNLOAD_STATE_Lvmu MenuMode:mode completeBlock:^(BOOL successful) {
  295. DownloadedState state = TI_DOWNLOAD_STATE_BEBEING;
  296. if (successful) {
  297. // 开始下载
  298. state = TI_DOWNLOAD_STATE_CCOMPLET;
  299. }else{
  300. state = TI_DOWNLOAD_STATE_NOTBEGUN;
  301. }
  302. [TIMenuPlistManager shareManager].lvmuModeArr = [[TIMenuPlistManager shareManager] modifyObject:@(state) forKey:@"downloaded" In:indexPath.row WithPath:@"greenscreens.json"];
  303. [weakSelf.menuCollectionView reloadItemsAtIndexPaths:@[indexPath]];
  304. }];
  305. }
  306. }
  307. break;
  308. default:
  309. break;
  310. }
  311. }
  312. - (void)setMode:(TIMenuMode *)mode{
  313. if (mode) {
  314. _mode = mode;
  315. }
  316. }
  317. @end