Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 20 additions & 4 deletions DE/DE/Sources/Core/CommonUI/Cells/ReviewCollectionViewCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ public class ReviewCollectionViewCell: UICollectionViewCell {

public static let identifier = "ReviewCollectionViewCell"
var isExpanded = false
private var toggleBottomConstraint: Constraint?
private var reviewBottomConstraint: Constraint?
public var onToggle: (() -> Void)?

public lazy var nickname = UILabel().then {
Expand All @@ -30,6 +32,7 @@ public class ReviewCollectionViewCell: UICollectionViewCell {
$0.setTitle("더보기", for: .normal)
$0.titleLabel?.font = UIFont.pretendard(.medium, size: 13)
$0.setTitleColor(AppColor.gray70, for: .normal)
$0.contentHorizontalAlignment = .left
$0.isHidden = true
}

Expand Down Expand Up @@ -62,7 +65,7 @@ public class ReviewCollectionViewCell: UICollectionViewCell {
private func constraints() {
nickname.snp.makeConstraints {
$0.top.equalToSuperview().offset(12)
$0.leading.equalToSuperview().offset(16)
$0.leading.equalToSuperview().offset(17)
}

score.snp.makeConstraints {
Expand All @@ -71,18 +74,21 @@ public class ReviewCollectionViewCell: UICollectionViewCell {
}

review.snp.makeConstraints {
$0.horizontalEdges.equalToSuperview().inset(16)
$0.horizontalEdges.equalToSuperview().inset(17)
$0.top.equalTo(nickname.snp.bottom).offset(7)
self.reviewBottomConstraint = $0.bottom.equalToSuperview().offset(-12).constraint
}

date.snp.makeConstraints {
$0.centerY.equalTo(score)
$0.trailing.equalToSuperview().offset(-16)
$0.trailing.equalToSuperview().offset(-17)
}

toggleButton.snp.makeConstraints {
$0.top.equalTo(review.snp.bottom).offset(2)
$0.leading.equalTo(review.snp.leading)
$0.bottom.equalToSuperview().offset(-10)
self.toggleBottomConstraint = $0.bottom.equalToSuperview().offset(-12).constraint
}
}

Expand All @@ -99,7 +105,17 @@ public class ReviewCollectionViewCell: UICollectionViewCell {
self.isExpanded = isExpanded
review.numberOfLines = isExpanded ? 0 : 2
toggleButton.setTitle(isExpanded ? "접기" : "더보기", for: .normal)
toggleButton.isHidden = !isReviewTextTruncated()
let shouldShowToggle = isReviewTextTruncated()
toggleButton.isHidden = !shouldShowToggle

// 리뷰내 2줄 초과인지 아닌지에 따른 제약 활성화/비활성화
if shouldShowToggle {
toggleBottomConstraint?.activate()
reviewBottomConstraint?.deactivate()
} else {
toggleBottomConstraint?.deactivate()
reviewBottomConstraint?.activate()
}
}

private func isReviewTextTruncated() -> Bool {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,18 +201,27 @@ extension EntireReviewViewController: UICollectionViewDataSource, UICollectionVi
let text = reviewResults[indexPath.item].contents
let isExpanded = expandedCells[indexPath.item]

// 텍스트 높이 계산 + 패딩
let labelFont = UIFont.pretendard(.medium, size: 14)
let lineSpacing = labelFont.pointSize * 0.3
let labelWidth = width - 30
//let estimatedHeight = text.heightWithConstrainedWidth(width: labelWidth, font: labelFont)
let numberOfLines = text.numberOfLines(width: labelWidth, font: labelFont, lineSpacing: lineSpacing)
let lineHeight = labelFont.lineHeight + lineSpacing

let cellHeight = isExpanded
? CGFloat(numberOfLines - 2) * lineHeight + 104
: 104
return CGSize(width: width, height: cellHeight)
let numberOfLines = text.numberOfLines(width: labelWidth, font: labelFont, lineSpacing: lineSpacing)
let isTruncated = numberOfLines > 2

let baseHeight: CGFloat = 98
let toggleButtonExtraHeight: CGFloat = 13 + 12 // spacing + button + bottom inset

let height: CGFloat
if isExpanded {
// 전체 줄 다 보여줄 때
height = CGFloat(numberOfLines) * lineHeight + (baseHeight - (2 * lineHeight)) + toggleButtonExtraHeight
} else {
// 접힌 상태. 줄 수가 2를 초과하면 toggleButton을 위한 여유 공간 확보
height = baseHeight + (isTruncated ? toggleButtonExtraHeight : 0)
}

return CGSize(width: width, height: height)
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase
reviewView.moreBtn.isHidden = true
reviewView.reviewCollectionView.isHidden = true
reviewView.reviewCollectionView.snp.updateConstraints {
$0.height.equalTo(0) // 높이를 0으로 설정
$0.height.equalTo(0)
}
reviewView.scoreLabel.isHidden = true
reviewView.noReviewLabel.isHidden = false
Expand All @@ -322,6 +322,10 @@ class WineDetailViewController: UIViewController, UIScrollViewDelegate, Firebase
reviewView.reviewCollectionView.isHidden = false
reviewView.scoreLabel.isHidden = false
reviewView.noReviewLabel.isHidden = true
reviewView.reviewCollectionView.snp.updateConstraints {
/// 하나의 리뷰를 100 높이로 기본 세팅 -> 무조건 332 높이 no : 추후 반응형으로 바꿔주긴 해야함
$0.height.equalTo(32 + reviewData.count * 100)
}
}
}

Expand Down Expand Up @@ -506,17 +510,26 @@ extension WineDetailViewController: UICollectionViewDataSource, UICollectionView
let text = reviewData[indexPath.item].contents
let isExpanded = expandedCells[indexPath.item]

// 텍스트 높이 계산 + 패딩
let labelFont = UIFont.pretendard(.medium, size: 14)
let lineSpacing = labelFont.pointSize * 0.3
let labelWidth = width - 30
//let estimatedHeight = text.heightWithConstrainedWidth(width: labelWidth, font: labelFont)
let numberOfLines = text.numberOfLines(width: labelWidth, font: labelFont, lineSpacing: lineSpacing)
let lineHeight = labelFont.lineHeight + lineSpacing

let cellHeight = isExpanded
? CGFloat(numberOfLines - 2) * lineHeight + 104
: 104
return CGSize(width: width, height: cellHeight)
let numberOfLines = text.numberOfLines(width: labelWidth, font: labelFont, lineSpacing: lineSpacing)
let isTruncated = numberOfLines > 2

let baseHeight: CGFloat = 98
let toggleButtonExtraHeight: CGFloat = 13 + 12 // spacing + button + bottom inset

let height: CGFloat
if isExpanded {
// 전체 줄 다 보여줄 때
height = CGFloat(numberOfLines) * lineHeight + (baseHeight - (2 * lineHeight)) + toggleButtonExtraHeight
} else {
// 접힌 상태. 줄 수가 2를 초과하면 toggleButton을 위한 여유 공간 확보
height = baseHeight + (isTruncated ? toggleButtonExtraHeight : 0)
}

return CGSize(width: width, height: height)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,7 @@ public class EditReviewViewController: UIViewController, FirebaseTrackable {
} else {
reviewString = rView.reviewBody.text ?? ""
}
let reviewDate = "2026-13-13"
let updateData = networkService.makeUpdateNoteBodyDTO(tastingDate: reviewDate, review: reviewString)
let updateData = networkService.makeUpdateNoteBodyDTO(review: reviewString)
// let updateData = networkService.makeUpdateNoteBodyDTO(review: reviewString)

let tnData = networkService.makeUpdateNoteDTO(noteId: tnManager.noteId, body: updateData)
Expand Down
Loading