CommunityFeaturedTopicsViewController.swift 52 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355
  1. //
  2. // CommunityFeaturedTopicsViewController.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/6/16.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import UIKit
  9. class CommunityFeaturedTopicsViewController: BaseViewController {
  10. var cellHeightsDictionary = Dictionary<IndexPath, Any>()
  11. override func viewDidLoad() {
  12. super.viewDidLoad()
  13. setupViews()
  14. setupLayouts()
  15. setupData()
  16. }
  17. override func setupViews() {
  18. view.addSubview(bgImageView)
  19. view.addSubview(tableView)
  20. view.insertSubview(navigationBar, aboveSubview: tableView)
  21. setnavigationBar()
  22. }
  23. /// 设置navigationBar
  24. func setnavigationBar() {
  25. navigationBar.addSubview(navigationBgView)
  26. navigationBar.addSubview(topicLable)
  27. navigationBar.addSubview(followButton)
  28. navigationBar.insertSubview(navigationBgView, aboveSubview: navigationBar.backgroundImageView)
  29. navigationBar.backgroundImageView.frame = CGRect(x: 0, y: 0, width: kScreenWidth, height: kScreenWidth)
  30. navigationBar.clipsToBounds = true
  31. navigationBar.wr_setLeftButton(image: kImage(name: "navbar_back_white")!)
  32. navigationBar.wr_setRightButton(title: "我的话题", titleColor: .white)
  33. // 设置导航栏显示图片
  34. navigationBar.barBackgroundImage = UIImage(named: "pic_example_12")
  35. // 设置初始导航栏透明度
  36. navigationBar.wr_setBackgroundAlpha(alpha: 0)
  37. // 设置状态栏style
  38. statusBarStyle = .lightContent
  39. }
  40. override func setupLayouts() {
  41. bgImageView.snp_makeConstraints { (make) in
  42. make.top.left.right.equalToSuperview()
  43. make.height.equalTo(kScreenWidth)
  44. }
  45. tableView.snp.makeConstraints { (make) in
  46. make.top.left.right.bottom.equalToSuperview()
  47. }
  48. navigationBgView.snp_makeConstraints { (make) in
  49. make.edges.equalTo(navigationBar)
  50. }
  51. topicLable.snp_makeConstraints { (make) in
  52. make.centerY.equalTo(navigationBar.leftButton)
  53. make.left.equalTo(navigationBar.leftButton.snp_right)
  54. }
  55. followButton.snp_makeConstraints { (make) in
  56. make.right.equalTo(-14)
  57. make.centerY.equalTo(navigationBar.leftButton)
  58. make.width.equalTo(60)
  59. make.height.equalTo(24)
  60. }
  61. }
  62. override func setupData() {
  63. //下拉刷新
  64. tableView.addHeaderWithHeader(withBeginRefresh: true, animation: false) { (page) in
  65. }
  66. tableView.addFooterWithWithHeader(withAutomaticallyRefresh: false) { (page) in
  67. }
  68. tableView.tableHeaderView = communityFeaturedTopicsHeaderView
  69. communityFeaturedTopicsHeaderView.followClosureName = {
  70. (button:UIButton) -> Bool in
  71. return !button.isSelected
  72. }
  73. navigationBar.onClickRightButton = {
  74. [weak self] in
  75. let vc = CommunityMyFollowTopicController()
  76. self?.navigationController?.pushViewController(vc, animated: true)
  77. }
  78. }
  79. private lazy var tableView: UITableView = {
  80. let tableView = UITableView(frame: CGRect.zero, style: UITableView.Style.grouped)
  81. tableView.separatorStyle = .none
  82. tableView.backgroundColor = UIColor.clear
  83. tableView.dataSource = self
  84. tableView.delegate = self
  85. if #available(iOS 11.0, *) {
  86. tableView.contentInsetAdjustmentBehavior = .never
  87. }
  88. return tableView
  89. }()
  90. private lazy var bgImageView: UIImageView = {
  91. let bgImageView = UIImageView()
  92. bgImageView.image = kImage(name: "pic_example_12")
  93. return bgImageView
  94. }()
  95. private lazy var communityFeaturedTopicsHeaderView: CommunityFeaturedTopicsHeaderView = {
  96. let communityFeaturedTopicsHeaderView = CommunityFeaturedTopicsHeaderView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 200 + kSafeStatusBarHeight))
  97. return communityFeaturedTopicsHeaderView
  98. }()
  99. private lazy var topicLable: UILabel = {
  100. let topicLable = UILabel()
  101. topicLable.textColor = kffffffColor
  102. topicLable.font = kRegularFont14
  103. topicLable.text = "运动健身"
  104. topicLable.alpha = 0
  105. return topicLable
  106. }()
  107. private lazy var followButton: UIButton = {
  108. let followButton = UIButton(type: UIButton.ButtonType.custom)
  109. followButton.setTitle("关注", for: UIControl.State.normal)
  110. followButton.setImage(kImage(name: "center_attention_white"), for: UIControl.State.normal)
  111. followButton.setImage(kImage(name: "center_followed_white"), for: UIControl.State.selected)
  112. followButton.setBackgroundImage(UIImage.imageWithColor(color: kThemeColor), for: UIControl.State.normal)
  113. followButton.setBackgroundImage(UIImage.imageWithColor(color: UIColor.clear), for: UIControl.State.selected)
  114. followButton.titleLabel?.font = kMediumFont13
  115. followButton.alpha = 0
  116. followButton.cornerRadius = 12
  117. followButton.masksToBounds = true
  118. followButton.rx.tap.subscribe(onNext: {
  119. [weak self] (data) in
  120. followButton.isSelected = !followButton.isSelected
  121. }).disposed(by: disposeBag)
  122. return followButton
  123. }()
  124. private lazy var navigationBgView: UIView = {
  125. let navigationBgView = UIView()
  126. navigationBgView.backgroundColor = UIColor(hexString: "000000", alpha: 0.4)
  127. navigationBgView.alpha = 0
  128. return navigationBgView
  129. }()
  130. /// 关注接口
  131. private func followData(indexPath: IndexPath) {
  132. tableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.none)
  133. }
  134. }
  135. extension CommunityFeaturedTopicsViewController
  136. {
  137. func scrollViewDidScroll(_ scrollView: UIScrollView)
  138. {
  139. let offsetY = scrollView.contentOffset.y
  140. if (offsetY > kSafeStatusBarHeight)
  141. {
  142. let alpha = (offsetY - kSafeStatusBarHeight) / CGFloat(kNavBarTotalHeight)
  143. navigationBar.wr_setBackgroundAlpha(alpha: alpha)
  144. followButton.alpha = alpha
  145. topicLable.alpha = alpha
  146. navigationBgView.alpha = alpha
  147. navigationBar.rightButton.alpha = 1 - alpha
  148. }
  149. else
  150. {
  151. navigationBar.wr_setBackgroundAlpha(alpha: 0)
  152. followButton.alpha = 0
  153. topicLable.alpha = 0
  154. navigationBgView.alpha = 0
  155. navigationBar.rightButton.alpha = 1
  156. }
  157. }
  158. }
  159. extension CommunityFeaturedTopicsViewController : UITableViewDelegate,UITableViewDataSource {
  160. func numberOfSections(in tableView: UITableView) -> Int {
  161. return 15
  162. }
  163. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  164. return 6
  165. }
  166. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  167. switch indexPath.section {
  168. case 0:
  169. switch indexPath.row {
  170. case 0:
  171. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  172. cell.followType = .futureFollow
  173. //关注状态
  174. cell.followClosure = {
  175. [weak self] in
  176. self?.followData(indexPath: indexPath)
  177. }
  178. return cell
  179. case 1:
  180. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  181. let cardContentPicVideoModel = CardContentPicVideoModel()
  182. cardContentPicVideoModel.number = 1
  183. cardContentPicVideoModel.width = 100
  184. cardContentPicVideoModel.height = 200
  185. cardContentPicVideoModel.picAndVideo = 0
  186. cell.cardContentPicVideoModel = cardContentPicVideoModel
  187. return cell
  188. case 2:
  189. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  190. cell.cardContentTitleTableViewCellType = .noTitleMoreThan
  191. return cell
  192. case 3:
  193. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  194. cell.collectClosureName = {
  195. (button:UIButton) -> Bool in
  196. return !button.isSelected
  197. }
  198. cell.praiseClosureName = {
  199. (button:UIButton) -> Bool in
  200. return !button.isSelected
  201. }
  202. return cell
  203. case 4:
  204. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  205. cell.frame = tableView.bounds
  206. cell.layoutIfNeeded()
  207. cell.reloadData()
  208. return cell
  209. case 5:
  210. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  211. cell.addCommnetClosureName = {
  212. }
  213. return cell
  214. default:
  215. return UITableViewCell()
  216. }
  217. case 1:
  218. switch indexPath.row {
  219. case 0:
  220. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  221. cell.followType = .alreadyFollow
  222. //关注状态
  223. cell.followClosure = {
  224. [weak self] in
  225. self?.followData(indexPath: indexPath)
  226. }
  227. return cell
  228. case 1:
  229. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  230. let cardContentPicVideoModel = CardContentPicVideoModel()
  231. cardContentPicVideoModel.number = 1
  232. cardContentPicVideoModel.width = 100
  233. cardContentPicVideoModel.height = 300
  234. cardContentPicVideoModel.picAndVideo = 0
  235. cell.cardContentPicVideoModel = cardContentPicVideoModel
  236. return cell
  237. case 2:
  238. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  239. cell.cardContentTitleTableViewCellType = .noTitleNoMoreThan
  240. return cell
  241. case 3:
  242. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  243. cell.collectClosureName = {
  244. (button:UIButton) -> Bool in
  245. return !button.isSelected
  246. }
  247. cell.praiseClosureName = {
  248. (button:UIButton) -> Bool in
  249. return !button.isSelected
  250. }
  251. return cell
  252. case 4:
  253. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  254. cell.frame = tableView.bounds
  255. cell.layoutIfNeeded()
  256. cell.reloadData()
  257. return cell
  258. case 5:
  259. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  260. cell.addCommnetClosureName = {
  261. }
  262. return cell
  263. default:
  264. return UITableViewCell()
  265. }
  266. case 2:
  267. switch indexPath.row {
  268. case 0:
  269. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  270. cell.followType = .mutualFollow
  271. //关注状态
  272. cell.followClosure = {
  273. [weak self] in
  274. self?.followData(indexPath: indexPath)
  275. }
  276. return cell
  277. case 1:
  278. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  279. let cardContentPicVideoModel = CardContentPicVideoModel()
  280. cardContentPicVideoModel.number = 1
  281. cardContentPicVideoModel.width = 200
  282. cardContentPicVideoModel.height = 200
  283. cell.cardContentPicVideoModel = cardContentPicVideoModel
  284. cardContentPicVideoModel.picAndVideo = 0
  285. return cell
  286. case 2:
  287. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  288. cell.cardContentTitleTableViewCellType = .titleMoreThan
  289. return cell
  290. case 3:
  291. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  292. cell.collectClosureName = {
  293. (button:UIButton) -> Bool in
  294. return !button.isSelected
  295. }
  296. cell.praiseClosureName = {
  297. (button:UIButton) -> Bool in
  298. return !button.isSelected
  299. }
  300. return cell
  301. case 4:
  302. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  303. cell.frame = tableView.bounds
  304. cell.layoutIfNeeded()
  305. cell.reloadData()
  306. return cell
  307. case 5:
  308. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  309. cell.addCommnetClosureName = {
  310. }
  311. return cell
  312. default:
  313. return UITableViewCell()
  314. }
  315. case 3:
  316. switch indexPath.row {
  317. case 0:
  318. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  319. cell.followType = .mutualFollow
  320. //关注状态
  321. cell.followClosure = {
  322. [weak self] in
  323. self?.followData(indexPath: indexPath)
  324. }
  325. return cell
  326. case 1:
  327. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  328. let cardContentPicVideoModel = CardContentPicVideoModel()
  329. cardContentPicVideoModel.number = 1
  330. cardContentPicVideoModel.width = 200
  331. cardContentPicVideoModel.height = 100
  332. cardContentPicVideoModel.picAndVideo = 0
  333. cell.cardContentPicVideoModel = cardContentPicVideoModel
  334. return cell
  335. case 2:
  336. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  337. cell.cardContentTitleTableViewCellType = .titleNoMoreThan
  338. return cell
  339. case 3:
  340. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  341. cell.collectClosureName = {
  342. (button:UIButton) -> Bool in
  343. return !button.isSelected
  344. }
  345. cell.praiseClosureName = {
  346. (button:UIButton) -> Bool in
  347. return !button.isSelected
  348. }
  349. return cell
  350. case 4:
  351. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  352. cell.frame = tableView.frame
  353. cell.layoutIfNeeded()
  354. cell.reloadData()
  355. return cell
  356. case 5:
  357. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  358. cell.addCommnetClosureName = {
  359. }
  360. return cell
  361. default:
  362. return UITableViewCell()
  363. }
  364. case 4:
  365. switch indexPath.row {
  366. case 0:
  367. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  368. cell.followType = .mutualFollow
  369. //关注状态
  370. cell.followClosure = {
  371. [weak self] in
  372. self?.followData(indexPath: indexPath)
  373. }
  374. return cell
  375. case 1:
  376. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  377. let cardContentPicVideoModel = CardContentPicVideoModel()
  378. cardContentPicVideoModel.number = 1
  379. cardContentPicVideoModel.width = 300
  380. cardContentPicVideoModel.height = 100
  381. cardContentPicVideoModel.picAndVideo = 0
  382. cell.cardContentPicVideoModel = cardContentPicVideoModel
  383. return cell
  384. case 2:
  385. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  386. cell.cardContentTitleTableViewCellType = .titleNoMoreThan
  387. return cell
  388. case 3:
  389. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  390. cell.collectClosureName = {
  391. (button:UIButton) -> Bool in
  392. return !button.isSelected
  393. }
  394. cell.praiseClosureName = {
  395. (button:UIButton) -> Bool in
  396. return !button.isSelected
  397. }
  398. return cell
  399. case 4:
  400. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  401. cell.frame = tableView.frame
  402. cell.layoutIfNeeded()
  403. cell.reloadData()
  404. return cell
  405. case 5:
  406. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  407. cell.addCommnetClosureName = {
  408. }
  409. return cell
  410. default:
  411. return UITableViewCell()
  412. }
  413. case 5:
  414. switch indexPath.row {
  415. case 0:
  416. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  417. cell.followType = .mutualFollow
  418. //关注状态
  419. cell.followClosure = {
  420. [weak self] in
  421. self?.followData(indexPath: indexPath)
  422. }
  423. return cell
  424. case 1:
  425. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  426. let cardContentPicVideoModel = CardContentPicVideoModel()
  427. cardContentPicVideoModel.number = 2
  428. cardContentPicVideoModel.width = 300
  429. cardContentPicVideoModel.height = 100
  430. cardContentPicVideoModel.picAndVideo = 0
  431. cell.cardContentPicVideoModel = cardContentPicVideoModel
  432. return cell
  433. case 2:
  434. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  435. cell.cardContentTitleTableViewCellType = .titleNoMoreThan
  436. return cell
  437. case 3:
  438. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  439. cell.collectClosureName = {
  440. (button:UIButton) -> Bool in
  441. return !button.isSelected
  442. }
  443. cell.praiseClosureName = {
  444. (button:UIButton) -> Bool in
  445. return !button.isSelected
  446. }
  447. return cell
  448. case 4:
  449. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  450. cell.frame = tableView.frame
  451. cell.layoutIfNeeded()
  452. cell.reloadData()
  453. return cell
  454. case 5:
  455. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  456. cell.addCommnetClosureName = {
  457. }
  458. return cell
  459. default:
  460. return UITableViewCell()
  461. }
  462. case 6:
  463. switch indexPath.row {
  464. case 0:
  465. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  466. cell.followType = .mutualFollow
  467. //关注状态
  468. cell.followClosure = {
  469. [weak self] in
  470. self?.followData(indexPath: indexPath)
  471. }
  472. return cell
  473. case 1:
  474. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  475. let cardContentPicVideoModel = CardContentPicVideoModel()
  476. cardContentPicVideoModel.number = 3
  477. cardContentPicVideoModel.width = 300
  478. cardContentPicVideoModel.height = 100
  479. cardContentPicVideoModel.picAndVideo = 0
  480. cell.cardContentPicVideoModel = cardContentPicVideoModel
  481. return cell
  482. case 2:
  483. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  484. cell.cardContentTitleTableViewCellType = .titleNoMoreThan
  485. return cell
  486. case 3:
  487. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  488. cell.collectClosureName = {
  489. (button:UIButton) -> Bool in
  490. return !button.isSelected
  491. }
  492. cell.praiseClosureName = {
  493. (button:UIButton) -> Bool in
  494. return !button.isSelected
  495. }
  496. return cell
  497. case 4:
  498. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  499. cell.frame = tableView.frame
  500. cell.layoutIfNeeded()
  501. cell.reloadData()
  502. return cell
  503. case 5:
  504. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  505. cell.addCommnetClosureName = {
  506. }
  507. return cell
  508. default:
  509. return UITableViewCell()
  510. }
  511. case 7:
  512. switch indexPath.row {
  513. case 0:
  514. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  515. cell.followType = .mutualFollow
  516. //关注状态
  517. cell.followClosure = {
  518. [weak self] in
  519. self?.followData(indexPath: indexPath)
  520. }
  521. return cell
  522. case 1:
  523. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  524. let cardContentPicVideoModel = CardContentPicVideoModel()
  525. cardContentPicVideoModel.number = 4
  526. cardContentPicVideoModel.width = 300
  527. cardContentPicVideoModel.height = 100
  528. cardContentPicVideoModel.picAndVideo = 0
  529. cell.cardContentPicVideoModel = cardContentPicVideoModel
  530. return cell
  531. case 2:
  532. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  533. cell.cardContentTitleTableViewCellType = .titleNoMoreThan
  534. return cell
  535. case 3:
  536. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  537. cell.collectClosureName = {
  538. (button:UIButton) -> Bool in
  539. return !button.isSelected
  540. }
  541. cell.praiseClosureName = {
  542. (button:UIButton) -> Bool in
  543. return !button.isSelected
  544. }
  545. return cell
  546. case 4:
  547. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  548. cell.frame = tableView.frame
  549. cell.layoutIfNeeded()
  550. cell.reloadData()
  551. return cell
  552. case 5:
  553. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  554. cell.addCommnetClosureName = {
  555. }
  556. return cell
  557. default:
  558. return UITableViewCell()
  559. }
  560. case 8:
  561. switch indexPath.row {
  562. case 0:
  563. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  564. cell.followType = .mutualFollow
  565. //关注状态
  566. cell.followClosure = {
  567. [weak self] in
  568. self?.followData(indexPath: indexPath)
  569. }
  570. return cell
  571. case 1:
  572. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  573. let cardContentPicVideoModel = CardContentPicVideoModel()
  574. cardContentPicVideoModel.number = 5
  575. cardContentPicVideoModel.width = 300
  576. cardContentPicVideoModel.height = 100
  577. cardContentPicVideoModel.picAndVideo = 0
  578. cell.cardContentPicVideoModel = cardContentPicVideoModel
  579. return cell
  580. case 2:
  581. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  582. cell.cardContentTitleTableViewCellType = .titleNoMoreThan
  583. return cell
  584. case 3:
  585. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  586. cell.collectClosureName = {
  587. (button:UIButton) -> Bool in
  588. return !button.isSelected
  589. }
  590. cell.praiseClosureName = {
  591. (button:UIButton) -> Bool in
  592. return !button.isSelected
  593. }
  594. return cell
  595. case 4:
  596. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  597. cell.frame = tableView.frame
  598. cell.layoutIfNeeded()
  599. cell.reloadData()
  600. return cell
  601. case 5:
  602. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  603. cell.addCommnetClosureName = {
  604. }
  605. return cell
  606. default:
  607. return UITableViewCell()
  608. }
  609. case 9:
  610. switch indexPath.row {
  611. case 0:
  612. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  613. cell.followType = .mutualFollow
  614. //关注状态
  615. cell.followClosure = {
  616. [weak self] in
  617. self?.followData(indexPath: indexPath)
  618. }
  619. return cell
  620. case 1:
  621. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  622. let cardContentPicVideoModel = CardContentPicVideoModel()
  623. cardContentPicVideoModel.number = 6
  624. cardContentPicVideoModel.width = 300
  625. cardContentPicVideoModel.height = 100
  626. cardContentPicVideoModel.picAndVideo = 0
  627. cell.cardContentPicVideoModel = cardContentPicVideoModel
  628. return cell
  629. case 2:
  630. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  631. cell.cardContentTitleTableViewCellType = .titleNoMoreThan
  632. return cell
  633. case 3:
  634. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  635. cell.collectClosureName = {
  636. (button:UIButton) -> Bool in
  637. return !button.isSelected
  638. }
  639. cell.praiseClosureName = {
  640. (button:UIButton) -> Bool in
  641. return !button.isSelected
  642. }
  643. return cell
  644. case 4:
  645. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  646. cell.frame = tableView.frame
  647. cell.layoutIfNeeded()
  648. cell.reloadData()
  649. return cell
  650. case 5:
  651. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  652. cell.addCommnetClosureName = {
  653. }
  654. return cell
  655. default:
  656. return UITableViewCell()
  657. }
  658. case 10:
  659. switch indexPath.row {
  660. case 0:
  661. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  662. cell.followType = .mutualFollow
  663. //关注状态
  664. cell.followClosure = {
  665. [weak self] in
  666. self?.followData(indexPath: indexPath)
  667. }
  668. return cell
  669. case 1:
  670. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  671. let cardContentPicVideoModel = CardContentPicVideoModel()
  672. cardContentPicVideoModel.number = 7
  673. cardContentPicVideoModel.width = 300
  674. cardContentPicVideoModel.height = 100
  675. cardContentPicVideoModel.picAndVideo = 0
  676. cell.cardContentPicVideoModel = cardContentPicVideoModel
  677. return cell
  678. case 2:
  679. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  680. cell.cardContentTitleTableViewCellType = .titleNoMoreThan
  681. return cell
  682. case 3:
  683. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  684. cell.collectClosureName = {
  685. (button:UIButton) -> Bool in
  686. return !button.isSelected
  687. }
  688. cell.praiseClosureName = {
  689. (button:UIButton) -> Bool in
  690. return !button.isSelected
  691. }
  692. return cell
  693. case 4:
  694. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  695. cell.frame = tableView.frame
  696. cell.layoutIfNeeded()
  697. cell.reloadData()
  698. return cell
  699. case 5:
  700. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  701. cell.addCommnetClosureName = {
  702. }
  703. return cell
  704. default:
  705. return UITableViewCell()
  706. }
  707. case 11:
  708. switch indexPath.row {
  709. case 0:
  710. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  711. cell.followType = .mutualFollow
  712. //关注状态
  713. cell.followClosure = {
  714. [weak self] in
  715. self?.followData(indexPath: indexPath)
  716. }
  717. return cell
  718. case 1:
  719. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  720. let cardContentPicVideoModel = CardContentPicVideoModel()
  721. cardContentPicVideoModel.number = 8
  722. cardContentPicVideoModel.width = 300
  723. cardContentPicVideoModel.height = 100
  724. cardContentPicVideoModel.picAndVideo = 0
  725. cell.cardContentPicVideoModel = cardContentPicVideoModel
  726. return cell
  727. case 2:
  728. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  729. cell.cardContentTitleTableViewCellType = .titleNoMoreThan
  730. return cell
  731. case 3:
  732. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  733. cell.collectClosureName = {
  734. (button:UIButton) -> Bool in
  735. return !button.isSelected
  736. }
  737. cell.praiseClosureName = {
  738. (button:UIButton) -> Bool in
  739. return !button.isSelected
  740. }
  741. return cell
  742. case 4:
  743. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  744. cell.frame = tableView.frame
  745. cell.layoutIfNeeded()
  746. cell.reloadData()
  747. return cell
  748. case 5:
  749. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  750. cell.addCommnetClosureName = {
  751. }
  752. return cell
  753. default:
  754. return UITableViewCell()
  755. }
  756. case 12:
  757. switch indexPath.row {
  758. case 0:
  759. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  760. cell.followType = .mutualFollow
  761. //关注状态
  762. cell.followClosure = {
  763. [weak self] in
  764. self?.followData(indexPath: indexPath)
  765. }
  766. return cell
  767. case 1:
  768. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  769. let cardContentPicVideoModel = CardContentPicVideoModel()
  770. cardContentPicVideoModel.number = 9
  771. cardContentPicVideoModel.width = 300
  772. cardContentPicVideoModel.height = 100
  773. cardContentPicVideoModel.picAndVideo = 0
  774. cell.cardContentPicVideoModel = cardContentPicVideoModel
  775. return cell
  776. case 2:
  777. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  778. cell.cardContentTitleTableViewCellType = .titleNoMoreThan
  779. return cell
  780. case 3:
  781. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  782. cell.collectClosureName = {
  783. (button:UIButton) -> Bool in
  784. return !button.isSelected
  785. }
  786. cell.praiseClosureName = {
  787. (button:UIButton) -> Bool in
  788. return !button.isSelected
  789. }
  790. return cell
  791. case 4:
  792. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  793. cell.frame = tableView.frame
  794. cell.layoutIfNeeded()
  795. cell.reloadData()
  796. return cell
  797. case 5:
  798. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  799. cell.addCommnetClosureName = {
  800. }
  801. return cell
  802. default:
  803. return UITableViewCell()
  804. }
  805. case 13:
  806. switch indexPath.row {
  807. case 0:
  808. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  809. cell.followType = .mutualFollow
  810. //关注状态
  811. cell.followClosure = {
  812. [weak self] in
  813. self?.followData(indexPath: indexPath)
  814. }
  815. return cell
  816. case 1:
  817. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  818. let cardContentPicVideoModel = CardContentPicVideoModel()
  819. cardContentPicVideoModel.number = 1
  820. cardContentPicVideoModel.width = 100
  821. cardContentPicVideoModel.height = 300
  822. cardContentPicVideoModel.picAndVideo = 1
  823. cell.cardContentPicVideoModel = cardContentPicVideoModel
  824. return cell
  825. case 2:
  826. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  827. cell.cardContentTitleTableViewCellType = .titleNoMoreThan
  828. return cell
  829. case 3:
  830. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  831. cell.collectClosureName = {
  832. (button:UIButton) -> Bool in
  833. return !button.isSelected
  834. }
  835. cell.praiseClosureName = {
  836. (button:UIButton) -> Bool in
  837. return !button.isSelected
  838. }
  839. return cell
  840. case 4:
  841. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  842. cell.frame = tableView.frame
  843. cell.layoutIfNeeded()
  844. cell.reloadData()
  845. return cell
  846. case 5:
  847. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  848. cell.addCommnetClosureName = {
  849. }
  850. return cell
  851. default:
  852. return UITableViewCell()
  853. }
  854. case 14:
  855. switch indexPath.row {
  856. case 0:
  857. let cell = CardContentUserTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  858. cell.followType = .mutualFollow
  859. //关注状态
  860. cell.followClosure = {
  861. [weak self] in
  862. self?.followData(indexPath: indexPath)
  863. }
  864. return cell
  865. case 1:
  866. let cell = CardContentPicVideoTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  867. let cardContentPicVideoModel = CardContentPicVideoModel()
  868. cardContentPicVideoModel.number = 1
  869. cardContentPicVideoModel.width = 300
  870. cardContentPicVideoModel.height = 100
  871. cardContentPicVideoModel.picAndVideo = 1
  872. cell.cardContentPicVideoModel = cardContentPicVideoModel
  873. return cell
  874. case 2:
  875. let cell = CardContentTitleTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  876. cell.cardContentTitleTableViewCellType = .titleNoMoreThan
  877. return cell
  878. case 3:
  879. let cell = CardContentActionTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  880. cell.collectClosureName = {
  881. (button:UIButton) -> Bool in
  882. return !button.isSelected
  883. }
  884. cell.praiseClosureName = {
  885. (button:UIButton) -> Bool in
  886. return !button.isSelected
  887. }
  888. return cell
  889. case 4:
  890. let cell = CardContentCommentListTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  891. cell.frame = tableView.frame
  892. cell.layoutIfNeeded()
  893. cell.reloadData()
  894. return cell
  895. case 5:
  896. let cell = CardContentCommnetTableViewCell.cellWith(tableView: tableView, indexPath: indexPath)
  897. cell.addCommnetClosureName = {
  898. }
  899. return cell
  900. default:
  901. return UITableViewCell()
  902. }
  903. default:
  904. return UITableViewCell()
  905. }
  906. }
  907. func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  908. switch indexPath.section {
  909. case 0:
  910. switch indexPath.row {
  911. case 0:
  912. return 80
  913. case 1:
  914. let cardContentPicVideoModel = CardContentPicVideoModel()
  915. cardContentPicVideoModel.number = 1
  916. cardContentPicVideoModel.width = 100
  917. cardContentPicVideoModel.height = 200
  918. cardContentPicVideoModel.picAndVideo = 0
  919. return cardContentPicVideoModel.collectionViewHeight() + 20
  920. case 2:
  921. return UITableView.automaticDimension
  922. case 3:
  923. return 54
  924. case 4:
  925. return UITableView.automaticDimension
  926. case 5:
  927. return 74
  928. default:
  929. return 0
  930. }
  931. case 1:
  932. switch indexPath.row {
  933. case 0:
  934. return 80
  935. case 1:
  936. let cardContentPicVideoModel = CardContentPicVideoModel()
  937. cardContentPicVideoModel.number = 1
  938. cardContentPicVideoModel.width = 100
  939. cardContentPicVideoModel.height = 300
  940. cardContentPicVideoModel.picAndVideo = 0
  941. return cardContentPicVideoModel.collectionViewHeight() + 20
  942. case 2:
  943. return UITableView.automaticDimension
  944. case 3:
  945. return 54
  946. case 4:
  947. return UITableView.automaticDimension
  948. case 5:
  949. return 74
  950. default:
  951. return 0
  952. }
  953. case 2:
  954. switch indexPath.row {
  955. case 0:
  956. return 80
  957. case 1:
  958. let cardContentPicVideoModel = CardContentPicVideoModel()
  959. cardContentPicVideoModel.number = 1
  960. cardContentPicVideoModel.width = 200
  961. cardContentPicVideoModel.height = 200
  962. cardContentPicVideoModel.picAndVideo = 0
  963. return cardContentPicVideoModel.collectionViewHeight() + 20
  964. case 2:
  965. return UITableView.automaticDimension
  966. case 3:
  967. return 54
  968. case 4:
  969. return UITableView.automaticDimension
  970. case 5:
  971. return 74
  972. default:
  973. return 0
  974. }
  975. case 3:
  976. switch indexPath.row {
  977. case 0:
  978. return 80
  979. case 1:
  980. let cardContentPicVideoModel = CardContentPicVideoModel()
  981. cardContentPicVideoModel.number = 1
  982. cardContentPicVideoModel.width = 200
  983. cardContentPicVideoModel.height = 100
  984. cardContentPicVideoModel.picAndVideo = 0
  985. return cardContentPicVideoModel.collectionViewHeight() + 20
  986. case 2:
  987. return UITableView.automaticDimension
  988. case 3:
  989. return 54
  990. case 4:
  991. return UITableView.automaticDimension
  992. case 5:
  993. return 74
  994. default:
  995. return 0
  996. }
  997. case 4:
  998. switch indexPath.row {
  999. case 0:
  1000. return 80
  1001. case 1:
  1002. let cardContentPicVideoModel = CardContentPicVideoModel()
  1003. cardContentPicVideoModel.number = 1
  1004. cardContentPicVideoModel.width = 300
  1005. cardContentPicVideoModel.height = 100
  1006. cardContentPicVideoModel.picAndVideo = 0
  1007. return cardContentPicVideoModel.collectionViewHeight() + 20
  1008. case 2:
  1009. return UITableView.automaticDimension
  1010. case 3:
  1011. return 54
  1012. case 4:
  1013. return UITableView.automaticDimension
  1014. case 5:
  1015. return 74
  1016. default:
  1017. return 0
  1018. }
  1019. case 5:
  1020. switch indexPath.row {
  1021. case 0:
  1022. return 80
  1023. case 1:
  1024. let cardContentPicVideoModel = CardContentPicVideoModel()
  1025. cardContentPicVideoModel.number = 2
  1026. cardContentPicVideoModel.width = 300
  1027. cardContentPicVideoModel.height = 100
  1028. cardContentPicVideoModel.picAndVideo = 0
  1029. return cardContentPicVideoModel.collectionViewHeight() + 20
  1030. case 2:
  1031. return UITableView.automaticDimension
  1032. case 3:
  1033. return 54
  1034. case 4:
  1035. return UITableView.automaticDimension
  1036. case 5:
  1037. return 74
  1038. default:
  1039. return 0
  1040. }
  1041. case 6:
  1042. switch indexPath.row {
  1043. case 0:
  1044. return 80
  1045. case 1:
  1046. let cardContentPicVideoModel = CardContentPicVideoModel()
  1047. cardContentPicVideoModel.number = 3
  1048. cardContentPicVideoModel.width = 300
  1049. cardContentPicVideoModel.height = 100
  1050. cardContentPicVideoModel.picAndVideo = 0
  1051. return cardContentPicVideoModel.collectionViewHeight() + 20
  1052. case 2:
  1053. return UITableView.automaticDimension
  1054. case 3:
  1055. return 54
  1056. case 4:
  1057. return UITableView.automaticDimension
  1058. case 5:
  1059. return 74
  1060. default:
  1061. return 0
  1062. }
  1063. case 7:
  1064. switch indexPath.row {
  1065. case 0:
  1066. return 80
  1067. case 1:
  1068. let cardContentPicVideoModel = CardContentPicVideoModel()
  1069. cardContentPicVideoModel.number = 4
  1070. cardContentPicVideoModel.width = 300
  1071. cardContentPicVideoModel.height = 100
  1072. cardContentPicVideoModel.picAndVideo = 0
  1073. return cardContentPicVideoModel.collectionViewHeight() + 20
  1074. case 2:
  1075. return UITableView.automaticDimension
  1076. case 3:
  1077. return 54
  1078. case 4:
  1079. return UITableView.automaticDimension
  1080. case 5:
  1081. return 74
  1082. default:
  1083. return 0
  1084. }
  1085. case 8:
  1086. switch indexPath.row {
  1087. case 0:
  1088. return 80
  1089. case 1:
  1090. let cardContentPicVideoModel = CardContentPicVideoModel()
  1091. cardContentPicVideoModel.number = 5
  1092. cardContentPicVideoModel.width = 300
  1093. cardContentPicVideoModel.height = 100
  1094. cardContentPicVideoModel.picAndVideo = 0
  1095. return cardContentPicVideoModel.collectionViewHeight() + 20
  1096. case 2:
  1097. return UITableView.automaticDimension
  1098. case 3:
  1099. return 54
  1100. case 4:
  1101. return UITableView.automaticDimension
  1102. case 5:
  1103. return 74
  1104. default:
  1105. return 0
  1106. }
  1107. case 9:
  1108. switch indexPath.row {
  1109. case 0:
  1110. return 80
  1111. case 1:
  1112. let cardContentPicVideoModel = CardContentPicVideoModel()
  1113. cardContentPicVideoModel.number = 6
  1114. cardContentPicVideoModel.width = 300
  1115. cardContentPicVideoModel.height = 100
  1116. cardContentPicVideoModel.picAndVideo = 0
  1117. return cardContentPicVideoModel.collectionViewHeight() + 20
  1118. case 2:
  1119. return UITableView.automaticDimension
  1120. case 3:
  1121. return 54
  1122. case 4:
  1123. return UITableView.automaticDimension
  1124. case 5:
  1125. return 74
  1126. default:
  1127. return 0
  1128. }
  1129. case 10:
  1130. switch indexPath.row {
  1131. case 0:
  1132. return 80
  1133. case 1:
  1134. let cardContentPicVideoModel = CardContentPicVideoModel()
  1135. cardContentPicVideoModel.number = 7
  1136. cardContentPicVideoModel.width = 300
  1137. cardContentPicVideoModel.height = 100
  1138. cardContentPicVideoModel.picAndVideo = 0
  1139. return cardContentPicVideoModel.collectionViewHeight() + 20
  1140. case 2:
  1141. return UITableView.automaticDimension
  1142. case 3:
  1143. return 54
  1144. case 4:
  1145. return UITableView.automaticDimension
  1146. case 5:
  1147. return 74
  1148. default:
  1149. return 0
  1150. }
  1151. case 11:
  1152. switch indexPath.row {
  1153. case 0:
  1154. return 80
  1155. case 1:
  1156. let cardContentPicVideoModel = CardContentPicVideoModel()
  1157. cardContentPicVideoModel.number = 8
  1158. cardContentPicVideoModel.width = 300
  1159. cardContentPicVideoModel.height = 100
  1160. cardContentPicVideoModel.picAndVideo = 0
  1161. return cardContentPicVideoModel.collectionViewHeight() + 20
  1162. case 2:
  1163. return UITableView.automaticDimension
  1164. case 3:
  1165. return 54
  1166. case 4:
  1167. return UITableView.automaticDimension
  1168. case 5:
  1169. return 74
  1170. default:
  1171. return 0
  1172. }
  1173. case 12:
  1174. switch indexPath.row {
  1175. case 0:
  1176. return 80
  1177. case 1:
  1178. let cardContentPicVideoModel = CardContentPicVideoModel()
  1179. cardContentPicVideoModel.number = 9
  1180. cardContentPicVideoModel.width = 300
  1181. cardContentPicVideoModel.height = 100
  1182. cardContentPicVideoModel.picAndVideo = 0
  1183. return cardContentPicVideoModel.collectionViewHeight() + 20
  1184. case 2:
  1185. return UITableView.automaticDimension
  1186. case 3:
  1187. return 54
  1188. case 4:
  1189. return UITableView.automaticDimension
  1190. case 5:
  1191. return 74
  1192. default:
  1193. return 0
  1194. }
  1195. case 13:
  1196. switch indexPath.row {
  1197. case 0:
  1198. return 80
  1199. case 1:
  1200. let cardContentPicVideoModel = CardContentPicVideoModel()
  1201. cardContentPicVideoModel.number = 9
  1202. cardContentPicVideoModel.width = 100
  1203. cardContentPicVideoModel.height = 300
  1204. cardContentPicVideoModel.picAndVideo = 1
  1205. return cardContentPicVideoModel.collectionViewHeight() + 20
  1206. case 2:
  1207. return UITableView.automaticDimension
  1208. case 3:
  1209. return 54
  1210. case 4:
  1211. return UITableView.automaticDimension
  1212. case 5:
  1213. return 74
  1214. default:
  1215. return 0
  1216. }
  1217. case 14:
  1218. switch indexPath.row {
  1219. case 0:
  1220. return 80
  1221. case 1:
  1222. let cardContentPicVideoModel = CardContentPicVideoModel()
  1223. cardContentPicVideoModel.number = 1
  1224. cardContentPicVideoModel.width = 300
  1225. cardContentPicVideoModel.height = 100
  1226. cardContentPicVideoModel.picAndVideo = 1
  1227. return cardContentPicVideoModel.collectionViewHeight() + 20
  1228. case 2:
  1229. return UITableView.automaticDimension
  1230. case 3:
  1231. return 54
  1232. case 4:
  1233. return UITableView.automaticDimension
  1234. case 5:
  1235. return 74
  1236. default:
  1237. return 0
  1238. }
  1239. default:
  1240. return 0
  1241. }
  1242. }
  1243. func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
  1244. cellHeightsDictionary.updateValue(cell.frame.size.height, forKey: indexPath)
  1245. }
  1246. func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
  1247. let height = cellHeightsDictionary[indexPath]
  1248. if let height = height {
  1249. return height as! CGFloat
  1250. }
  1251. return UITableView.automaticDimension
  1252. }
  1253. func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
  1254. return 0
  1255. }
  1256. func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
  1257. return 10
  1258. }
  1259. func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
  1260. return nil
  1261. }
  1262. func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
  1263. let footerView = UIView()
  1264. footerView.backgroundColor = kf7f8faColor
  1265. return footerView
  1266. }
  1267. // func tableView(_ tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int) {
  1268. // cellHeightsFooterDictionary.updateValue(view.frame.size.height, forKey: section)
  1269. // }
  1270. // func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
  1271. // cellHeightsHeaderDictionary.updateValue(view.frame.size.height, forKey: section)
  1272. // }
  1273. // func tableView(_ tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat {
  1274. // let height = cellHeightsHeaderDictionary[section]
  1275. // if let height = height {
  1276. // return height as! CGFloat
  1277. // }
  1278. // return 0
  1279. // }
  1280. //
  1281. // func tableView(_ tableView: UITableView, estimatedHeightForFooterInSection section: Int) -> CGFloat {
  1282. // let height = cellHeightsFooterDictionary[section]
  1283. // if let height = height {
  1284. // return height as! CGFloat
  1285. // }
  1286. // return 0
  1287. // }
  1288. }