Commit 490ef8f1a1fd9f99b178be9a2f3f333b3669074b
1 parent
93a65866
数字简历页-显示全部工作记录 数字简历页-一个工作记录区块
Showing
5 changed files
with
732 additions
and
503 deletions
metaCode.xcodeproj/project.pbxproj
| ... | ... | @@ -167,6 +167,7 @@ |
| 167 | 167 | 19B153CF2BC540FF0018906C /* CNLivePayOrderInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19B153CE2BC540FF0018906C /* CNLivePayOrderInfoModel.swift */; }; |
| 168 | 168 | 19B153D22BC623980018906C /* CNLiveShopPayNeedPaymentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19B153D12BC623980018906C /* CNLiveShopPayNeedPaymentCell.swift */; }; |
| 169 | 169 | 19B153D42BC623BE0018906C /* CNLiveShopPayWeChatAlipayCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19B153D32BC623BE0018906C /* CNLiveShopPayWeChatAlipayCell.swift */; }; |
| 170 | + 19BAF0342C7831DB00BD7CC0 /* CNLiveDigitalResumePreviewFourWorkAwardCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19BAF0332C7831DB00BD7CC0 /* CNLiveDigitalResumePreviewFourWorkAwardCell.swift */; }; | |
| 170 | 171 | 19BB1FDF2AEA3A450094D962 /* CNSlideBaseNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19BB1FDE2AEA3A450094D962 /* CNSlideBaseNavigationController.swift */; }; |
| 171 | 172 | 19BB1FE12AEB5C220094D962 /* CNLiveShopConsoleController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19BB1FE02AEB5C220094D962 /* CNLiveShopConsoleController.swift */; }; |
| 172 | 173 | 19BB1FE32AEB8B7C0094D962 /* CNLiveShopConsoleViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19BB1FE22AEB8B7C0094D962 /* CNLiveShopConsoleViewModel.swift */; }; |
| ... | ... | @@ -518,6 +519,7 @@ |
| 518 | 519 | 19B153CE2BC540FF0018906C /* CNLivePayOrderInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLivePayOrderInfoModel.swift; sourceTree = "<group>"; }; |
| 519 | 520 | 19B153D12BC623980018906C /* CNLiveShopPayNeedPaymentCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopPayNeedPaymentCell.swift; sourceTree = "<group>"; }; |
| 520 | 521 | 19B153D32BC623BE0018906C /* CNLiveShopPayWeChatAlipayCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopPayWeChatAlipayCell.swift; sourceTree = "<group>"; }; |
| 522 | + 19BAF0332C7831DB00BD7CC0 /* CNLiveDigitalResumePreviewFourWorkAwardCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveDigitalResumePreviewFourWorkAwardCell.swift; sourceTree = "<group>"; }; | |
| 521 | 523 | 19BB1FDE2AEA3A450094D962 /* CNSlideBaseNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNSlideBaseNavigationController.swift; sourceTree = "<group>"; }; |
| 522 | 524 | 19BB1FE02AEB5C220094D962 /* CNLiveShopConsoleController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopConsoleController.swift; sourceTree = "<group>"; }; |
| 523 | 525 | 19BB1FE22AEB8B7C0094D962 /* CNLiveShopConsoleViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveShopConsoleViewModel.swift; sourceTree = "<group>"; }; |
| ... | ... | @@ -787,6 +789,7 @@ |
| 787 | 789 | 1909DCAA2C649C10001E7986 /* CNLiveDigitalResumePreViewSecCollectionCell.swift */, |
| 788 | 790 | 1909DCA12C637353001E7986 /* CNLiveDigitalResumePreviewThreeCell.swift */, |
| 789 | 791 | 1909DCA42C63736C001E7986 /* CNLiveDigitalResumePreviewFourCell.swift */, |
| 792 | + 19BAF0332C7831DB00BD7CC0 /* CNLiveDigitalResumePreviewFourWorkAwardCell.swift */, | |
| 790 | 793 | 1909DCA62C637378001E7986 /* CNLiveDigitalResumePreviewFiveCell.swift */, |
| 791 | 794 | 1909DCA82C63738C001E7986 /* CNLiveDigitalResumePreviewSixCell.swift */, |
| 792 | 795 | ); |
| ... | ... | @@ -2188,6 +2191,7 @@ |
| 2188 | 2191 | 191732EF2B075C3A007BCC04 /* CNLiveCreateShopClassifyViewController.swift in Sources */, |
| 2189 | 2192 | 1938BD302B4B8A3500390A34 /* CNLiveHomePageViewModel.swift in Sources */, |
| 2190 | 2193 | 19C735CC2C11A1F400CACF4E /* CNLiveDigitalThreeCollectCell.swift in Sources */, |
| 2194 | + 19BAF0342C7831DB00BD7CC0 /* CNLiveDigitalResumePreviewFourWorkAwardCell.swift in Sources */, | |
| 2191 | 2195 | 798A44F22A30674200815935 /* CNLiveMineSubBodyListView.swift in Sources */, |
| 2192 | 2196 | 799172382AF090CD00DC01A8 /* CNLiveShopBodyListView.swift in Sources */, |
| 2193 | 2197 | 19565ED42AF9FEB4007D6727 /* CNLiveShopAddEditGoodsModel.swift in Sources */, | ... | ... |
metaCode/Classes/Main/HomePage/Controller/DigitalAuth/数字简历相关页面/CNLiveDigitalResumePreViewController.swift
| ... | ... | @@ -278,15 +278,15 @@ class CNLiveDigitalResumePreViewController:CNLiveBaseViewController,UITableViewD |
| 278 | 278 | }else{ |
| 279 | 279 | cell.zhengshuBtn.isHidden = true |
| 280 | 280 | } |
| 281 | - var workModel:CNLiveVitaeWorksModel? = nil | |
| 281 | + var workModel:[CNLiveVitaeWorksModel]? = nil | |
| 282 | 282 | if self.resumeType == .normal{ |
| 283 | - workModel = self.workDataArray[indexPath.row] as? CNLiveVitaeWorksModel | |
| 283 | + workModel = self.workDataArray as? [CNLiveVitaeWorksModel] | |
| 284 | 284 | }else{ |
| 285 | - workModel = self.workPreViewDataArray[indexPath.row] as? CNLiveVitaeWorksModel | |
| 285 | + workModel = self.workPreViewDataArray as? [CNLiveVitaeWorksModel] | |
| 286 | 286 | } |
| 287 | 287 | if let workMdl = workModel{ |
| 288 | - cell.workMdl = workMdl | |
| 289 | - cell.vitaePreviewWorkCellChangedBlock = { workCell,jianjieHeight,isExpand in | |
| 288 | + cell.workMdls = workMdl | |
| 289 | + cell.vitaePreviewWorkCellChangedBlock = { index ,jianjieHeight,isExpand in | |
| 290 | 290 | var res = self.workDataArray |
| 291 | 291 | if self.resumeType == .normal{ |
| 292 | 292 | res = self.workDataArray |
| ... | ... | @@ -294,9 +294,9 @@ class CNLiveDigitalResumePreViewController:CNLiveBaseViewController,UITableViewD |
| 294 | 294 | res = self.workPreViewDataArray |
| 295 | 295 | } |
| 296 | 296 | var tempArr = Array<Any>() |
| 297 | - let idxPath = tableView.indexPath(for: workCell) | |
| 297 | +// let idxPath = tableView.indexPath(for: workCell) | |
| 298 | 298 | for (idx,mdl) in res.enumerated() { |
| 299 | - if idx == idxPath?.row{ | |
| 299 | + if idx == index{ | |
| 300 | 300 | let layout = CNLiveViateWorkModelLayout(model: mdl as! CNLiveVitaeWorksModel,descH: Float(jianjieHeight),isPreview: true, isExpand: isExpand) |
| 301 | 301 | let newWorkModel = layout.getCellHModel() |
| 302 | 302 | tempArr.append(newWorkModel) |
| ... | ... | @@ -337,15 +337,15 @@ class CNLiveDigitalResumePreViewController:CNLiveBaseViewController,UITableViewD |
| 337 | 337 | }else{ |
| 338 | 338 | cell.zhengshuBtn.isHidden = true |
| 339 | 339 | } |
| 340 | - var awardModel:CNLiveVitaeAwardsModel? | |
| 340 | + var awardModels:[CNLiveVitaeAwardsModel]? | |
| 341 | 341 | if self.resumeType == .normal{ |
| 342 | - awardModel = self.awardDataArray[indexPath.row] as? CNLiveVitaeAwardsModel | |
| 342 | + awardModels = self.awardDataArray as? [CNLiveVitaeAwardsModel] | |
| 343 | 343 | }else{ |
| 344 | - awardModel = self.awardPreViewDataArray[indexPath.row] as? CNLiveVitaeAwardsModel | |
| 344 | + awardModels = self.awardPreViewDataArray as? [CNLiveVitaeAwardsModel] | |
| 345 | 345 | } |
| 346 | - if let awardMdl = awardModel{ | |
| 347 | - cell.awardModel = awardMdl | |
| 348 | - cell.vitaePreviewWorkCellChangedBlock = { workCell,jianjieHeight ,isExpand in | |
| 346 | + if let awardMdls = awardModels{ | |
| 347 | + cell.awardModels = awardMdls | |
| 348 | + cell.vitaePreviewWorkCellChangedBlock = { index ,jianjieHeight,isExpand in | |
| 349 | 349 | var res = self.awardDataArray |
| 350 | 350 | if self.resumeType == .normal{ |
| 351 | 351 | res = self.awardDataArray |
| ... | ... | @@ -353,9 +353,9 @@ class CNLiveDigitalResumePreViewController:CNLiveBaseViewController,UITableViewD |
| 353 | 353 | res = self.awardPreViewDataArray |
| 354 | 354 | } |
| 355 | 355 | var tempArr = Array<Any>() |
| 356 | - let idxPath = tableView.indexPath(for: workCell) | |
| 356 | +// let idxPath = tableView.indexPath(for: workCell) | |
| 357 | 357 | for (idx,mdl) in res.enumerated() { |
| 358 | - if idx == idxPath?.row{ | |
| 358 | + if idx == index{ | |
| 359 | 359 | let layout = CNLiveViateAwardModelLayout(model: mdl as! CNLiveVitaeAwardsModel,descH: Float(jianjieHeight),isPreview: true, isExpand: isExpand) |
| 360 | 360 | let newWorkModel = layout.getCellHModel() |
| 361 | 361 | tempArr.append(newWorkModel) |
| ... | ... | @@ -429,11 +429,23 @@ class CNLiveDigitalResumePreViewController:CNLiveBaseViewController,UITableViewD |
| 429 | 429 | if self.vitaeModel?.works.count ?? 0 > 0{ |
| 430 | 430 | //有多个workcell |
| 431 | 431 | if self.resumeType == .normal{ |
| 432 | - let model = self.workDataArray[indexPath.row] as! CNLiveVitaeWorksModel | |
| 433 | - return CGFloat(model.cellH) | |
| 432 | + //计算cellheight | |
| 433 | + var cellH:Float = 58+54//顶部和底部 | |
| 434 | + self.workDataArray.forEach { model in | |
| 435 | + let mdl = model as! CNLiveVitaeWorksModel | |
| 436 | + cellH = cellH + mdl.cellH | |
| 437 | + } | |
| 438 | + return CGFloat(cellH)+15 | |
| 434 | 439 | }else{ |
| 435 | - let model = self.workPreViewDataArray[indexPath.row] as! CNLiveVitaeWorksModel | |
| 436 | - return CGFloat(model.cellH) | |
| 440 | + //计算cellheight | |
| 441 | + var cellH:Float = 58+54//顶部和底部 | |
| 442 | + self.workPreViewDataArray.forEach { model in | |
| 443 | + let mdl = model as! CNLiveVitaeWorksModel | |
| 444 | + cellH = cellH + mdl.cellH | |
| 445 | + } | |
| 446 | + return CGFloat(cellH)+15 | |
| 447 | +// let model = self.workPreViewDataArray[indexPath.row] as! CNLiveVitaeWorksModel | |
| 448 | +// return CGFloat(model.cellH) | |
| 437 | 449 | } |
| 438 | 450 | }else{ |
| 439 | 451 | return DefaultPreViewCellHeight+15//396+15 |
| ... | ... | @@ -442,11 +454,25 @@ class CNLiveDigitalResumePreViewController:CNLiveBaseViewController,UITableViewD |
| 442 | 454 | if self.vitaeModel?.awards.count ?? 0 > 0{ |
| 443 | 455 | //有多个awardcell |
| 444 | 456 | if self.resumeType == .normal{ |
| 445 | - let model = self.awardDataArray[indexPath.row] as! CNLiveVitaeAwardsModel | |
| 446 | - return CGFloat(model.cellH) | |
| 457 | +// let model = self.awardDataArray[indexPath.row] as! CNLiveVitaeAwardsModel | |
| 458 | +// return CGFloat(model.cellH) | |
| 459 | + //计算cellheight | |
| 460 | + var cellH:Float = 58+54//顶部和底部 | |
| 461 | + self.awardDataArray.forEach { model in | |
| 462 | + let mdl = model as! CNLiveVitaeAwardsModel | |
| 463 | + cellH = cellH + mdl.cellH | |
| 464 | + } | |
| 465 | + return CGFloat(cellH)+15 | |
| 447 | 466 | }else{ |
| 448 | - let model = self.awardPreViewDataArray[indexPath.row] as! CNLiveVitaeAwardsModel | |
| 449 | - return CGFloat(model.cellH) | |
| 467 | +// let model = self.awardPreViewDataArray[indexPath.row] as! CNLiveVitaeAwardsModel | |
| 468 | +// return CGFloat(model.cellH) | |
| 469 | + //计算cellheight | |
| 470 | + var cellH:Float = 58+54//顶部和底部 | |
| 471 | + self.awardPreViewDataArray.forEach { model in | |
| 472 | + let mdl = model as! CNLiveVitaeAwardsModel | |
| 473 | + cellH = cellH + mdl.cellH | |
| 474 | + } | |
| 475 | + return CGFloat(cellH)+15 | |
| 450 | 476 | } |
| 451 | 477 | }else{ |
| 452 | 478 | return DefaultPreViewCellHeight+15//396+15 |
| ... | ... | @@ -531,53 +557,55 @@ class CNLiveDigitalResumePreViewController:CNLiveBaseViewController,UITableViewD |
| 531 | 557 | self.awardPreViewDataArray.removeAllObjects() |
| 532 | 558 | self.totalDataArray.addObjects(from: [CNLiveViatePreviewCellType.realName,CNLiveViatePreviewCellType.guanFang,CNLiveViatePreviewCellType.cer]) |
| 533 | 559 | self.totalPreViewDataArray.add(CNLiveViatePreviewCellType.realName) |
| 534 | - self.workPreViewDataArray.add(CNLiveViatePreviewCellType.realName) | |
| 535 | - self.awardPreViewDataArray.add(CNLiveViatePreviewCellType.realName) | |
| 560 | +// self.workPreViewDataArray.add(CNLiveViatePreviewCellType.realName) | |
| 561 | +// self.awardPreViewDataArray.add(CNLiveViatePreviewCellType.realName) | |
| 536 | 562 | |
| 537 | 563 | if self.succDataArray.count > 0{ |
| 538 | 564 | self.totalPreViewDataArray.add(CNLiveViatePreviewCellType.guanFang) |
| 539 | - self.workPreViewDataArray.add(CNLiveViatePreviewCellType.guanFang) | |
| 540 | - self.awardPreViewDataArray.add(CNLiveViatePreviewCellType.guanFang) | |
| 565 | +// self.workPreViewDataArray.add(CNLiveViatePreviewCellType.guanFang) | |
| 566 | +// self.awardPreViewDataArray.add(CNLiveViatePreviewCellType.guanFang) | |
| 541 | 567 | } |
| 542 | 568 | if self.threeCerDataArray.count > 0{ |
| 543 | 569 | self.totalPreViewDataArray.add(CNLiveViatePreviewCellType.cer) |
| 544 | - self.workPreViewDataArray.add(CNLiveViatePreviewCellType.cer) | |
| 545 | - self.awardPreViewDataArray.add(CNLiveViatePreviewCellType.cer) | |
| 570 | +// self.workPreViewDataArray.add(CNLiveViatePreviewCellType.cer) | |
| 571 | +// self.awardPreViewDataArray.add(CNLiveViatePreviewCellType.cer) | |
| 546 | 572 | } |
| 547 | - self.workDataArray.addObjects(from: [CNLiveViatePreviewCellType.realName,CNLiveViatePreviewCellType.guanFang,CNLiveViatePreviewCellType.cer]) | |
| 548 | - self.awardDataArray.addObjects(from: [CNLiveViatePreviewCellType.realName,CNLiveViatePreviewCellType.guanFang,CNLiveViatePreviewCellType.cer]) | |
| 549 | - for (_,mdl) in self.vitaeModel!.works.enumerated() { | |
| 550 | - self.totalDataArray.add(CNLiveViatePreviewCellType.work) | |
| 551 | - self.totalPreViewDataArray.add(CNLiveViatePreviewCellType.work) | |
| 573 | +// self.workDataArray.addObjects(from: [CNLiveViatePreviewCellType.realName,CNLiveViatePreviewCellType.guanFang,CNLiveViatePreviewCellType.cer]) | |
| 574 | +// self.awardDataArray.addObjects(from: [CNLiveViatePreviewCellType.realName,CNLiveViatePreviewCellType.guanFang,CNLiveViatePreviewCellType.cer]) | |
| 575 | + self.totalDataArray.add(CNLiveViatePreviewCellType.work) | |
| 576 | + self.totalPreViewDataArray.add(CNLiveViatePreviewCellType.work) | |
| 552 | 577 | |
| 578 | + for (_,mdl) in self.vitaeModel!.works.enumerated() { | |
| 579 | +// self.totalDataArray.add(CNLiveViatePreviewCellType.work) | |
| 580 | +// self.totalPreViewDataArray.add(CNLiveViatePreviewCellType.work) | |
| 553 | 581 | let layout = CNLiveViateWorkModelLayout(model: mdl ,descH: Float(40.0),isPreview: true, isExpand: false) |
| 554 | 582 | let newWorkModel = layout.getCellHModel() |
| 555 | 583 | self.workDataArray.add(newWorkModel) |
| 556 | - self.awardDataArray.add(CNLiveViatePreviewCellType.work) | |
| 584 | +// self.awardDataArray.add(CNLiveViatePreviewCellType.work) | |
| 557 | 585 | self.workPreViewDataArray.add(newWorkModel) |
| 558 | - self.awardPreViewDataArray.add(CNLiveViatePreviewCellType.work) | |
| 586 | +// self.awardPreViewDataArray.add(CNLiveViatePreviewCellType.work) | |
| 559 | 587 | } |
| 560 | 588 | if self.vitaeModel!.vitae!.showAwards == true{ |
| 589 | + self.totalDataArray.add(CNLiveViatePreviewCellType.award) | |
| 590 | + self.totalPreViewDataArray.add(CNLiveViatePreviewCellType.award) | |
| 561 | 591 | for (_,mdl) in self.vitaeModel!.awards.enumerated() { |
| 562 | - self.totalDataArray.add(CNLiveViatePreviewCellType.award) | |
| 563 | - self.totalPreViewDataArray.add(CNLiveViatePreviewCellType.award) | |
| 564 | 592 | let layout = CNLiveViateAwardModelLayout(model: mdl ,descH: Float(40.0),isPreview: true, isExpand: false) |
| 565 | 593 | let newWorkModel = layout.getCellHModel() |
| 566 | 594 | self.awardDataArray.add(newWorkModel) |
| 567 | - self.workDataArray.add(CNLiveViatePreviewCellType.award) | |
| 595 | +// self.workDataArray.add(CNLiveViatePreviewCellType.award) | |
| 568 | 596 | self.awardPreViewDataArray.add(newWorkModel) |
| 569 | - self.workPreViewDataArray.add(CNLiveViatePreviewCellType.award) | |
| 597 | +// self.workPreViewDataArray.add(CNLiveViatePreviewCellType.award) | |
| 570 | 598 | } |
| 571 | 599 | }else{ |
| 572 | 600 | print("false") |
| 573 | 601 | } |
| 574 | 602 | self.totalDataArray.add(CNLiveViatePreviewCellType.mineJieShao) |
| 575 | - self.workDataArray.add(CNLiveViatePreviewCellType.mineJieShao) | |
| 576 | - self.awardDataArray.add(CNLiveViatePreviewCellType.mineJieShao) | |
| 603 | +// self.workDataArray.add(CNLiveViatePreviewCellType.mineJieShao) | |
| 604 | +// self.awardDataArray.add(CNLiveViatePreviewCellType.mineJieShao) | |
| 577 | 605 | if model.vitae?.selfIntroduction.count ?? 0 > 0{ |
| 578 | 606 | self.totalPreViewDataArray.add(CNLiveViatePreviewCellType.mineJieShao) |
| 579 | - self.workPreViewDataArray.add(CNLiveViatePreviewCellType.mineJieShao) | |
| 580 | - self.awardPreViewDataArray.add(CNLiveViatePreviewCellType.mineJieShao) | |
| 607 | +// self.workPreViewDataArray.add(CNLiveViatePreviewCellType.mineJieShao) | |
| 608 | +// self.awardPreViewDataArray.add(CNLiveViatePreviewCellType.mineJieShao) | |
| 581 | 609 | } |
| 582 | 610 | self.tableView.reloadData() |
| 583 | 611 | } | ... | ... |
metaCode/Classes/Main/HomePage/View/DigitalAuthViews/我的简历cell/CNLiveDigitalResumePreviewFourCell.swift
| ... | ... | @@ -10,44 +10,55 @@ import Kingfisher |
| 10 | 10 | import SnapKit |
| 11 | 11 | import JFHeroBrowser |
| 12 | 12 | |
| 13 | -//cell高度变化 | |
| 14 | -typealias vitaePreviewWorkCellChangedBlockActionBlock = (_ cell: CNLiveDigitalResumePreviewFourCell ,_ cellHeight:CGFloat ,_ isExpand:Bool) -> Void | |
| 15 | 13 | |
| 16 | -class CNLiveDigitalResumePreviewFourCell: UITableViewCell { | |
| 14 | +class CNLiveDigitalResumePreviewFourCell: UITableViewCell,UITableViewDelegate,UITableViewDataSource { | |
| 17 | 15 | |
| 18 | 16 | var cellType:CNLiveViateWorkAwardType = .work |
| 17 | + var cellH:Float = 58+45+37+54//默认顶部,空视图,底部高度 | |
| 19 | 18 | |
| 20 | 19 | //workModel |
| 21 | - var _workMdl : CNLiveVitaeWorksModel? | |
| 22 | - var workMdl : CNLiveVitaeWorksModel? { | |
| 20 | + var _workMdls : [CNLiveVitaeWorksModel]? | |
| 21 | + var workMdls : [CNLiveVitaeWorksModel]? { | |
| 23 | 22 | get{ |
| 24 | - _workMdl | |
| 23 | + _workMdls | |
| 25 | 24 | } |
| 26 | 25 | set{ |
| 27 | - _workMdl = newValue! | |
| 28 | - setupNewUI(model: _workMdl!) | |
| 26 | + _workMdls = newValue! | |
| 27 | + setupNewUI(models: _workMdls!) | |
| 29 | 28 | } |
| 30 | 29 | } |
| 31 | 30 | |
| 32 | 31 | //awardModel |
| 33 | - var _awardModel : CNLiveVitaeAwardsModel? | |
| 34 | - var awardModel : CNLiveVitaeAwardsModel? { | |
| 32 | + var _awardModels : [CNLiveVitaeAwardsModel]? | |
| 33 | + var awardModels : [CNLiveVitaeAwardsModel]? { | |
| 35 | 34 | get{ |
| 36 | - _awardModel | |
| 35 | + _awardModels | |
| 37 | 36 | } |
| 38 | 37 | set{ |
| 39 | - _awardModel = newValue! | |
| 40 | - setupAwardNewUI(model: _awardModel!) | |
| 38 | + _awardModels = newValue! | |
| 39 | + setupAwardNewUI(models: _awardModels!) | |
| 41 | 40 | } |
| 42 | 41 | } |
| 43 | - | |
| 42 | + | |
| 44 | 43 | lazy var images: [HeroBrowserViewModuleBaseProtocol] = { |
| 45 | 44 | var list: [HeroBrowserViewModuleBaseProtocol] = [] |
| 46 | 45 | return list |
| 47 | 46 | }() |
| 48 | - | |
| 47 | + | |
| 49 | 48 | var vitaeWorkPreviewVideoPhotoBlock:VitaeWorkPreviewVideoPhotoBlock? |
| 50 | 49 | var vitaePreviewWorkCellChangedBlock:vitaePreviewWorkCellChangedBlockActionBlock? |
| 50 | + | |
| 51 | + let kCNLiveDigitalResumePreviewFourWorkAwardCellIdentifier = "kCNLiveDigitalResumePreviewFourWorkAwardCellIdentifier" | |
| 52 | + lazy var tableView : UITableView = { | |
| 53 | + let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: KSreenWidth-30, height: 50), style: .plain) | |
| 54 | + tableView.dataSource = self | |
| 55 | + tableView.delegate = self | |
| 56 | + tableView.separatorStyle = .none | |
| 57 | + tableView.tableFooterView = UIView.init() | |
| 58 | + tableView.backgroundColor = .clear | |
| 59 | + tableView.register(CNLiveDigitalResumePreviewFourWorkAwardCell.self, forCellReuseIdentifier: kCNLiveDigitalResumePreviewFourWorkAwardCellIdentifier) | |
| 60 | + return tableView | |
| 61 | + }() | |
| 51 | 62 | |
| 52 | 63 | lazy var whiteView :UIView = { |
| 53 | 64 | let whiteView = UIView(frame: CGRect(x: 15, y:15, width: KSreenWidth-30, height: DefaultPreViewCellHeight)) |
| ... | ... | @@ -79,104 +90,6 @@ class CNLiveDigitalResumePreviewFourCell: UITableViewCell { |
| 79 | 90 | iconImgView.image = UIImage(named: "mine_jianli_preview_workNoData") |
| 80 | 91 | return iconImgView |
| 81 | 92 | }() |
| 82 | - //有内容 | |
| 83 | - lazy var nameIconImgView :UIImageView = { | |
| 84 | - let iconImgView = UIImageView(frame: CGRect(x: 15, y: 0, width: 25, height: 25)) | |
| 85 | - iconImgView.contentMode = .scaleAspectFit | |
| 86 | - iconImgView.image = UIImage(named: "mine_jianli_preview_work") | |
| 87 | - return iconImgView | |
| 88 | - }() | |
| 89 | - lazy var workProfessionTitleLabel: UILabel = { | |
| 90 | - let titleLabel = UILabel() | |
| 91 | - titleLabel.textColor = HexColor("#333333") | |
| 92 | - titleLabel.textAlignment = .left | |
| 93 | - titleLabel.text = "行业" | |
| 94 | - titleLabel.font = BoldFont_16 | |
| 95 | - titleLabel.adjustsFontSizeToFitWidth = true | |
| 96 | - return titleLabel | |
| 97 | - }() | |
| 98 | - lazy var realImgView :UIImageView = { | |
| 99 | - let iconImgView = UIImageView() | |
| 100 | - iconImgView.image = UIImage(named: "mine_jianli_zhenshi") | |
| 101 | - return iconImgView | |
| 102 | - }() | |
| 103 | - lazy var workNameTitleLabel: UILabel = { | |
| 104 | - let titleLabel = UILabel() | |
| 105 | - titleLabel.textColor = HexColor("#333333") | |
| 106 | - titleLabel.textAlignment = .left | |
| 107 | - titleLabel.text = "工作岗位" | |
| 108 | - titleLabel.font = Font_14 | |
| 109 | - titleLabel.adjustsFontSizeToFitWidth = true | |
| 110 | - return titleLabel | |
| 111 | - }() | |
| 112 | - lazy var workPositionTitleLabel: UILabel = { | |
| 113 | - let titleLabel = UILabel() | |
| 114 | - titleLabel.textColor = HexColor("#333333") | |
| 115 | - titleLabel.textAlignment = .left | |
| 116 | - titleLabel.text = "公司名称" | |
| 117 | - titleLabel.font = Font_14 | |
| 118 | - titleLabel.adjustsFontSizeToFitWidth = true | |
| 119 | - return titleLabel | |
| 120 | - }() | |
| 121 | - lazy var workTimeTitleLabel: UILabel = { | |
| 122 | - let titleLabel = UILabel() | |
| 123 | - titleLabel.textColor = HexColor("#333333") | |
| 124 | - titleLabel.textAlignment = .left | |
| 125 | - titleLabel.text = "工作时间" | |
| 126 | - titleLabel.font = Font_14 | |
| 127 | - titleLabel.adjustsFontSizeToFitWidth = true | |
| 128 | - return titleLabel | |
| 129 | - }() | |
| 130 | - ///工作内容描述 | |
| 131 | - lazy var jianjieLabel: UILabel = { | |
| 132 | - let titleLabel = UILabel.init(frame: CGRectMake(50, 162, KSreenWidth-60, 40)) | |
| 133 | - titleLabel.textColor = HexColor("#999999") | |
| 134 | - titleLabel.textAlignment = .left | |
| 135 | - titleLabel.font = Font_14 | |
| 136 | - titleLabel.backgroundColor = .clear// UIColor(red:0.98, green:0.98, blue:0.98, alpha:1.00) | |
| 137 | - titleLabel.text = "描述" | |
| 138 | - titleLabel.numberOfLines = 0 | |
| 139 | - var lines = titleLabel.getRealLabelTextLines() | |
| 140 | - let height = titleLabel.qmui_lineHeight | |
| 141 | - if lines > 2 { | |
| 142 | - lines = 2 | |
| 143 | - } | |
| 144 | - titleLabel.height = height*CGFloat(lines) | |
| 145 | - return titleLabel | |
| 146 | - }() | |
| 147 | - //展开,收起 | |
| 148 | - lazy var expandBtn: UIButton = { | |
| 149 | - let expandBtn = UIButton.init(type: .custom) | |
| 150 | - expandBtn.backgroundColor = .clear | |
| 151 | - | |
| 152 | - expandBtn.frame = CGRect(x: self.jianjieLabel.right-60, y: self.jianjieLabel.bottom+10, width: 60, height: 30) | |
| 153 | - expandBtn.setTitle("更多", for: .normal) | |
| 154 | - expandBtn.setTitle("收起", for: .selected) | |
| 155 | - | |
| 156 | - expandBtn.setTitleColor(HexColor("#1B64FE"), for: .normal) | |
| 157 | - expandBtn.setImage(UIImage(named: "homepage_unfold"), for: .normal) | |
| 158 | - expandBtn.setImage(UIImage(named: "homepage_fold"), for: .selected) | |
| 159 | - expandBtn.titleLabel?.font = Font_14 | |
| 160 | - expandBtn.setupButtonImageAndTitlePossitionWith(padding: 5, style: .right) | |
| 161 | - expandBtn.addTarget(self, action: #selector(expandBtnAction), for: .touchUpInside) | |
| 162 | - return expandBtn | |
| 163 | - }() | |
| 164 | - | |
| 165 | - lazy var dingweiImgView :UIImageView = { | |
| 166 | - let iconImgView = UIImageView() | |
| 167 | - iconImgView.image = UIImage(named: "mine_jinali_workdingwei") | |
| 168 | - return iconImgView | |
| 169 | - }() | |
| 170 | - lazy var workDingWeiTitleLabel: UILabel = { | |
| 171 | - let titleLabel = UILabel() | |
| 172 | - titleLabel.textColor = HexColor("#999999") | |
| 173 | - titleLabel.textAlignment = .left | |
| 174 | - titleLabel.text = "" | |
| 175 | - titleLabel.font = Font_11 | |
| 176 | - titleLabel.adjustsFontSizeToFitWidth = true | |
| 177 | - return titleLabel | |
| 178 | - }() | |
| 179 | - | |
| 180 | 93 | |
| 181 | 94 | lazy var zhengshuBtn: UIButton = { |
| 182 | 95 | let closeBtn = UIButton(type: .custom) |
| ... | ... | @@ -210,81 +123,6 @@ class CNLiveDigitalResumePreviewFourCell: UITableViewCell { |
| 210 | 123 | make.top.equalToSuperview().offset(adapt_length(length: 15)) |
| 211 | 124 | make.left.equalTo(adapt_length(length: 15)) |
| 212 | 125 | } |
| 213 | - self.whiteView.addSubview(self.nameIconImgView) | |
| 214 | - self.nameIconImgView.snp.makeConstraints { make in | |
| 215 | - make.top.equalTo(self.myIdentityTitleLabel.snp.bottom).offset(15) | |
| 216 | - make.left.equalTo(15) | |
| 217 | - make.width.height.equalTo(25) | |
| 218 | - } | |
| 219 | - self.whiteView.addSubview(self.workProfessionTitleLabel) | |
| 220 | - self.workProfessionTitleLabel.snp.makeConstraints { make in | |
| 221 | - make.top.equalTo(self.myIdentityTitleLabel.snp.bottom).offset(15) | |
| 222 | - make.left.equalTo(50) | |
| 223 | - } | |
| 224 | - | |
| 225 | - self.whiteView.addSubview(self.realImgView) | |
| 226 | - self.realImgView.snp.makeConstraints { make in | |
| 227 | - make.right.equalToSuperview().offset(-15) | |
| 228 | - make.centerY.equalTo(self.workProfessionTitleLabel.snp.centerY) | |
| 229 | - make.width.equalTo(80) | |
| 230 | - make.height.equalTo(80.0*78/403) | |
| 231 | - make.left.greaterThanOrEqualTo(self.workProfessionTitleLabel.snp.right).offset(5) | |
| 232 | - } | |
| 233 | - self.whiteView.addSubview(self.workNameTitleLabel) | |
| 234 | - self.workNameTitleLabel.snp.makeConstraints { make in | |
| 235 | - make.top.equalTo(self.workProfessionTitleLabel.snp.bottom).offset(6) | |
| 236 | - make.left.equalTo(50) | |
| 237 | - make.right.equalToSuperview().offset(-15) | |
| 238 | - } | |
| 239 | - | |
| 240 | - self.whiteView.addSubview(self.workPositionTitleLabel) | |
| 241 | - self.workPositionTitleLabel.snp.makeConstraints { make in | |
| 242 | - make.top.equalTo(self.workNameTitleLabel.snp.bottom).offset(5) | |
| 243 | - make.left.equalTo(self.workNameTitleLabel.snp.left) | |
| 244 | - make.right.equalToSuperview().offset(-15) | |
| 245 | - } | |
| 246 | - | |
| 247 | - self.whiteView.addSubview(self.workTimeTitleLabel) | |
| 248 | - self.workTimeTitleLabel.snp.makeConstraints { make in | |
| 249 | - make.top.equalTo(self.workPositionTitleLabel.snp.bottom).offset(5) | |
| 250 | - make.left.equalTo(self.workPositionTitleLabel.snp.left) | |
| 251 | - make.right.equalToSuperview().offset(-15) | |
| 252 | - } | |
| 253 | - self.whiteView.addSubview(self.jianjieLabel) | |
| 254 | - self.jianjieLabel.snp.makeConstraints { make in | |
| 255 | - make.top.equalTo(self.workTimeTitleLabel.snp.bottom).offset(10) | |
| 256 | - make.left.equalTo(self.workTimeTitleLabel.snp.left) | |
| 257 | - make.right.equalToSuperview().offset(-20) | |
| 258 | - make.height.equalTo(40) | |
| 259 | - } | |
| 260 | - self.whiteView.addSubview(self.expandBtn) | |
| 261 | - self.expandBtn.snp.makeConstraints { make in | |
| 262 | - make.top.equalTo(self.jianjieLabel.snp.bottom) | |
| 263 | - make.right.equalTo(self.jianjieLabel.snp.right) | |
| 264 | - make.width.equalTo(60) | |
| 265 | - make.height.equalTo(30) | |
| 266 | - } | |
| 267 | - | |
| 268 | - let lines = jianjieLabel.getRealLabelTextLines() | |
| 269 | - if lines <= 2{ | |
| 270 | - self.expandBtn.isHidden = true | |
| 271 | - }else{ | |
| 272 | - self.expandBtn.isHidden = false | |
| 273 | - } | |
| 274 | - | |
| 275 | - self.whiteView.addSubview(self.dingweiImgView) | |
| 276 | - self.dingweiImgView.snp.makeConstraints { make in | |
| 277 | - make.left.equalTo(self.workNameTitleLabel.snp.left) | |
| 278 | - make.bottom.equalToSuperview().offset(-72) | |
| 279 | - make.width.equalTo(10) | |
| 280 | - make.height.equalTo(10) | |
| 281 | - } | |
| 282 | - self.whiteView.addSubview(self.workDingWeiTitleLabel) | |
| 283 | - self.workDingWeiTitleLabel.snp.makeConstraints { make in | |
| 284 | - make.left.equalTo(self.dingweiImgView.snp.right).offset(3) | |
| 285 | - make.centerY.equalTo(self.dingweiImgView.snp.centerY) | |
| 286 | - } | |
| 287 | - | |
| 288 | 126 | self.whiteView.addSubview(self.zhengshuBtn) |
| 289 | 127 | self.zhengshuBtn.snp.makeConstraints { make in |
| 290 | 128 | make.centerX.equalToSuperview() |
| ... | ... | @@ -293,6 +131,13 @@ class CNLiveDigitalResumePreviewFourCell: UITableViewCell { |
| 293 | 131 | make.height.equalTo(34) |
| 294 | 132 | } |
| 295 | 133 | |
| 134 | + self.whiteView.addSubview(self.tableView) | |
| 135 | + self.tableView.snp.makeConstraints { make in | |
| 136 | + make.top.equalTo(self.myIdentityTitleLabel.snp.bottom) | |
| 137 | + make.left.right.equalToSuperview() | |
| 138 | + make.bottom.equalTo(self.zhengshuBtn.snp.top) | |
| 139 | + } | |
| 140 | + | |
| 296 | 141 | self.whiteView.addSubview(self.zhengshuNoDescTitleLabel) |
| 297 | 142 | self.zhengshuNoDescTitleLabel.snp.makeConstraints { make in |
| 298 | 143 | make.centerX.equalToSuperview() |
| ... | ... | @@ -311,283 +156,74 @@ class CNLiveDigitalResumePreviewFourCell: UITableViewCell { |
| 311 | 156 | fatalError("init(coder:) has not been implemented") |
| 312 | 157 | } |
| 313 | 158 | |
| 314 | - func setupAwardNewUI(model:CNLiveVitaeAwardsModel){ | |
| 159 | + func setupAwardNewUI(models:[CNLiveVitaeAwardsModel]){ | |
| 315 | 160 | self.myIdentityTitleLabel.text = "获奖情况" |
| 316 | - self.realImgView.isHidden = true | |
| 317 | - | |
| 318 | - self.zhengshuNoIconImgView.isHidden = true | |
| 319 | - self.zhengshuNoDescTitleLabel.isHidden = true | |
| 320 | - | |
| 321 | - self.whiteView.subviews.forEach { view in | |
| 322 | - if view.tag >= 1000{ | |
| 323 | - view.removeFromSuperview() | |
| 324 | - } | |
| 161 | + self.zhengshuBtn.setTitle("管理获奖情况", for: .normal) | |
| 162 | + if models.count > 0{ | |
| 163 | + self.zhengshuNoIconImgView.isHidden = true | |
| 164 | + self.zhengshuNoDescTitleLabel.isHidden = true | |
| 325 | 165 | } |
| 326 | - self.workProfessionTitleLabel.text = model.title.count > 0 ? model.title : "获奖名称" | |
| 327 | - self.workNameTitleLabel.isHidden = true | |
| 328 | - self.workPositionTitleLabel.text = model.company | |
| 329 | 166 | |
| 330 | - let startDateString = convertTimestampStringToDateString(timestampString: model.time) | |
| 331 | - if startDateString == nil || startDateString?.count == 0{ | |
| 332 | - self.workTimeTitleLabel.text = "" | |
| 333 | - self.workTimeTitleLabel.isHidden = true | |
| 334 | - }else{ | |
| 335 | - self.workTimeTitleLabel.text = startDateString! | |
| 336 | - self.workTimeTitleLabel.isHidden = false | |
| 337 | - | |
| 338 | - } | |
| 339 | - | |
| 340 | - self.jianjieLabel.text = model.description//"描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述" | |
| 341 | - let lines = jianjieLabel.getRealLabelTextLines() | |
| 342 | - let height = jianjieLabel.qmui_lineHeight | |
| 343 | - if lines <= 2{ | |
| 344 | - self.expandBtn.isHidden = true | |
| 345 | - }else{ | |
| 346 | - self.expandBtn.isHidden = false | |
| 347 | - } | |
| 348 | - | |
| 349 | - var jienjieH:CGFloat = 0 | |
| 350 | - if model.isExpand{ | |
| 351 | - //展开状态 | |
| 352 | - jienjieH = height*CGFloat(lines) | |
| 353 | - self.jianjieLabel.numberOfLines = 0 | |
| 354 | - }else{ | |
| 355 | - //收起状态 | |
| 356 | - if lines <= 2{ | |
| 357 | - //小于2行,按实际行数 | |
| 358 | - jienjieH = CGFloat(lines)*height | |
| 359 | - }else{ | |
| 360 | - //大于2行, 显示2行 | |
| 361 | - jienjieH = 2*height | |
| 362 | - } | |
| 363 | - self.jianjieLabel.numberOfLines = 2 | |
| 364 | - } | |
| 365 | - self.expandBtn.isSelected = model.isExpand | |
| 366 | - self.jianjieLabel.snp.remakeConstraints { make in | |
| 367 | - make.top.equalTo(self.workTimeTitleLabel.snp.bottom).offset(10) | |
| 368 | - make.left.equalTo(self.workTimeTitleLabel.snp.left) | |
| 369 | - make.right.equalToSuperview().offset(-20) | |
| 370 | - make.height.equalTo(jienjieH) | |
| 371 | - } | |
| 372 | - self.expandBtn.top = self.jianjieLabel.top+jienjieH | |
| 373 | - | |
| 374 | - let imgArr = model.imgs.components(separatedBy: ",") | |
| 375 | - if imgArr.count > 0{ | |
| 376 | - for i in 0..<imgArr.count { | |
| 377 | - let imgGap:Float = 10 | |
| 378 | - let imgLeftGap:Float = 50 | |
| 379 | - let lie = i%3 | |
| 380 | - let hang = i/3 | |
| 381 | - let imgWH:Float = Float((Float(KSreenWidth)-30-40-imgLeftGap)/3.0) | |
| 382 | - let imgView = UIImageView(frame: CGRect(x: CGFloat(imgLeftGap+(imgGap+imgWH)*Float(lie)), y: CGFloat((imgWH+10)*Float(hang))+self.jianjieLabel.top+jienjieH+10, width: CGFloat(imgWH), height: CGFloat(imgWH))) | |
| 383 | - imgView.isUserInteractionEnabled = true | |
| 384 | - imgView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imgViewTapAciton))) | |
| 385 | - imgView.tag = 1000+i | |
| 386 | - imgView.contentMode = .scaleAspectFit | |
| 387 | - let imgUrl = imgArr[i] | |
| 388 | - imgView.clipsToBounds = true | |
| 389 | - imgView.layer.cornerRadius = 5 | |
| 390 | - self.whiteView.addSubview(imgView) | |
| 391 | - | |
| 392 | - if imgUrl.contains("vitae_video_"){ | |
| 393 | - //是视频 | |
| 394 | - let thumbailImgUrl = "http://wjjtest.ys2.cnliveimg.com/802/mateCode/img/vitae_photo_0/2024/08/02/3977195366.jpg" | |
| 395 | - let vm = HeroBrowserVideoViewModule(thumbailImgUrl: thumbailImgUrl, videoUrl: imgUrl, provider: HeroNetworkImageProvider.shared, autoPlay: true) | |
| 396 | - self.images.append(vm) | |
| 397 | - imgView.kf.setImage(with: URL(string: thumbailImgUrl),placeholder: UIImage(color: UIColor.lightGray, size: imgView.size)) | |
| 398 | - | |
| 399 | - let playBtn = UIButton(type: .custom) | |
| 400 | - playBtn.frame = imgView.bounds | |
| 401 | - playBtn.setImage(UIImage(named: "short_video_play"), for: .normal) | |
| 402 | - playBtn.addTarget(self, action: #selector(playBtnAction(btn:)), for: .touchUpInside) | |
| 403 | - playBtn.clipsToBounds = true | |
| 404 | - playBtn.layer.cornerRadius = 5 | |
| 405 | - playBtn.tag = 1000+i | |
| 406 | - imgView.addSubview(playBtn) | |
| 407 | - }else if imgUrl.contains("vitae_photo_"){ | |
| 408 | - //是图片 | |
| 409 | - self.images.append(HeroBrowserNetworkImageViewModule(thumbailImgUrl: nil, originImgUrl: imgUrl)) | |
| 410 | - imgView.kf.setImage(with: URL(string: imgUrl)) | |
| 411 | - }else{ | |
| 412 | - //默认图片 | |
| 413 | - self.images.append(HeroBrowserNetworkImageViewModule(thumbailImgUrl: nil, originImgUrl: imgUrl)) | |
| 414 | - imgView.kf.setImage(with: URL(string: imgUrl)) | |
| 415 | - } | |
| 416 | - } | |
| 417 | - } | |
| 418 | - | |
| 419 | - self.workDingWeiTitleLabel.isHidden = true | |
| 420 | - self.dingweiImgView.isHidden = true | |
| 421 | - self.zhengshuBtn.setTitle("管理获奖情况", for: .normal) | |
| 422 | - self.nameIconImgView.image = UIImage(named: "mine_jianli_preview_award") | |
| 167 | + self.tableView.reloadData() | |
| 423 | 168 | } |
| 424 | - func setupNewUI(model:CNLiveVitaeWorksModel){ | |
| 169 | + func setupNewUI(models:[CNLiveVitaeWorksModel]){ | |
| 425 | 170 | self.myIdentityTitleLabel.text = "工作记录" |
| 426 | - self.realImgView.isHidden = false | |
| 171 | + self.zhengshuBtn.setTitle("管理工作记录", for: .normal) | |
| 427 | 172 | |
| 428 | - self.zhengshuNoIconImgView.isHidden = true | |
| 429 | - self.zhengshuNoDescTitleLabel.isHidden = true | |
| 430 | - | |
| 431 | - self.whiteView.subviews.forEach { view in | |
| 432 | - if view.tag >= 1000{ | |
| 433 | - view.removeFromSuperview() | |
| 434 | - } | |
| 173 | + if models.count > 0{ | |
| 174 | + self.zhengshuNoIconImgView.isHidden = true | |
| 175 | + self.zhengshuNoDescTitleLabel.isHidden = true | |
| 435 | 176 | } |
| 436 | - self.workProfessionTitleLabel.text = model.profession.count > 0 ? model.profession : "行业" | |
| 437 | - self.workNameTitleLabel.text = model.position.count > 0 ? model.position : "职位" | |
| 438 | - self.workPositionTitleLabel.text = model.companyName | |
| 439 | - | |
| 440 | - let startDateString = convertTimestampStringToDateString(timestampString: model.startWorkingDate) | |
| 441 | - let endDateString = convertTimestampStringToDateString(timestampString: model.endWorkingDate) | |
| 442 | - if endDateString == nil || endDateString?.count == 0{ | |
| 443 | - if startDateString == nil || startDateString?.count == 0{ | |
| 444 | - self.workTimeTitleLabel.text = "" | |
| 445 | - }else{ | |
| 446 | - self.workTimeTitleLabel.text = startDateString! | |
| 447 | - } | |
| 177 | + self.tableView.reloadData() | |
| 178 | + } | |
| 179 | + | |
| 180 | + | |
| 181 | + // MARK: - UITableViewDelegate | |
| 182 | + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | |
| 183 | + if self.cellType == .work{ | |
| 184 | + return self.workMdls?.count ?? 0 | |
| 448 | 185 | }else{ |
| 449 | - if startDateString == nil || startDateString?.count == 0{ | |
| 450 | - self.workTimeTitleLabel.text = "" | |
| 451 | - }else{ | |
| 452 | - self.workTimeTitleLabel.text = startDateString!+"~"+endDateString! | |
| 453 | - } | |
| 186 | + return self.awardModels?.count ?? 0 | |
| 454 | 187 | } |
| 455 | - | |
| 456 | - self.jianjieLabel.text = model.jobDuties//"描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述" | |
| 457 | - let lines = jianjieLabel.getRealLabelTextLines() | |
| 458 | - let height = jianjieLabel.qmui_lineHeight | |
| 459 | - if lines <= 2{ | |
| 460 | - self.expandBtn.isHidden = true | |
| 461 | - }else{ | |
| 462 | - self.expandBtn.isHidden = false | |
| 188 | + } | |
| 189 | + | |
| 190 | + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | |
| 191 | + guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveDigitalResumePreviewFourWorkAwardCellIdentifier) as? CNLiveDigitalResumePreviewFourWorkAwardCell | |
| 192 | + else { | |
| 193 | + let cell = CNLiveDigitalResumePreviewFourWorkAwardCell() | |
| 194 | + return cell | |
| 463 | 195 | } |
| 464 | - | |
| 465 | - var jienjieH:CGFloat = 0 | |
| 466 | - if model.isExpand{ | |
| 467 | - //展开状态 | |
| 468 | - jienjieH = height*CGFloat(lines) | |
| 469 | - self.jianjieLabel.numberOfLines = 0 | |
| 196 | + if self.cellType == .work{ | |
| 197 | + //工作记录 | |
| 198 | + let workMdl = self.workMdls?[indexPath.row] | |
| 199 | + cell.workMdl = workMdl | |
| 470 | 200 | }else{ |
| 471 | - //收起状态 | |
| 472 | - if lines <= 2{ | |
| 473 | - //小于2行,按实际行数 | |
| 474 | - jienjieH = CGFloat(lines)*height | |
| 475 | - }else{ | |
| 476 | - //大于2行, 显示2行 | |
| 477 | - jienjieH = 2*height | |
| 478 | - } | |
| 479 | - self.jianjieLabel.numberOfLines = 2 | |
| 480 | - } | |
| 481 | - self.expandBtn.isSelected = model.isExpand | |
| 482 | - self.jianjieLabel.snp.remakeConstraints { make in | |
| 483 | - make.top.equalTo(self.workTimeTitleLabel.snp.bottom).offset(10) | |
| 484 | - make.left.equalTo(self.workTimeTitleLabel.snp.left) | |
| 485 | - make.right.equalToSuperview().offset(-20) | |
| 486 | - make.height.equalTo(jienjieH) | |
| 201 | + //获奖情况 | |
| 202 | + let awardMdl = self.awardModels?[indexPath.row] | |
| 203 | + cell.awardModel = awardMdl | |
| 487 | 204 | } |
| 488 | - self.expandBtn.top = self.jianjieLabel.top+jienjieH | |
| 489 | - | |
| 490 | - let imgArr = model.imgs.components(separatedBy: ",") | |
| 491 | - if imgArr.count > 0{ | |
| 492 | - for i in 0..<imgArr.count { | |
| 493 | - let imgGap:Float = 10 | |
| 494 | - let imgLeftGap:Float = 50 | |
| 495 | - let lie = i%3 | |
| 496 | - let hang = i/3 | |
| 497 | - let imgWH:Float = Float((Float(KSreenWidth)-30-40-imgLeftGap)/3.0) | |
| 498 | - let imgView = UIImageView(frame: CGRect(x: CGFloat(imgLeftGap+(imgGap+imgWH)*Float(lie)), y: CGFloat((imgWH+10)*Float(hang))+self.jianjieLabel.top+jienjieH+10, width: CGFloat(imgWH), height: CGFloat(imgWH))) | |
| 499 | - imgView.isUserInteractionEnabled = true | |
| 500 | - imgView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imgViewTapAciton))) | |
| 501 | - imgView.tag = 1000+i | |
| 502 | - imgView.contentMode = .scaleAspectFit | |
| 503 | - let imgUrl = imgArr[i] | |
| 504 | - imgView.clipsToBounds = true | |
| 505 | - imgView.layer.cornerRadius = 5 | |
| 506 | - self.whiteView.addSubview(imgView) | |
| 507 | - | |
| 508 | - if imgUrl.contains("vitae_video_"){ | |
| 509 | - //是视频 | |
| 510 | - let thumbailImgUrl = "http://wjjtest.ys2.cnliveimg.com/802/mateCode/img/vitae_photo_0/2024/08/02/3977195366.jpg" | |
| 511 | - let vm = HeroBrowserVideoViewModule(thumbailImgUrl: thumbailImgUrl, videoUrl: imgUrl, provider: HeroNetworkImageProvider.shared, autoPlay: true) | |
| 512 | - self.images.append(vm) | |
| 513 | - imgView.kf.setImage(with: URL(string: thumbailImgUrl),placeholder: UIImage(color: UIColor.lightGray, size: imgView.size)) | |
| 514 | - | |
| 515 | - let playBtn = UIButton(type: .custom) | |
| 516 | - playBtn.frame = imgView.bounds | |
| 517 | - playBtn.setImage(UIImage(named: "short_video_play"), for: .normal) | |
| 518 | - playBtn.addTarget(self, action: #selector(playBtnAction(btn:)), for: .touchUpInside) | |
| 519 | - playBtn.clipsToBounds = true | |
| 520 | - playBtn.layer.cornerRadius = 5 | |
| 521 | - playBtn.tag = 1000+i | |
| 522 | - imgView.addSubview(playBtn) | |
| 523 | - }else if imgUrl.contains("vitae_photo_"){ | |
| 524 | - //是图片 | |
| 525 | - self.images.append(HeroBrowserNetworkImageViewModule(thumbailImgUrl: nil, originImgUrl: imgUrl)) | |
| 526 | - imgView.kf.setImage(with: URL(string: imgUrl)) | |
| 527 | - }else{ | |
| 528 | - //默认图片 | |
| 529 | - self.images.append(HeroBrowserNetworkImageViewModule(thumbailImgUrl: nil, originImgUrl: imgUrl)) | |
| 530 | - imgView.kf.setImage(with: URL(string: imgUrl)) | |
| 531 | - } | |
| 532 | - } | |
| 205 | + cell.vitaeWorkPreviewVideoPhotoBlock = { images , index in | |
| 206 | + self.vitaeWorkPreviewVideoPhotoBlock?(self.images, index) | |
| 533 | 207 | } |
| 534 | - | |
| 535 | - let cityStr = model.city | |
| 536 | - if cityStr.count == 0 || cityStr == "请选择"{ | |
| 537 | - self.workDingWeiTitleLabel.isHidden = true | |
| 538 | - self.dingweiImgView.isHidden = true | |
| 539 | - }else{ | |
| 540 | - self.dingweiImgView.isHidden = false | |
| 541 | - self.workDingWeiTitleLabel.isHidden = false | |
| 542 | - self.workDingWeiTitleLabel.text = model.city | |
| 208 | + cell.vitaePreviewWorkCellChangedBlock = {index ,jianjieHeight,isExpand in | |
| 209 | + self.vitaePreviewWorkCellChangedBlock?(index ,jianjieHeight,isExpand) | |
| 210 | + | |
| 543 | 211 | } |
| 544 | - | |
| 545 | - self.zhengshuBtn.setTitle("管理工作记录", for: .normal) | |
| 546 | - self.nameIconImgView.image = UIImage(named: "mine_jianli_preview_work") | |
| 547 | - | |
| 212 | + return cell | |
| 548 | 213 | } |
| 549 | - | |
| 550 | - func convertTimestampStringToDateString(timestampString: String) -> String? { | |
| 551 | - // 首先,将毫秒时间戳字符串转换为TimeInterval(秒) | |
| 552 | - guard let timestampMilliseconds = Double(timestampString) else { | |
| 553 | - return nil | |
| 214 | + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | |
| 215 | + if self.cellType == .work{ | |
| 216 | + //工作记录 | |
| 217 | + let workMdl = self.workMdls?[indexPath.row] | |
| 218 | + return CGFloat(workMdl?.cellH ?? 0) | |
| 219 | + }else{ | |
| 220 | + //获奖情况 | |
| 221 | + let awardMdl = self.awardModels?[indexPath.row] | |
| 222 | + return CGFloat(awardMdl?.cellH ?? 0) | |
| 554 | 223 | } |
| 555 | - let timestampSeconds = timestampMilliseconds / 1000.0 | |
| 556 | - // 然后,将TimeInterval转换为Date对象 | |
| 557 | - let date = Date(timeIntervalSince1970: timestampSeconds) | |
| 558 | - // 接着,设置DateFormatter的格式 | |
| 559 | - let formatter = DateFormatter() | |
| 560 | - formatter.dateFormat = "yyyy.MM.dd" // 设置为你想要的日期格式 | |
| 561 | - // 最后,使用DateFormatter将Date对象格式化为字符串 | |
| 562 | - return formatter.string(from: date) | |
| 563 | 224 | } |
| 564 | 225 | |
| 565 | 226 | // MARK: - Action |
| 566 | - @objc func expandBtnAction(button:UIButton){ | |
| 567 | - button.isSelected = !button.isSelected | |
| 568 | - let lines = jianjieLabel.getRealLabelTextLines() | |
| 569 | - let height = jianjieLabel.qmui_lineHeight | |
| 570 | - | |
| 571 | - var jienjieH:CGFloat = 0 | |
| 572 | - if button.isSelected{ | |
| 573 | - //文本收起状态,点击展开 | |
| 574 | - jienjieH = CGFloat(lines)*height | |
| 575 | - }else{ | |
| 576 | - //文本展开状态,点击收起 | |
| 577 | - jienjieH = 2*height | |
| 578 | - } | |
| 579 | - self.jianjieLabel.snp.remakeConstraints { make in | |
| 580 | - make.top.equalTo(self.workTimeTitleLabel.snp.bottom).offset(10) | |
| 581 | - make.left.equalTo(self.workTimeTitleLabel.snp.left) | |
| 582 | - make.right.equalToSuperview().offset(-20) | |
| 583 | - make.height.equalTo(jienjieH) | |
| 584 | - } | |
| 585 | - | |
| 586 | - self.vitaePreviewWorkCellChangedBlock!(self, jienjieH, button.isSelected) | |
| 587 | - | |
| 588 | - self.expandBtn.top = self.jianjieLabel.top + jienjieH | |
| 589 | - | |
| 590 | - } | |
| 591 | 227 | @objc func zhengshuBtnAction(){ |
| 592 | 228 | if self.cellType == .work{ |
| 593 | 229 | //跳转 选择工作记录页面 |
| ... | ... | @@ -603,15 +239,5 @@ class CNLiveDigitalResumePreviewFourCell: UITableViewCell { |
| 603 | 239 | } |
| 604 | 240 | |
| 605 | 241 | } |
| 606 | - @objc func playBtnAction(btn:UIButton){ | |
| 607 | - let index = btn.tag-1000 | |
| 608 | - self.vitaeWorkPreviewVideoPhotoBlock?(self.images, index) | |
| 609 | - } | |
| 610 | - @objc func imgViewTapAciton(ges: UITapGestureRecognizer){ | |
| 611 | - let imgView = ges.view as! UIImageView | |
| 612 | - let index = imgView.tag-1000 | |
| 613 | - | |
| 614 | - self.vitaeWorkPreviewVideoPhotoBlock?(self.images, index) | |
| 615 | - } | |
| 616 | - | |
| 242 | + | |
| 617 | 243 | } | ... | ... |
metaCode/Classes/Main/HomePage/View/DigitalAuthViews/我的简历cell/CNLiveDigitalResumePreviewFourWorkAwardCell.swift
0 → 100644
| 1 | +// | |
| 2 | +// CNLiveDigitalResumePreviewFourWorkAwardCell.swift | |
| 3 | +// metaCode | |
| 4 | +// | |
| 5 | +// Created by zx on 2024/8/23. | |
| 6 | +// | |
| 7 | + | |
| 8 | +import Foundation | |
| 9 | +import JFHeroBrowser | |
| 10 | + | |
| 11 | +//cell高度变化 | |
| 12 | +typealias vitaePreviewWorkCellChangedBlockActionBlock = (_ index:Int ,_ cellHeight:CGFloat ,_ isExpand:Bool) -> Void | |
| 13 | + | |
| 14 | +class CNLiveDigitalResumePreviewFourWorkAwardCell:UITableViewCell{ | |
| 15 | + | |
| 16 | + var cellType:CNLiveViateWorkAwardType = .work | |
| 17 | + | |
| 18 | + //workModel | |
| 19 | + var _workMdl : CNLiveVitaeWorksModel? | |
| 20 | + var workMdl : CNLiveVitaeWorksModel? { | |
| 21 | + get{ | |
| 22 | + _workMdl | |
| 23 | + } | |
| 24 | + set{ | |
| 25 | + _workMdl = newValue! | |
| 26 | + setupNewUI(model: _workMdl!) | |
| 27 | + } | |
| 28 | + } | |
| 29 | + | |
| 30 | + //awardModel | |
| 31 | + var _awardModel : CNLiveVitaeAwardsModel? | |
| 32 | + var awardModel : CNLiveVitaeAwardsModel? { | |
| 33 | + get{ | |
| 34 | + _awardModel | |
| 35 | + } | |
| 36 | + set{ | |
| 37 | + _awardModel = newValue! | |
| 38 | + setupAwardNewUI(model: _awardModel!) | |
| 39 | + } | |
| 40 | + } | |
| 41 | + | |
| 42 | + lazy var images: [HeroBrowserViewModuleBaseProtocol] = { | |
| 43 | + var list: [HeroBrowserViewModuleBaseProtocol] = [] | |
| 44 | + return list | |
| 45 | + }() | |
| 46 | + | |
| 47 | + var vitaeWorkPreviewVideoPhotoBlock:VitaeWorkPreviewVideoPhotoBlock? | |
| 48 | + var vitaePreviewWorkCellChangedBlock:vitaePreviewWorkCellChangedBlockActionBlock? | |
| 49 | + | |
| 50 | + //有内容 | |
| 51 | + lazy var nameIconImgView :UIImageView = { | |
| 52 | + let iconImgView = UIImageView(frame: CGRect(x: 15, y: 0, width: 25, height: 25)) | |
| 53 | + iconImgView.contentMode = .scaleAspectFit | |
| 54 | + iconImgView.image = UIImage(named: "mine_jianli_preview_work") | |
| 55 | + return iconImgView | |
| 56 | + }() | |
| 57 | + lazy var workProfessionTitleLabel: UILabel = { | |
| 58 | + let titleLabel = UILabel() | |
| 59 | + titleLabel.textColor = HexColor("#333333") | |
| 60 | + titleLabel.textAlignment = .left | |
| 61 | + titleLabel.text = "行业" | |
| 62 | + titleLabel.font = BoldFont_16 | |
| 63 | + titleLabel.adjustsFontSizeToFitWidth = true | |
| 64 | + return titleLabel | |
| 65 | + }() | |
| 66 | + lazy var realImgView :UIImageView = { | |
| 67 | + let iconImgView = UIImageView() | |
| 68 | + iconImgView.image = UIImage(named: "mine_jianli_zhenshi") | |
| 69 | + return iconImgView | |
| 70 | + }() | |
| 71 | + lazy var workNameTitleLabel: UILabel = { | |
| 72 | + let titleLabel = UILabel() | |
| 73 | + titleLabel.textColor = HexColor("#333333") | |
| 74 | + titleLabel.textAlignment = .left | |
| 75 | + titleLabel.text = "工作岗位" | |
| 76 | + titleLabel.font = Font_14 | |
| 77 | + titleLabel.adjustsFontSizeToFitWidth = true | |
| 78 | + return titleLabel | |
| 79 | + }() | |
| 80 | + lazy var workPositionTitleLabel: UILabel = { | |
| 81 | + let titleLabel = UILabel() | |
| 82 | + titleLabel.textColor = HexColor("#333333") | |
| 83 | + titleLabel.textAlignment = .left | |
| 84 | + titleLabel.text = "公司名称" | |
| 85 | + titleLabel.font = Font_14 | |
| 86 | + titleLabel.adjustsFontSizeToFitWidth = true | |
| 87 | + return titleLabel | |
| 88 | + }() | |
| 89 | + lazy var workTimeTitleLabel: UILabel = { | |
| 90 | + let titleLabel = UILabel() | |
| 91 | + titleLabel.textColor = HexColor("#333333") | |
| 92 | + titleLabel.textAlignment = .left | |
| 93 | + titleLabel.text = "工作时间" | |
| 94 | + titleLabel.font = Font_14 | |
| 95 | + titleLabel.adjustsFontSizeToFitWidth = true | |
| 96 | + return titleLabel | |
| 97 | + }() | |
| 98 | + ///工作内容描述 | |
| 99 | + lazy var jianjieLabel: UILabel = { | |
| 100 | + let titleLabel = UILabel.init(frame: CGRectMake(50, 162, KSreenWidth-60, 40)) | |
| 101 | + titleLabel.textColor = HexColor("#999999") | |
| 102 | + titleLabel.textAlignment = .left | |
| 103 | + titleLabel.font = Font_14 | |
| 104 | + titleLabel.backgroundColor = .clear// UIColor(red:0.98, green:0.98, blue:0.98, alpha:1.00) | |
| 105 | + titleLabel.text = "描述" | |
| 106 | + titleLabel.numberOfLines = 0 | |
| 107 | + var lines = titleLabel.getRealLabelTextLines() | |
| 108 | + let height = titleLabel.qmui_lineHeight | |
| 109 | + if lines > 2 { | |
| 110 | + lines = 2 | |
| 111 | + } | |
| 112 | + titleLabel.height = height*CGFloat(lines) | |
| 113 | + return titleLabel | |
| 114 | + }() | |
| 115 | + //展开,收起 | |
| 116 | + lazy var expandBtn: UIButton = { | |
| 117 | + let expandBtn = UIButton.init(type: .custom) | |
| 118 | + expandBtn.backgroundColor = .clear | |
| 119 | + | |
| 120 | + expandBtn.frame = CGRect(x: self.jianjieLabel.right-60, y: self.jianjieLabel.bottom+10, width: 60, height: 30) | |
| 121 | + expandBtn.setTitle("更多", for: .normal) | |
| 122 | + expandBtn.setTitle("收起", for: .selected) | |
| 123 | + | |
| 124 | + expandBtn.setTitleColor(HexColor("#1B64FE"), for: .normal) | |
| 125 | + expandBtn.setImage(UIImage(named: "homepage_unfold"), for: .normal) | |
| 126 | + expandBtn.setImage(UIImage(named: "homepage_fold"), for: .selected) | |
| 127 | + expandBtn.titleLabel?.font = Font_14 | |
| 128 | + expandBtn.setupButtonImageAndTitlePossitionWith(padding: 5, style: .right) | |
| 129 | + expandBtn.addTarget(self, action: #selector(expandBtnAction), for: .touchUpInside) | |
| 130 | + return expandBtn | |
| 131 | + }() | |
| 132 | + lazy var imagesTotalView :UIView = { | |
| 133 | + let whiteBgView = UIView() | |
| 134 | + whiteBgView.tag = 1100 | |
| 135 | + return whiteBgView | |
| 136 | + }() | |
| 137 | + lazy var dingweiImgView :UIImageView = { | |
| 138 | + let iconImgView = UIImageView() | |
| 139 | + iconImgView.image = UIImage(named: "mine_jinali_workdingwei") | |
| 140 | + return iconImgView | |
| 141 | + }() | |
| 142 | + lazy var workDingWeiTitleLabel: UILabel = { | |
| 143 | + let titleLabel = UILabel() | |
| 144 | + titleLabel.textColor = HexColor("#999999") | |
| 145 | + titleLabel.textAlignment = .left | |
| 146 | + titleLabel.text = "" | |
| 147 | + titleLabel.font = Font_11 | |
| 148 | + titleLabel.adjustsFontSizeToFitWidth = true | |
| 149 | + return titleLabel | |
| 150 | + }() | |
| 151 | + | |
| 152 | + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { | |
| 153 | + super.init(style: style, reuseIdentifier: reuseIdentifier) | |
| 154 | + self.contentView.backgroundColor = .clear | |
| 155 | + self.backgroundColor = .clear | |
| 156 | + self.selectionStyle = .none | |
| 157 | + self.initUI() | |
| 158 | + } | |
| 159 | + | |
| 160 | + required init?(coder: NSCoder) { | |
| 161 | + fatalError("init(coder:) has not been implemented") | |
| 162 | + } | |
| 163 | + | |
| 164 | + func initUI(){ | |
| 165 | + self.contentView.addSubview(self.nameIconImgView) | |
| 166 | + self.nameIconImgView.snp.makeConstraints { make in | |
| 167 | + make.top.equalTo(10) | |
| 168 | + make.left.equalTo(15) | |
| 169 | + make.width.height.equalTo(25) | |
| 170 | + } | |
| 171 | + self.contentView.addSubview(self.workProfessionTitleLabel) | |
| 172 | + self.workProfessionTitleLabel.snp.makeConstraints { make in | |
| 173 | + make.centerY.equalTo(self.nameIconImgView.snp.centerY) | |
| 174 | + make.left.equalTo(50) | |
| 175 | + } | |
| 176 | + | |
| 177 | + self.contentView.addSubview(self.realImgView) | |
| 178 | + self.realImgView.snp.makeConstraints { make in | |
| 179 | + make.right.equalToSuperview().offset(-15) | |
| 180 | + make.centerY.equalTo(self.workProfessionTitleLabel.snp.centerY) | |
| 181 | + make.width.equalTo(80) | |
| 182 | + make.height.equalTo(80.0*78/403) | |
| 183 | + make.left.greaterThanOrEqualTo(self.workProfessionTitleLabel.snp.right).offset(5) | |
| 184 | + } | |
| 185 | + self.contentView.addSubview(self.workNameTitleLabel) | |
| 186 | + self.workNameTitleLabel.snp.makeConstraints { make in | |
| 187 | + make.top.equalTo(self.workProfessionTitleLabel.snp.bottom).offset(6) | |
| 188 | + make.left.equalTo(50) | |
| 189 | + make.right.equalToSuperview().offset(-15) | |
| 190 | + } | |
| 191 | + | |
| 192 | + self.contentView.addSubview(self.workPositionTitleLabel) | |
| 193 | + self.workPositionTitleLabel.snp.makeConstraints { make in | |
| 194 | + make.top.equalTo(self.workNameTitleLabel.snp.bottom).offset(5) | |
| 195 | + make.left.equalTo(self.workNameTitleLabel.snp.left) | |
| 196 | + make.right.equalToSuperview().offset(-15) | |
| 197 | + } | |
| 198 | + | |
| 199 | + self.contentView.addSubview(self.workTimeTitleLabel) | |
| 200 | + self.workTimeTitleLabel.snp.makeConstraints { make in | |
| 201 | + make.top.equalTo(self.workPositionTitleLabel.snp.bottom).offset(5) | |
| 202 | + make.left.equalTo(self.workPositionTitleLabel.snp.left) | |
| 203 | + make.right.equalToSuperview().offset(-15) | |
| 204 | + } | |
| 205 | + self.contentView.addSubview(self.jianjieLabel) | |
| 206 | + self.jianjieLabel.snp.makeConstraints { make in | |
| 207 | + make.top.equalTo(self.workTimeTitleLabel.snp.bottom).offset(10) | |
| 208 | + make.left.equalTo(self.workTimeTitleLabel.snp.left) | |
| 209 | + make.right.equalToSuperview().offset(-20) | |
| 210 | + make.height.equalTo(40) | |
| 211 | + } | |
| 212 | + self.contentView.addSubview(self.expandBtn) | |
| 213 | + self.expandBtn.snp.makeConstraints { make in | |
| 214 | + make.top.equalTo(self.jianjieLabel.snp.bottom) | |
| 215 | + make.right.equalTo(self.jianjieLabel.snp.right) | |
| 216 | + make.width.equalTo(60) | |
| 217 | + make.height.equalTo(30) | |
| 218 | + } | |
| 219 | + | |
| 220 | + let lines = jianjieLabel.getRealLabelTextLines() | |
| 221 | + if lines <= 2{ | |
| 222 | + self.expandBtn.isHidden = true | |
| 223 | + }else{ | |
| 224 | + self.expandBtn.isHidden = false | |
| 225 | + } | |
| 226 | + | |
| 227 | + self.contentView.addSubview(self.imagesTotalView) | |
| 228 | + self.imagesTotalView.snp.makeConstraints { make in | |
| 229 | + make.left.equalToSuperview() | |
| 230 | + make.bottom.equalToSuperview() | |
| 231 | + make.width.equalToSuperview() | |
| 232 | + make.top.equalTo(self.jianjieLabel.snp.bottom).offset(10) | |
| 233 | + } | |
| 234 | + self.contentView.addSubview(self.dingweiImgView) | |
| 235 | + self.dingweiImgView.snp.makeConstraints { make in | |
| 236 | + make.left.equalTo(self.workNameTitleLabel.snp.left) | |
| 237 | + make.bottom.equalToSuperview().offset(-15) | |
| 238 | + make.width.equalTo(10) | |
| 239 | + make.height.equalTo(10) | |
| 240 | + } | |
| 241 | + self.contentView.addSubview(self.workDingWeiTitleLabel) | |
| 242 | + self.workDingWeiTitleLabel.snp.makeConstraints { make in | |
| 243 | + make.left.equalTo(self.dingweiImgView.snp.right).offset(3) | |
| 244 | + make.centerY.equalTo(self.dingweiImgView.snp.centerY) | |
| 245 | + } | |
| 246 | + | |
| 247 | + | |
| 248 | + } | |
| 249 | + | |
| 250 | + func setupNewUI(model:CNLiveVitaeWorksModel){ | |
| 251 | + self.realImgView.isHidden = false | |
| 252 | + self.imagesTotalView.subviews.forEach { view in | |
| 253 | + if view.tag >= 1000{ | |
| 254 | + view.removeFromSuperview() | |
| 255 | + } | |
| 256 | + } | |
| 257 | + self.workProfessionTitleLabel.text = model.profession.count > 0 ? model.profession : "行业" | |
| 258 | + self.workNameTitleLabel.text = model.position.count > 0 ? model.position : "职位" | |
| 259 | + if model.companyName.count > 0{ | |
| 260 | + self.workPositionTitleLabel.text = model.companyName | |
| 261 | + self.workPositionTitleLabel.isHidden = false | |
| 262 | + }else{ | |
| 263 | + self.workPositionTitleLabel.isHidden = true | |
| 264 | + self.workTimeTitleLabel.snp.remakeConstraints { make in | |
| 265 | + make.top.equalTo(self.workNameTitleLabel.snp.bottom).offset(5) | |
| 266 | + make.left.equalTo(self.workPositionTitleLabel.snp.left) | |
| 267 | + make.right.equalToSuperview().offset(-15) | |
| 268 | + } | |
| 269 | + } | |
| 270 | + | |
| 271 | + let startDateString = convertTimestampStringToDateString(timestampString: model.startWorkingDate) | |
| 272 | + let endDateString = convertTimestampStringToDateString(timestampString: model.endWorkingDate) | |
| 273 | + if endDateString == nil || endDateString?.count == 0{ | |
| 274 | + if startDateString == nil || startDateString?.count == 0{ | |
| 275 | + self.workTimeTitleLabel.text = "" | |
| 276 | + }else{ | |
| 277 | + self.workTimeTitleLabel.text = startDateString! | |
| 278 | + } | |
| 279 | + }else{ | |
| 280 | + if startDateString == nil || startDateString?.count == 0{ | |
| 281 | + self.workTimeTitleLabel.text = "" | |
| 282 | + }else{ | |
| 283 | + self.workTimeTitleLabel.text = startDateString!+"~"+endDateString! | |
| 284 | + } | |
| 285 | + } | |
| 286 | + | |
| 287 | + self.jianjieLabel.text = model.jobDuties//"描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述" | |
| 288 | + self.jianjieLabel.sizeToFit() | |
| 289 | + let lines = jianjieLabel.getRealLabelTextLines() | |
| 290 | + let height = jianjieLabel.qmui_lineHeight | |
| 291 | + if lines <= 2{ | |
| 292 | + self.expandBtn.isHidden = true | |
| 293 | + }else{ | |
| 294 | + self.expandBtn.isHidden = false | |
| 295 | + } | |
| 296 | + | |
| 297 | + var jienjieH:CGFloat = 0 | |
| 298 | + if model.isExpand{ | |
| 299 | + //展开状态 | |
| 300 | + jienjieH = height*CGFloat(lines) | |
| 301 | + self.jianjieLabel.numberOfLines = 0 | |
| 302 | + }else{ | |
| 303 | + //收起状态 | |
| 304 | + if lines <= 2{ | |
| 305 | + //小于2行,按实际行数 | |
| 306 | + jienjieH = CGFloat(lines)*height | |
| 307 | + self.jianjieLabel.numberOfLines = 1 | |
| 308 | + }else{ | |
| 309 | + //大于2行, 显示2行 | |
| 310 | + jienjieH = 2*height+2 | |
| 311 | + self.jianjieLabel.numberOfLines = 2 | |
| 312 | + } | |
| 313 | + } | |
| 314 | + self.expandBtn.isSelected = model.isExpand | |
| 315 | + self.jianjieLabel.snp.remakeConstraints { make in | |
| 316 | + make.top.equalTo(self.workTimeTitleLabel.snp.bottom).offset(10) | |
| 317 | + make.left.equalTo(self.workTimeTitleLabel.snp.left) | |
| 318 | + make.right.equalToSuperview().offset(-20) | |
| 319 | + make.height.equalTo(jienjieH) | |
| 320 | + } | |
| 321 | + self.expandBtn.top = self.jianjieLabel.top+jienjieH | |
| 322 | + | |
| 323 | + let imgArr = model.imgs.components(separatedBy: ",") | |
| 324 | + if imgArr.count > 0{ | |
| 325 | + for i in 0..<imgArr.count { | |
| 326 | + let imgGap:Float = 10 | |
| 327 | + let imgLeftGap:Float = 50 | |
| 328 | + let lie = i%3 | |
| 329 | + let hang = i/3 | |
| 330 | + let imgWH:Float = Float((Float(KSreenWidth)-30-40-imgLeftGap)/3.0) | |
| 331 | + let imgView = UIImageView(frame: CGRect(x: CGFloat(imgLeftGap+(imgGap+imgWH)*Float(lie)), y: CGFloat((imgWH+10)*Float(hang)), width: CGFloat(imgWH), height: CGFloat(imgWH)))// let imgView = UIImageView(frame: CGRect(x: CGFloat(imgLeftGap+(imgGap+imgWH)*Float(lie)), y: CGFloat((imgWH+10)*Float(hang))+self.jianjieLabel.bottom+10, width: CGFloat(imgWH), height: CGFloat(imgWH))) | |
| 332 | + imgView.isUserInteractionEnabled = true | |
| 333 | + imgView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imgViewTapAciton))) | |
| 334 | + imgView.tag = 1000+i | |
| 335 | + imgView.contentMode = .scaleAspectFit | |
| 336 | + let imgUrl = imgArr[i] | |
| 337 | + imgView.clipsToBounds = true | |
| 338 | + imgView.layer.cornerRadius = 5 | |
| 339 | + self.imagesTotalView.addSubview(imgView) | |
| 340 | + | |
| 341 | + if imgUrl.contains("vitae_video_"){ | |
| 342 | + //是视频 | |
| 343 | + let thumbailImgUrl = "http://wjjtest.ys2.cnliveimg.com/802/mateCode/img/vitae_photo_0/2024/08/02/3977195366.jpg" | |
| 344 | + let vm = HeroBrowserVideoViewModule(thumbailImgUrl: thumbailImgUrl, videoUrl: imgUrl, provider: HeroNetworkImageProvider.shared, autoPlay: true) | |
| 345 | + self.images.append(vm) | |
| 346 | + imgView.kf.setImage(with: URL(string: thumbailImgUrl),placeholder: UIImage(color: UIColor.lightGray, size: imgView.size)) | |
| 347 | + | |
| 348 | + let playBtn = UIButton(type: .custom) | |
| 349 | + playBtn.frame = imgView.bounds | |
| 350 | + playBtn.setImage(UIImage(named: "short_video_play"), for: .normal) | |
| 351 | + playBtn.addTarget(self, action: #selector(playBtnAction(btn:)), for: .touchUpInside) | |
| 352 | + playBtn.clipsToBounds = true | |
| 353 | + playBtn.layer.cornerRadius = 5 | |
| 354 | + playBtn.tag = 1000+i | |
| 355 | + imgView.addSubview(playBtn) | |
| 356 | + }else if imgUrl.contains("vitae_photo_"){ | |
| 357 | + //是图片 | |
| 358 | + self.images.append(HeroBrowserNetworkImageViewModule(thumbailImgUrl: nil, originImgUrl: imgUrl)) | |
| 359 | + imgView.kf.setImage(with: URL(string: imgUrl)) | |
| 360 | + }else{ | |
| 361 | + //默认图片 | |
| 362 | + self.images.append(HeroBrowserNetworkImageViewModule(thumbailImgUrl: nil, originImgUrl: imgUrl)) | |
| 363 | + imgView.kf.setImage(with: URL(string: imgUrl)) | |
| 364 | + } | |
| 365 | + } | |
| 366 | + } | |
| 367 | + | |
| 368 | + let cityStr = model.city | |
| 369 | + if cityStr.count == 0 || cityStr == "请选择"{ | |
| 370 | + self.workDingWeiTitleLabel.isHidden = true | |
| 371 | + self.dingweiImgView.isHidden = true | |
| 372 | + self.imagesTotalView.snp.remakeConstraints { make in | |
| 373 | + make.left.equalToSuperview() | |
| 374 | + make.bottom.equalToSuperview() | |
| 375 | + make.width.equalToSuperview() | |
| 376 | + make.top.equalTo(self.jianjieLabel.snp.bottom).offset(10) | |
| 377 | + } | |
| 378 | + | |
| 379 | + }else{ | |
| 380 | + self.dingweiImgView.isHidden = false | |
| 381 | + self.workDingWeiTitleLabel.isHidden = false | |
| 382 | + self.workDingWeiTitleLabel.text = model.city | |
| 383 | + self.imagesTotalView.snp.remakeConstraints { make in | |
| 384 | + make.left.equalToSuperview() | |
| 385 | + make.bottom.equalTo(self.dingweiImgView.snp.top).offset(-5) | |
| 386 | + make.width.equalToSuperview() | |
| 387 | + make.top.equalTo(self.jianjieLabel.snp.bottom).offset(10) | |
| 388 | + } | |
| 389 | + } | |
| 390 | + self.nameIconImgView.image = UIImage(named: "mine_jianli_preview_work") | |
| 391 | + | |
| 392 | + } | |
| 393 | + func setupAwardNewUI(model:CNLiveVitaeAwardsModel){ | |
| 394 | + self.realImgView.isHidden = true | |
| 395 | + self.imagesTotalView.subviews.forEach { view in | |
| 396 | + if view.tag >= 1000{ | |
| 397 | + view.removeFromSuperview() | |
| 398 | + } | |
| 399 | + } | |
| 400 | + | |
| 401 | + self.workProfessionTitleLabel.text = model.title.count > 0 ? model.title : "获奖名称" | |
| 402 | + self.workNameTitleLabel.isHidden = true | |
| 403 | + if model.company.count > 0{ | |
| 404 | + self.workPositionTitleLabel.text = model.company | |
| 405 | + self.workPositionTitleLabel.isHidden = false | |
| 406 | + }else{ | |
| 407 | + self.workPositionTitleLabel.isHidden = true | |
| 408 | + self.workTimeTitleLabel.snp.remakeConstraints { make in | |
| 409 | + make.top.equalTo(self.workNameTitleLabel.snp.bottom).offset(5) | |
| 410 | + make.left.equalTo(self.workPositionTitleLabel.snp.left) | |
| 411 | + make.right.equalToSuperview().offset(-15) | |
| 412 | + } | |
| 413 | + } | |
| 414 | + | |
| 415 | + let startDateString = convertTimestampStringToDateString(timestampString: model.time) | |
| 416 | + if startDateString == nil || startDateString?.count == 0{ | |
| 417 | + self.workTimeTitleLabel.text = "" | |
| 418 | + self.workTimeTitleLabel.isHidden = true | |
| 419 | + }else{ | |
| 420 | + self.workTimeTitleLabel.text = startDateString! | |
| 421 | + self.workTimeTitleLabel.isHidden = false | |
| 422 | + | |
| 423 | + } | |
| 424 | + | |
| 425 | + self.jianjieLabel.text = model.description//"描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述" | |
| 426 | + self.jianjieLabel.sizeToFit() | |
| 427 | + let lines = jianjieLabel.getRealLabelTextLines() | |
| 428 | + let height = jianjieLabel.qmui_lineHeight | |
| 429 | + if lines <= 2{ | |
| 430 | + self.expandBtn.isHidden = true | |
| 431 | + }else{ | |
| 432 | + self.expandBtn.isHidden = false | |
| 433 | + } | |
| 434 | + | |
| 435 | + var jienjieH:CGFloat = 0 | |
| 436 | + if model.isExpand{ | |
| 437 | + //展开状态 | |
| 438 | + jienjieH = height*CGFloat(lines) | |
| 439 | + self.jianjieLabel.numberOfLines = 0 | |
| 440 | + }else{ | |
| 441 | + //收起状态 | |
| 442 | + if lines <= 2{ | |
| 443 | + //小于2行,按实际行数 | |
| 444 | + jienjieH = CGFloat(lines)*height | |
| 445 | + self.jianjieLabel.numberOfLines = 1 | |
| 446 | + }else{ | |
| 447 | + //大于2行, 显示2行 | |
| 448 | + jienjieH = 2*height+2 | |
| 449 | + self.jianjieLabel.numberOfLines = 2 | |
| 450 | + } | |
| 451 | + } | |
| 452 | + self.expandBtn.isSelected = model.isExpand | |
| 453 | + self.jianjieLabel.snp.remakeConstraints { make in | |
| 454 | + make.top.equalTo(self.workTimeTitleLabel.snp.bottom).offset(10) | |
| 455 | + make.left.equalTo(self.workTimeTitleLabel.snp.left) | |
| 456 | + make.right.equalToSuperview().offset(-20) | |
| 457 | + make.height.equalTo(jienjieH) | |
| 458 | + } | |
| 459 | + | |
| 460 | + self.expandBtn.top = self.jianjieLabel.top+jienjieH | |
| 461 | + | |
| 462 | + let imgArr = model.imgs.components(separatedBy: ",") | |
| 463 | + if imgArr.count > 0{ | |
| 464 | + for i in 0..<imgArr.count { | |
| 465 | + let imgGap:Float = 10 | |
| 466 | + let imgLeftGap:Float = 50 | |
| 467 | + let lie = i%3 | |
| 468 | + let hang = i/3 | |
| 469 | + let imgWH:Float = Float((Float(KSreenWidth)-30-40-imgLeftGap)/3.0) | |
| 470 | + let imgView = UIImageView(frame: CGRect(x: CGFloat(imgLeftGap+(imgGap+imgWH)*Float(lie)), y: CGFloat((imgWH+10)*Float(hang)), width: CGFloat(imgWH), height: CGFloat(imgWH)))// let imgView = UIImageView(frame: CGRect(x: CGFloat(imgLeftGap+(imgGap+imgWH)*Float(lie)), y: CGFloat((imgWH+10)*Float(hang))+self.jianjieLabel.bottom+10, width: CGFloat(imgWH), height: CGFloat(imgWH))) | |
| 471 | + imgView.isUserInteractionEnabled = true | |
| 472 | + imgView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(imgViewTapAciton))) | |
| 473 | + imgView.tag = 1000+i | |
| 474 | + imgView.contentMode = .scaleAspectFit | |
| 475 | + let imgUrl = imgArr[i] | |
| 476 | + imgView.clipsToBounds = true | |
| 477 | + imgView.layer.cornerRadius = 5 | |
| 478 | + self.imagesTotalView.addSubview(imgView) | |
| 479 | + | |
| 480 | + if imgUrl.contains("vitae_video_"){ | |
| 481 | + //是视频 | |
| 482 | + let thumbailImgUrl = "http://wjjtest.ys2.cnliveimg.com/802/mateCode/img/vitae_photo_0/2024/08/02/3977195366.jpg" | |
| 483 | + let vm = HeroBrowserVideoViewModule(thumbailImgUrl: thumbailImgUrl, videoUrl: imgUrl, provider: HeroNetworkImageProvider.shared, autoPlay: true) | |
| 484 | + self.images.append(vm) | |
| 485 | + imgView.kf.setImage(with: URL(string: thumbailImgUrl),placeholder: UIImage(color: UIColor.lightGray, size: imgView.size)) | |
| 486 | + | |
| 487 | + let playBtn = UIButton(type: .custom) | |
| 488 | + playBtn.frame = imgView.bounds | |
| 489 | + playBtn.setImage(UIImage(named: "short_video_play"), for: .normal) | |
| 490 | + playBtn.addTarget(self, action: #selector(playBtnAction(btn:)), for: .touchUpInside) | |
| 491 | + playBtn.clipsToBounds = true | |
| 492 | + playBtn.layer.cornerRadius = 5 | |
| 493 | + playBtn.tag = 1000+i | |
| 494 | + imgView.addSubview(playBtn) | |
| 495 | + }else if imgUrl.contains("vitae_photo_"){ | |
| 496 | + //是图片 | |
| 497 | + self.images.append(HeroBrowserNetworkImageViewModule(thumbailImgUrl: nil, originImgUrl: imgUrl)) | |
| 498 | + imgView.kf.setImage(with: URL(string: imgUrl)) | |
| 499 | + }else{ | |
| 500 | + //默认图片 | |
| 501 | + self.images.append(HeroBrowserNetworkImageViewModule(thumbailImgUrl: nil, originImgUrl: imgUrl)) | |
| 502 | + imgView.kf.setImage(with: URL(string: imgUrl)) | |
| 503 | + } | |
| 504 | + } | |
| 505 | + } | |
| 506 | + | |
| 507 | + self.workDingWeiTitleLabel.isHidden = true | |
| 508 | + self.dingweiImgView.isHidden = true | |
| 509 | + self.nameIconImgView.image = UIImage(named: "mine_jianli_preview_award") | |
| 510 | + self.imagesTotalView.snp.remakeConstraints { make in | |
| 511 | + make.left.equalToSuperview() | |
| 512 | + make.bottom.equalToSuperview() | |
| 513 | + make.width.equalToSuperview() | |
| 514 | + make.top.equalTo(self.jianjieLabel.snp.bottom).offset(10) | |
| 515 | + } | |
| 516 | + } | |
| 517 | + | |
| 518 | + func convertTimestampStringToDateString(timestampString: String) -> String? { | |
| 519 | + // 首先,将毫秒时间戳字符串转换为TimeInterval(秒) | |
| 520 | + guard let timestampMilliseconds = Double(timestampString) else { | |
| 521 | + return nil | |
| 522 | + } | |
| 523 | + let timestampSeconds = timestampMilliseconds / 1000.0 | |
| 524 | + // 然后,将TimeInterval转换为Date对象 | |
| 525 | + let date = Date(timeIntervalSince1970: timestampSeconds) | |
| 526 | + // 接着,设置DateFormatter的格式 | |
| 527 | + let formatter = DateFormatter() | |
| 528 | + formatter.dateFormat = "yyyy.MM.dd" // 设置为你想要的日期格式 | |
| 529 | + // 最后,使用DateFormatter将Date对象格式化为字符串 | |
| 530 | + return formatter.string(from: date) | |
| 531 | + } | |
| 532 | + | |
| 533 | + // MARK: - Action | |
| 534 | + @objc func expandBtnAction(button:UIButton){ | |
| 535 | + button.isSelected = !button.isSelected | |
| 536 | + let lines = jianjieLabel.getRealLabelTextLines() | |
| 537 | + let height = jianjieLabel.qmui_lineHeight | |
| 538 | + | |
| 539 | + var jienjieH:CGFloat = 0 | |
| 540 | + if button.isSelected{ | |
| 541 | + //文本收起状态,点击展开 | |
| 542 | + jienjieH = CGFloat(lines)*height | |
| 543 | + }else{ | |
| 544 | + //文本展开状态,点击收起 | |
| 545 | + jienjieH = 2*height | |
| 546 | + } | |
| 547 | + self.jianjieLabel.snp.remakeConstraints { make in | |
| 548 | + make.top.equalTo(self.workTimeTitleLabel.snp.bottom).offset(10) | |
| 549 | + make.left.equalTo(self.workTimeTitleLabel.snp.left) | |
| 550 | + make.right.equalToSuperview().offset(-20) | |
| 551 | + make.height.equalTo(jienjieH) | |
| 552 | + } | |
| 553 | + | |
| 554 | + self.vitaePreviewWorkCellChangedBlock!(button.tag, jienjieH, button.isSelected) | |
| 555 | + | |
| 556 | + self.expandBtn.top = self.jianjieLabel.top + jienjieH | |
| 557 | + | |
| 558 | + } | |
| 559 | + | |
| 560 | + @objc func playBtnAction(btn:UIButton){ | |
| 561 | + let index = btn.tag-1000 | |
| 562 | + self.vitaeWorkPreviewVideoPhotoBlock?(self.images, index) | |
| 563 | + } | |
| 564 | + @objc func imgViewTapAciton(ges: UITapGestureRecognizer){ | |
| 565 | + let imgView = ges.view as! UIImageView | |
| 566 | + let index = imgView.tag-1000 | |
| 567 | + | |
| 568 | + self.vitaeWorkPreviewVideoPhotoBlock?(self.images, index) | |
| 569 | + } | |
| 570 | + | |
| 571 | +} | ... | ... |
metaCode/Classes/Main/Model/Vitae/CNLiveViateWorkModelLayout.swift
| ... | ... | @@ -63,7 +63,7 @@ class CNLiveViateWorkModelLayout:NSObject{ |
| 63 | 63 | _workModel?.cellH = Float(123-25)+companyH+descH+Float(hang*imgWH)+cityH+55 |
| 64 | 64 | }else{//预览工作记录 |
| 65 | 65 | imgWH = Float((Float(KSreenWidth)-30-40-50)/3.0+10) |
| 66 | - _workModel?.cellH = Float(162)+descH+Float(hang*imgWH)+cityH+55 | |
| 66 | + _workModel?.cellH = Float(162-58-25)+companyH+descH+Float(hang*imgWH)+cityH//+55 | |
| 67 | 67 | } |
| 68 | 68 | } |
| 69 | 69 | func getCellHModel()->CNLiveVitaeWorksModel{ |
| ... | ... | @@ -121,7 +121,7 @@ class CNLiveViateAwardModelLayout:NSObject{ |
| 121 | 121 | _awardModel?.cellH = Float(123-25)+companyH+descH+Float(hang*imgWH)+55 |
| 122 | 122 | }else{//预览获奖 |
| 123 | 123 | imgWH = Float((Float(KSreenWidth)-30-40-50)/3.0+10) |
| 124 | - _awardModel?.cellH = Float(162)+descH+Float(hang*imgWH)+55 | |
| 124 | + _awardModel?.cellH = Float(162-58-25)+companyH+descH+Float(hang*imgWH)//+55 | |
| 125 | 125 | } |
| 126 | 126 | } |
| 127 | 127 | func getCellHModel()->CNLiveVitaeAwardsModel{ | ... | ... |