Skip to content

Commit 7aeacb2

Browse files
committed
[#234] MyPageView 리팩터링
- Xcode markup 주석 작성 - 닉네임을 버튼에서 레이블로 변경
1 parent 343d755 commit 7aeacb2

File tree

2 files changed

+73
-84
lines changed

2 files changed

+73
-84
lines changed

EATSSU/App/Sources/Presentation/MyPage/View/MyPageView/MyPageView.swift

+73-72
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
//
22
// MyPageView.swift
3-
// EatSSU-iOS
3+
// EATSSU
44
//
5-
// Created by 최지우 on 2023/07/25.
5+
// Edited by Jiwoong CHOI on 1/31/25.
66
//
77

88
import UIKit
@@ -12,79 +12,82 @@ import EATSSUDesign
1212
import SnapKit
1313
import Then
1414

15+
/// `MyPageView`
16+
///
17+
/// 사용자 마이페이지 화면의 UI를 담당하는 뷰입니다.
18+
/// - 사용자 프로필 이미지, 닉네임, 계정 정보 등을 표시합니다.
19+
/// - 앱 버전 정보 및 회원 탈퇴 기능을 제공합니다.
20+
///
1521
final class MyPageView: BaseUIView {
1622
// MARK: - UI Components
1723

18-
/// MyPageView 전체 스크롤뷰
19-
private let scrollView = UIScrollView()
24+
/// **마이페이지 전체를 감싸는 스크롤 뷰**
25+
let scrollView = UIScrollView()
2026

21-
/// 스크롤뷰 안에 들어갈 콘텐츠 뷰
22-
private let contentView = UIView()
27+
/// **스크롤 뷰 내부 콘텐츠 뷰**
28+
let contentView = UIView()
2329

24-
// 사용자 이미지
25-
var userImage = UIImageView().then {
30+
/// **사용자 프로필 이미지**
31+
let userImage = UIImageView().then {
2632
$0.image = EATSSUDesignAsset.Images.profile.image
2733
}
2834

29-
// 닉네임이 들어간 닉네임 변경 버튼
30-
var userNicknameButton = UIButton().then {
31-
$0.addTitleAttribute(
32-
title: "다시 시도해주세요",
33-
titleColor: .black,
34-
fontName: EATSSUDesignFontFamily.Pretendard.regular.font(size: 16)
35-
)
35+
/// **사용자 닉네임 라벨**
36+
let userNicknameLabel = UILabel().then {
37+
$0.text = "다시 시도해주세요"
38+
$0.font = EATSSUDesignFontFamily.Pretendard.regular.font(size: 16)
3639
}
3740

38-
// "연결된 계정" 레이블
41+
/// **"연결된 계정" 라벨**
3942
let accountTitleLabel = UILabel().then {
4043
$0.text = ESTextLiteral.MyPage.linkedAccount
4144
$0.font = EATSSUDesignFontFamily.Pretendard.regular.font(size: 14)
4245
}
4346

44-
// 서버에서 계정 정보를 가져오기 전 기본값
45-
var accountTypeLabel = UILabel().then {
47+
/// **소셜 로그인 계정 유형 라벨 (초기값: "없음")**
48+
let accountTypeLabel = UILabel().then {
4649
$0.text = "없음"
4750
$0.font = EATSSUDesignFontFamily.Pretendard.regular.font(size: 14)
48-
$0.font = .bold(size: 14)
4951
}
5052

51-
// 소셜 로그인 공급업체 아이콘
52-
var accountTypeImage = UIImageView()
53+
/// **소셜 로그인 공급업체 아이콘**
54+
let accountTypeImage = UIImageView()
5355

54-
lazy var totalAccountStackView = UIStackView(
55-
arrangedSubviews: [accountTitleLabel, accountStackView]).then {
56+
/// **"연결된 계정" 라벨과 계정 정보를 포함하는 수직 스택 뷰**
57+
lazy var accountStackView = UIStackView(arrangedSubviews: [accountTypeLabel, accountTypeImage]).then {
5658
$0.alignment = .bottom
5759
$0.axis = .horizontal
58-
$0.spacing = 20
60+
$0.spacing = 5
5961
}
6062

61-
lazy var accountStackView = UIStackView(
62-
arrangedSubviews: [accountTypeLabel, accountTypeImage]).then {
63+
/// **"연결된 계정" 제목과 계정 정보를 포함하는 수평 스택 뷰**
64+
lazy var totalAccountStackView = UIStackView(arrangedSubviews: [accountTitleLabel, accountStackView]).then {
6365
$0.alignment = .bottom
6466
$0.axis = .horizontal
65-
$0.spacing = 5
67+
$0.spacing = 20
6668
}
6769

70+
/// **마이페이지 목록 테이블 뷰**
6871
let myPageTableView = UITableView().then {
6972
$0.separatorStyle = .none
7073
$0.isScrollEnabled = false
7174
}
7275

73-
// "앱 버전" 레이블
74-
private let appVersionStringLabel = UILabel().then { label in
75-
label.text = ESTextLiteral.MyPage.appVersion
76-
label.font = EATSSUDesignFontFamily.Pretendard.regular.font(size: 12)
77-
label.textColor = EATSSUDesignAsset.Color.GrayScale.gray400.color
76+
/// **앱 버전 정보 라벨**
77+
let appVersionStringLabel = UILabel().then {
78+
$0.text = ESTextLiteral.MyPage.appVersion
79+
$0.font = EATSSUDesignFontFamily.Pretendard.regular.font(size: 12)
80+
$0.textColor = EATSSUDesignAsset.Color.GrayScale.gray400.color
7881
}
7982

80-
// 현재 배포된 앱의 버전
81-
private let appVersionLabel = UILabel().then { label in
82-
label.text = MyPageRightItemData.version
83-
label.font = EATSSUDesignFontFamily.Pretendard.regular.font(size: 12)
84-
label.textColor = EATSSUDesignAsset.Color.GrayScale.gray400.color
83+
/// **현재 앱 버전 표시 라벨**
84+
let appVersionLabel = UILabel().then {
85+
$0.text = MyPageRightItemData.version
86+
$0.font = EATSSUDesignFontFamily.Pretendard.regular.font(size: 12)
87+
$0.textColor = EATSSUDesignAsset.Color.GrayScale.gray400.color
8588
}
8689

87-
/// "탈퇴하기" 레이블과 탈퇴하기 아이콘
90+
/// **회원 탈퇴 버튼 (아이콘 포함)**
8891
let userWithdrawButton: UIButton = {
8992
let button = UIButton()
9093
button.setTitle(ESTextLiteral.MyPage.withdraw, for: .normal)
@@ -95,30 +98,30 @@ final class MyPageView: BaseUIView {
9598
return button
9699
}()
97100

98-
/// "탈퇴하기" 레이블 underline
99-
private let underLineView: UIView = {
101+
/// **회원 탈퇴 버튼 아래에 표시되는 언더라인 뷰**
102+
let underLineView: UIView = {
100103
let view = UIView()
101104
view.backgroundColor = EATSSUDesignAsset.Color.GrayScale.gray400.color
102105
return view
103106
}()
104107

105-
// MARK: - Intializer
108+
// MARK: - Initializer
106109

107110
override init(frame: CGRect) {
108111
super.init(frame: frame)
109-
110112
registerTableViewCells()
111113
}
112114

113-
// MARK: - Functions
115+
// MARK: - UI 설정
114116

117+
/// UI 구성 요소를 화면에 추가합니다.
115118
override func configureUI() {
116119
addSubview(scrollView)
117120
scrollView.addSubview(contentView)
118121

119122
contentView.addSubviews(
120123
userImage,
121-
userNicknameButton,
124+
userNicknameLabel,
122125
totalAccountStackView,
123126
myPageTableView,
124127
appVersionStringLabel,
@@ -128,6 +131,7 @@ final class MyPageView: BaseUIView {
128131
)
129132
}
130133

134+
/// UI 레이아웃을 설정합니다.
131135
override func setLayout() {
132136
scrollView.snp.makeConstraints {
133137
$0.edges.equalToSuperview()
@@ -144,15 +148,15 @@ final class MyPageView: BaseUIView {
144148
$0.height.width.equalTo(100)
145149
}
146150

147-
userNicknameButton.snp.makeConstraints {
151+
userNicknameLabel.snp.makeConstraints {
148152
$0.top.equalTo(userImage.snp.bottom).offset(6)
149153
$0.centerX.equalTo(userImage)
150154
$0.height.equalTo(40)
151155
}
152156

153157
totalAccountStackView.snp.makeConstraints {
154158
$0.centerX.equalToSuperview()
155-
$0.top.equalTo(userNicknameButton.snp.bottom).offset(10)
159+
$0.top.equalTo(userNicknameLabel.snp.bottom).offset(10)
156160
}
157161

158162
myPageTableView.snp.makeConstraints {
@@ -162,21 +166,20 @@ final class MyPageView: BaseUIView {
162166
$0.width.equalToSuperview()
163167
}
164168

165-
appVersionStringLabel.snp.makeConstraints { make in
166-
make.top.equalTo(myPageTableView.snp.bottom).offset(6)
167-
make.leading.equalToSuperview().inset(24)
169+
appVersionStringLabel.snp.makeConstraints {
170+
$0.top.equalTo(myPageTableView.snp.bottom).offset(6)
171+
$0.leading.equalToSuperview().inset(24)
168172
}
169173

170-
appVersionLabel.snp.makeConstraints { make in
171-
make.top.equalTo(myPageTableView.snp.bottom).offset(6)
172-
make.trailing.equalToSuperview().inset(24)
174+
appVersionLabel.snp.makeConstraints {
175+
$0.top.equalTo(myPageTableView.snp.bottom).offset(6)
176+
$0.trailing.equalToSuperview().inset(24)
173177
}
174178

175-
// TODO: withdrawStackView를 프로퍼티로 선언할 때, lazy를 사용하면 레이아웃이 한 타임 늦게 잡히는 문제로 인해서 여기에서 스택 안에 들어갈 뷰를 추가함. 개선 방법이 없는지 확인.
176-
userWithdrawButton.snp.makeConstraints { make in
177-
make.top.equalTo(appVersionLabel.snp.bottom).offset(16)
178-
make.trailing.equalToSuperview().inset(24)
179-
make.bottom.equalToSuperview().inset(70)
179+
userWithdrawButton.snp.makeConstraints {
180+
$0.top.equalTo(appVersionLabel.snp.bottom).offset(16)
181+
$0.trailing.equalToSuperview().inset(24)
182+
$0.bottom.equalToSuperview().inset(70)
180183
}
181184

182185
underLineView.snp.makeConstraints {
@@ -186,23 +189,21 @@ final class MyPageView: BaseUIView {
186189
}
187190
}
188191

189-
private func registerTableViewCells() {
190-
myPageTableView.register(
191-
MyPageTableDefaultCell.self,
192-
forCellReuseIdentifier: MyPageTableDefaultCell.identifier
193-
)
194-
myPageTableView.register(
195-
NotificationSettingTableViewCell.self,
196-
forCellReuseIdentifier: NotificationSettingTableViewCell.identifier
197-
)
192+
// MARK: - 기능
193+
194+
/// 마이페이지 테이블 뷰의 셀을 등록합니다.
195+
func registerTableViewCells() {
196+
myPageTableView.register(MyPageTableDefaultCell.self, forCellReuseIdentifier: MyPageTableDefaultCell.identifier)
197+
myPageTableView.register(NotificationSettingTableViewCell.self, forCellReuseIdentifier: NotificationSettingTableViewCell.identifier)
198198
}
199199

200-
public func setUserInfo(nickname: String) {
201-
userNicknameButton.addTitleAttribute(
202-
title: "\(nickname) >",
203-
titleColor: .black,
204-
fontName: .semiBold(size: 20)
205-
)
200+
/// 사용자 정보를 설정합니다.
201+
///
202+
/// - Parameter nickname: 사용자 닉네임
203+
func setUserInfo(nickname: String) {
204+
userNicknameLabel.text = nickname
205+
userNicknameLabel.font = EATSSUDesignFontFamily.Pretendard.semiBold.font(size: 20)
206+
206207
if let accountType = UserInfoManager.shared.getCurrentUserInfo()?.accountType {
207208
switch accountType {
208209
case .apple:

EATSSU/App/Sources/Presentation/MyPage/ViewController/MyPageViewController.swift

-12
Original file line numberDiff line numberDiff line change
@@ -105,24 +105,12 @@ final class MyPageViewController: BaseViewController {
105105

106106
/// - Note: 버튼들의 액션을 연결합니다.
107107
override func setButtonEvent() {
108-
mypageView.userNicknameButton
109-
.addTarget(self, action: #selector(didTappedChangeNicknameButton), for: .touchUpInside)
110-
111108
mypageView.userWithdrawButton
112109
.addTarget(self, action: #selector(userWithdrawButtonTapped), for: .touchUpInside)
113110
}
114111

115112
// MARK: - Actions
116113

117-
//======================================================================
118-
/// - Note: 닉네임 변경 버튼을 탭했을 때 호출됩니다.
119-
/// 닉네임 설정 화면으로 이동합니다.
120-
@objc
121-
private func didTappedChangeNicknameButton() {
122-
let setNickNameVC = SetNickNameViewController()
123-
navigationController?.pushViewController(setNickNameVC, animated: true)
124-
}
125-
126114
/// - Note: 회원탈퇴 버튼을 탭했을 때 호출됩니다.
127115
/// 회원탈퇴 화면으로 이동합니다.
128116
@objc

0 commit comments

Comments
 (0)