-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #13 from Diary-ECHOG/Feature/MyPageView
[FEAT] 마이페이지 화면 - ECH-46
- Loading branch information
Showing
8 changed files
with
484 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
// | ||
// MyPage.swift | ||
// echog | ||
// | ||
// Created by minsong kim on 12/26/24. | ||
// | ||
|
||
import UIKit | ||
|
||
enum MyPageList: CaseIterable { | ||
case myVoteList | ||
case reportList | ||
|
||
var title: String { | ||
switch self { | ||
case .myVoteList: | ||
"내 투표 리스트" | ||
case .reportList: | ||
"신고 리스트" | ||
} | ||
} | ||
} | ||
|
||
enum MyPageSignOut: CaseIterable { | ||
case logOut | ||
case signOut | ||
|
||
var title: String { | ||
switch self { | ||
case .logOut: | ||
"로그아웃" | ||
case .signOut: | ||
"회원탈퇴" | ||
} | ||
} | ||
|
||
var color: UIColor { | ||
switch self { | ||
case .logOut: | ||
.black | ||
case .signOut: | ||
.red | ||
} | ||
} | ||
} | ||
|
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
// | ||
// VoteCell.swift | ||
// echog | ||
// | ||
// Created by minsong kim on 1/8/25. | ||
// | ||
|
||
import UIKit | ||
import SnapKit | ||
|
||
class VoteCell: UITableViewCell { | ||
static let identifier = "VoteCell" | ||
|
||
private let titleLabel: UILabel = { | ||
let label = UILabel() | ||
label.font = .semiboldTitle15 | ||
|
||
return label | ||
}() | ||
|
||
private let contentsLabel: UILabel = { | ||
let label = UILabel() | ||
label.font = .mediumTitle14 | ||
label.textColor = .grayscale70 | ||
|
||
return label | ||
}() | ||
|
||
private let dateLabel: UILabel = { | ||
let label = UILabel() | ||
label.font = .regularTitle13 | ||
label.textColor = .grayscale50Caption | ||
|
||
return label | ||
}() | ||
|
||
private let dateFormatter: DateFormatter = { | ||
let dateFormatter = DateFormatter() | ||
dateFormatter.locale = Locale(identifier: "ko_KR") | ||
dateFormatter.dateFormat = "MM월 dd일 E요일" | ||
|
||
return dateFormatter | ||
}() | ||
|
||
private let voteNumberLabel: UILabel = { | ||
let label = UILabel() | ||
label.font = .regularTitle13 | ||
label.textColor = .grayscale50Caption | ||
label.textAlignment = .right | ||
|
||
return label | ||
}() | ||
|
||
private func configureLabels() { | ||
self.addSubview(titleLabel) | ||
self.addSubview(contentsLabel) | ||
self.addSubview(dateLabel) | ||
self.addSubview(voteNumberLabel) | ||
|
||
titleLabel.snp.makeConstraints { make in | ||
make.leading.trailing.equalToSuperview().inset(16) | ||
make.top.equalToSuperview().inset(16) | ||
make.height.equalTo(22) | ||
} | ||
|
||
contentsLabel.snp.makeConstraints { make in | ||
make.top.equalTo(titleLabel.snp.bottom) | ||
make.leading.trailing.equalTo(titleLabel) | ||
make.height.equalTo(20) | ||
} | ||
|
||
dateLabel.snp.makeConstraints { make in | ||
make.leading.trailing.equalTo(titleLabel) | ||
make.bottom.equalToSuperview().inset(16) | ||
} | ||
|
||
voteNumberLabel.snp.makeConstraints { make in | ||
make.leading.trailing.equalTo(titleLabel) | ||
make.bottom.equalTo(dateLabel) | ||
} | ||
} | ||
|
||
func configureCells(title: String, contents: String, date: Date, voteNumber: Int) { | ||
titleLabel.text = title | ||
contentsLabel.text = contents | ||
dateLabel.text = dateFormatter.string(from: date) | ||
voteNumberLabel.text = "\(voteNumber)명 투표" | ||
|
||
configureLabels() | ||
} | ||
} |
68 changes: 68 additions & 0 deletions
68
echog/echog/Design System/Compoment/UnderlineSegmentedControl.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
// | ||
// UnderlineSegmentedControl.swift | ||
// echog | ||
// | ||
// Created by minsong kim on 1/8/25. | ||
// | ||
|
||
import UIKit | ||
|
||
class UnderlineSegmentedControl: UISegmentedControl { | ||
private lazy var underlineBackView: UIView = { | ||
let width = self.bounds.width | ||
let height = 2.0 | ||
let xPosition = CGFloat(self.selectedSegmentIndex * Int(width)) | ||
let yPosition = self.bounds.size.height - 1.0 | ||
let frame = CGRect(x: xPosition, y: yPosition, width: width, height: height) | ||
let view = UIView(frame: frame) | ||
|
||
view.backgroundColor = .grayscale40Disabled | ||
self.addSubview(view) | ||
|
||
return view | ||
}() | ||
|
||
private lazy var underlineView: UIView = { | ||
let width = self.bounds.width / CGFloat(self.numberOfSegments) | ||
let height = 2.0 | ||
let xPosition = CGFloat(self.selectedSegmentIndex * Int(width)) | ||
let yPosition = self.bounds.size.height - 1.0 | ||
let frame = CGRect(x: xPosition, y: yPosition, width: width, height: height) | ||
let view = UIView(frame: frame) | ||
|
||
view.backgroundColor = .black | ||
self.addSubview(view) | ||
|
||
return view | ||
}() | ||
|
||
override init(items: [Any]?) { | ||
super.init(items: items) | ||
|
||
self.removeDivider() | ||
} | ||
|
||
required init?(coder: NSCoder) { | ||
fatalError("init(coder:) has not been implemented") | ||
} | ||
|
||
override func layoutSubviews() { | ||
super.layoutSubviews() | ||
|
||
let underlineFinalXPosition = (self.bounds.width / CGFloat(self.numberOfSegments)) * CGFloat(self.selectedSegmentIndex) | ||
|
||
UIView.animate(withDuration: 0.1) { | ||
self.underlineView.frame.origin.x = underlineFinalXPosition | ||
} | ||
} | ||
|
||
private func removeDivider() { | ||
let image = UIImage() | ||
|
||
self.setBackgroundImage(image, for: .normal, barMetrics: .default) | ||
self.setBackgroundImage(image, for: .selected, barMetrics: .default) | ||
self.setBackgroundImage(image, for: .highlighted, barMetrics: .default) | ||
|
||
self.setDividerImage(image, forLeftSegmentState: .selected, rightSegmentState: .normal, barMetrics: .default) | ||
} | ||
} |
Oops, something went wrong.