Commit 694785a0d91f4891b519fa43b1f029faa80ebafa

Authored by liushiyu
1 parent dc564c43

表情显示问题

metaCode/Classes/Main/VideoPage/Controller/CNLiveShortVideoViewController.swift
@@ -333,7 +333,7 @@ extension CNLiveShortVideoViewController { @@ -333,7 +333,7 @@ extension CNLiveShortVideoViewController {
333 } 333 }
334 func commentActionMethod(viewcell: CNLiveShortVideoListTableViewCell, button: UIButton) { 334 func commentActionMethod(viewcell: CNLiveShortVideoListTableViewCell, button: UIButton) {
335 CNLiveShortVideoCommentListView.showVideoCommentListView(pid: viewcell.homeModel.pid, contentSid: viewcell.homeModel.icon!.id, result: { commentModel in 335 CNLiveShortVideoCommentListView.showVideoCommentListView(pid: viewcell.homeModel.pid, contentSid: viewcell.homeModel.icon!.id, result: { commentModel in
336 - 336 + button.setTitle("\(commentModel)", for: .normal)
337 }) 337 })
338 } 338 }
339 func shareActionMethod(viewcell: CNLiveShortVideoListTableViewCell, button: UIButton) { 339 func shareActionMethod(viewcell: CNLiveShortVideoListTableViewCell, button: UIButton) {
metaCode/Classes/Main/VideoPage/Model/CNLiveShortVideoHomeModel.swift
@@ -26,9 +26,13 @@ class ShortVideoHomeCommentListModel: BaseModel { @@ -26,9 +26,13 @@ class ShortVideoHomeCommentListModel: BaseModel {
26 super.didFinishMapping() 26 super.didFinishMapping()
27 cell_h += comment.cellH 27 cell_h += comment.cellH
28 cell_h += 10 28 cell_h += 10
  29 +
29 for replyModel in replyData.replys { 30 for replyModel in replyData.replys {
30 tableView_h += replyModel.cellH 31 tableView_h += replyModel.cellH
31 } 32 }
  33 + if replyData.total_hd ?? 0 > 2 {
  34 + cell_h += 30
  35 + }
32 cell_h += tableView_h 36 cell_h += tableView_h
33 } 37 }
34 38
@@ -60,23 +64,25 @@ class ShortVideoHomeCommentFListModel: BaseModel { @@ -60,23 +64,25 @@ class ShortVideoHomeCommentFListModel: BaseModel {
60 override func didFinishMapping() { 64 override func didFinishMapping() {
61 super.didFinishMapping() 65 super.didFinishMapping()
62 66
63 - let modifier = CNLiveShortVideoMateCodeLinePositionModifier(font: medium_adapt_font(pointSize: 16), paddingTop: 5, paddingBottom: 5, lineHeightMultiple: 2)  
64 - let comment = CNLiveBusinessTools.replaceQQemoji(withCustomText: self.content ?? "")  
65 - let attributes = NSMutableAttributedString(attributedString: comment)  
66 - attributes.addAttribute(NSAttributedString.Key.foregroundColor, value: HexColor("#333333")!, range: NSRange(location: 0, length: comment.length))  
67 - attributes.addAttribute(NSAttributedString.Key.font, value: medium_adapt_font(pointSize: 16), range: NSRange(location: 0, length: comment.length)) 67 + let modifier = CNLiveShortVideoMateCodeLinePositionModifier(font: medium_adapt_font(pointSize: 16), paddingTop: 0, paddingBottom: 0, lineHeightMultiple: 1.5)
  68 + let comment = NSMutableAttributedString.init(string: self.content ?? "")
  69 +// let comment = CNLiveBusinessTools.replaceQQemoji(withCustomText: self.content ?? "")
  70 + let temp_string = CNLiveShortVideoMateCodeLinePositionModifier.replaceEmotions(textAttributedString: comment, mainString: self.content ?? "")
  71 + let attributes = NSMutableAttributedString(attributedString: temp_string)
  72 + attributes.addAttribute(NSAttributedString.Key.foregroundColor, value: HexColor("#333333")!, range: NSRange(location: 0, length: temp_string.length))
  73 + attributes.addAttribute(NSAttributedString.Key.font, value: medium_adapt_font(pointSize: 16), range: NSRange(location: 0, length: temp_string.length))
68 let textContainer = YYTextContainer(size: CGSize(width: KSreenWidth-80, height: CGFloat(HUGE))) 74 let textContainer = YYTextContainer(size: CGSize(width: KSreenWidth-80, height: CGFloat(HUGE)))
69 textContainer.linePositionModifier = modifier; 75 textContainer.linePositionModifier = modifier;
70 let textLayout = YYTextLayout(container: textContainer, text: attributes) 76 let textLayout = YYTextLayout(container: textContainer, text: attributes)
71 self.textLayout = textLayout 77 self.textLayout = textLayout
72 self.cellH = 70 + (textLayout?.textBoundingRect.size.height ?? 0) 78 self.cellH = 70 + (textLayout?.textBoundingRect.size.height ?? 0)
73 } 79 }
74 -  
75 } 80 }
76 //回复数据 81 //回复数据
77 class ShortVideoHomeCommentRListModel: BaseModel { 82 class ShortVideoHomeCommentRListModel: BaseModel {
78 var total_hd: Int? = 0 //总数 83 var total_hd: Int? = 0 //总数
79 var replys = [ShortVideoHomeCommentRListItemModel]() 84 var replys = [ShortVideoHomeCommentRListItemModel]()
  85 +
80 } 86 }
81 87
82 class ShortVideoHomeCommentRListItemModel: BaseModel { 88 class ShortVideoHomeCommentRListItemModel: BaseModel {
@@ -105,10 +111,12 @@ class ShortVideoHomeCommentRListItemModel: BaseModel { @@ -105,10 +111,12 @@ class ShortVideoHomeCommentRListItemModel: BaseModel {
105 super.didFinishMapping() 111 super.didFinishMapping()
106 112
107 let modifier = CNLiveShortVideoMateCodeLinePositionModifier(font: semibold_adapt_font(pointSize: 14), paddingTop: 0, paddingBottom: 0, lineHeightMultiple: 1.5) 113 let modifier = CNLiveShortVideoMateCodeLinePositionModifier(font: semibold_adapt_font(pointSize: 14), paddingTop: 0, paddingBottom: 0, lineHeightMultiple: 1.5)
108 - let comment = CNLiveBusinessTools.replaceQQemoji(withCustomText: content ?? "")  
109 - let attributes = NSMutableAttributedString(attributedString: comment)  
110 - attributes.addAttribute(NSAttributedString.Key.foregroundColor, value: HexColor("#333333")!, range: NSRange(location: 0, length: comment.length))  
111 - attributes.addAttribute(NSAttributedString.Key.font, value: medium_adapt_font(pointSize: 16), range: NSRange(location: 0, length: comment.length)) 114 + let comment = NSMutableAttributedString.init(string: self.content ?? "")
  115 +// let comment = CNLiveBusinessTools.replaceQQemoji(withCustomText: self.content ?? "")
  116 + let temp_string = CNLiveShortVideoMateCodeLinePositionModifier.replaceEmotions(textAttributedString: comment, mainString: self.content ?? "")
  117 + let attributes = NSMutableAttributedString(attributedString: temp_string)
  118 + attributes.addAttribute(NSAttributedString.Key.foregroundColor, value: HexColor("#333333")!, range: NSRange(location: 0, length: temp_string.length))
  119 + attributes.addAttribute(NSAttributedString.Key.font, value: medium_adapt_font(pointSize: 16), range: NSRange(location: 0, length: temp_string.length))
112 let textContainer = YYTextContainer(size: CGSize(width: KSreenWidth-80-40, height: CGFloat(HUGE))) 120 let textContainer = YYTextContainer(size: CGSize(width: KSreenWidth-80-40, height: CGFloat(HUGE)))
113 textContainer.linePositionModifier = modifier; 121 textContainer.linePositionModifier = modifier;
114 let textLayout = YYTextLayout(container: textContainer, text: attributes) 122 let textLayout = YYTextLayout(container: textContainer, text: attributes)
@@ -169,4 +177,30 @@ class CNLiveShortVideoMateCodeLinePositionModifier: NSObject, YYTextLinePosition @@ -169,4 +177,30 @@ class CNLiveShortVideoMateCodeLinePositionModifier: NSObject, YYTextLinePosition
169 let lineHeight = font.pointSize * lineHeightMultiple 177 let lineHeight = font.pointSize * lineHeightMultiple
170 return paddingTop + paddingBottom + ascent + descent + CGFloat(lineCount - 1) * lineHeight 178 return paddingTop + paddingBottom + ascent + descent + CGFloat(lineCount - 1) * lineHeight
171 } 179 }
  180 +
  181 + static func replaceEmotions(textAttributedString: NSMutableAttributedString, mainString: String) -> NSMutableAttributedString {
  182 + do {
  183 + let regex = try NSRegularExpression(pattern: "\\[(.*?)\\]", options: .caseInsensitive)
  184 +
  185 + let matches = regex.matches(in: textAttributedString.string, options: [], range: NSRange(location: 0, length: textAttributedString.string.count))
  186 + if !matches.isEmpty {
  187 + let emojiArr = CNLiveQQEmotionManager.emotionsForQQ()
  188 + for i in (0..<matches.count).reversed() {
  189 + let result = matches[i]
  190 +
  191 + for j in 0..<emojiArr.count {
  192 + if mainString.substring(with: Range(result.range, in: mainString)!) == emojiArr[j].displayName {
  193 + let attachText = NSAttributedString.yy_attachmentString(withContent: emojiArr[j].image, contentMode: .scaleAspectFit, attachmentSize: CGSize(width: adapt_length(length: 18), height: adapt_length(length: 18)), alignTo: semibold_adapt_font(pointSize: 16), alignment: .center)
  194 +
  195 + textAttributedString.replaceCharacters(in: result.range, with: attachText)
  196 + }
  197 + }
  198 + }
  199 + }
  200 + return textAttributedString
  201 + } catch {
  202 + print("Error creating NSRegularExpression: \(error.localizedDescription)")
  203 + return textAttributedString
  204 + }
  205 + }
172 } 206 }
metaCode/Classes/Main/VideoPage/View/CNLiveShortVideoCommentListView.swift
@@ -121,6 +121,7 @@ class CNLiveShortVideoCommentListView: UIView, UITableViewDelegate, UITableViewD @@ -121,6 +121,7 @@ class CNLiveShortVideoCommentListView: UIView, UITableViewDelegate, UITableViewD
121 self.dataArray.addObjects(from: listArray) 121 self.dataArray.addObjects(from: listArray)
122 self.total_hd = (result as! ShortVideoHomeCommentModel).total_hd ?? 0 122 self.total_hd = (result as! ShortVideoHomeCommentModel).total_hd ?? 0
123 self.titleLabel.text = "\(self.total_hd ?? 0)条评论" 123 self.titleLabel.text = "\(self.total_hd ?? 0)条评论"
  124 + self.resultBlock(self.total_hd ?? 0)
124 if self.tableView.mj_footer != nil { 125 if self.tableView.mj_footer != nil {
125 self.tableView.mj_footer?.endRefreshing() 126 self.tableView.mj_footer?.endRefreshing()
126 } 127 }
@@ -248,13 +249,10 @@ class CNLiveShortVideoCommentListView: UIView, UITableViewDelegate, UITableViewD @@ -248,13 +249,10 @@ class CNLiveShortVideoCommentListView: UIView, UITableViewDelegate, UITableViewD
248 let commentView = CNLiveShortVideoCommentListView.init(frame: CGRect.zero, pid: pid, toSid: contentSid) 249 let commentView = CNLiveShortVideoCommentListView.init(frame: CGRect.zero, pid: pid, toSid: contentSid)
249 commentView.resultBlock = result 250 commentView.resultBlock = result
250 251
251 -// let delegate = UIApplication.shared.delegate as! AppDelegate  
252 -// delegate.window?.addSubview(commentView)  
253 currentViewController()?.view.addSubview(commentView) 252 currentViewController()?.view.addSubview(commentView)
254 commentView.snp.makeConstraints { make in 253 commentView.snp.makeConstraints { make in
255 make.edges.equalToSuperview() 254 make.edges.equalToSuperview()
256 } 255 }
257 -// delegate.window?.layoutIfNeeded()  
258 currentViewController()?.view.layoutIfNeeded() 256 currentViewController()?.view.layoutIfNeeded()
259 commentView.alpha = 0 257 commentView.alpha = 0
260 UIView.animate(withDuration: 0.1) { 258 UIView.animate(withDuration: 0.1) {
@@ -313,10 +311,10 @@ extension CNLiveShortVideoCommentListView { @@ -313,10 +311,10 @@ extension CNLiveShortVideoCommentListView {
313 let model: ShortVideoHomeCommentListModel = dataArray[indexPath.row] as! ShortVideoHomeCommentListModel 311 let model: ShortVideoHomeCommentListModel = dataArray[indexPath.row] as! ShortVideoHomeCommentListModel
314 return model.cell_h 312 return model.cell_h
315 } 313 }
316 - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  
317 - let model: ShortVideoHomeCommentFListModel = ((dataArray[indexPath.row] as! ShortVideoHomeCommentListModel).comment)  
318 - self.resultBlock(model)  
319 - } 314 +// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  315 +// let model: ShortVideoHomeCommentFListModel = ((dataArray[indexPath.row] as! ShortVideoHomeCommentListModel).comment)
  316 +// self.resultBlock(model)
  317 +// }
320 func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? { 318 func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? {
321 return UIImage(named: "short_video_comment_empty") 319 return UIImage(named: "short_video_comment_empty")
322 } 320 }