@@ -20,90 +20,102 @@ final class MyInfoView: BaseUIView {
20
20
// MARK: - UI Components
21
21
22
22
/// 닉네임 설정 안내 문구
23
- let nickNameLabel = UILabel ( ) . then {
23
+ let nicknameSettingLabel = UILabel ( ) . then {
24
24
$0. text = " EAT-SSU에서 사용할 \n 닉네임을 설정해 주세요 "
25
25
$0. numberOfLines = 2
26
26
$0. font = EATSSUDesignFontFamily . Pretendard. bold. font ( size: 18 )
27
27
}
28
28
29
29
/// 닉네임 입력 필드
30
- let inputNickNameTextField = ESTextField ( placeholder: ESTextLiteral . Nickname. inputNickName)
30
+ let nicknameTextField = ESTextField ( placeholder: ESTextLiteral . Nickname. inputNickName)
31
31
32
32
/// 닉네임 중복 확인 버튼
33
- let nicknameDoubleCheckButton = ESButton ( size: . small, title: " 중복 확인 " ) . then {
33
+ let nicknameCheckButton = ESButton ( size: . small, title: " 중복 확인 " ) . then {
34
34
$0. isEnabled = false
35
35
}
36
36
37
37
/// 닉네임 검증 결과 메시지를 표시하는 레이블
38
- let nicknameValidationMessageLabel = UILabel ( ) . then {
38
+ let nicknameValidationLabel = UILabel ( ) . then {
39
39
$0. text = ESTextLiteral . Nickname. hintInputNickName
40
40
$0. textColor = EATSSUDesignAsset . Color. GrayScale. gray400. color
41
41
$0. font = EATSSUDesignFontFamily . Pretendard. regular. font ( size: 12 )
42
42
}
43
43
44
44
/// 닉네임 입력 필드 및 검증 메시지를 포함하는 StackView
45
- lazy var setNickNameStackView = UIStackView ( arrangedSubviews: [
46
- inputNickNameTextField ,
47
- nicknameValidationMessageLabel ,
45
+ lazy var nicknameStackView = UIStackView ( arrangedSubviews: [
46
+ nicknameTextField ,
47
+ nicknameValidationLabel ,
48
48
] ) . then {
49
49
$0. axis = . vertical
50
50
$0. spacing = 8.0
51
51
}
52
52
53
53
/// 완료 버튼
54
- let completeSettingNickNameButton = ESButton ( size: . big, title: " 완료하기 " ) . then {
54
+ let completeButton = ESButton ( size: . big, title: ESTextLiteral . MyPage . complete ) . then {
55
55
$0. isEnabled = false
56
56
}
57
57
58
+ /// 소속 설정 UILabel
59
+ let affiliationLabel = UILabel ( ) . then {
60
+ $0. text = ESTextLiteral . MyPage. affiliationSetting
61
+ $0. font = EATSSUDesignFontFamily . Pretendard. medium. font ( size: 14 )
62
+ }
63
+
58
64
// MARK: - Initializer
59
65
60
66
override init ( frame: CGRect ) {
61
67
super. init ( frame: frame)
62
- setTextFieldDelegate ( )
68
+ configureTextFieldDelegate ( )
63
69
}
64
70
65
71
// MARK: - Functions
66
72
67
73
/// UI 구성 요소를 추가하는 메서드
68
74
override func configureUI( ) {
69
75
addSubviews (
70
- nickNameLabel,
71
- setNickNameStackView,
72
- completeSettingNickNameButton,
73
- nicknameDoubleCheckButton
76
+ nicknameSettingLabel,
77
+ nicknameStackView,
78
+ completeButton,
79
+ nicknameCheckButton,
80
+ affiliationLabel
74
81
)
75
82
}
76
83
77
84
/// 레이아웃 설정 메서드
78
85
override func setLayout( ) {
79
- nickNameLabel. snp. makeConstraints {
86
+ affiliationLabel. snp. makeConstraints {
87
+ $0. top. equalTo ( nicknameStackView. snp. bottom) . offset ( 40 )
88
+ $0. leading. equalTo ( nicknameStackView. snp. leading)
89
+ }
90
+
91
+ nicknameSettingLabel. snp. makeConstraints {
80
92
$0. top. equalTo ( safeAreaLayoutGuide) . offset ( 20 )
81
93
$0. leading. equalToSuperview ( ) . inset ( 16 )
82
94
}
83
- setNickNameStackView . snp. makeConstraints {
84
- $0. top. equalTo ( nickNameLabel . snp. bottom) . offset ( 16 )
95
+ nicknameStackView . snp. makeConstraints {
96
+ $0. top. equalTo ( nicknameSettingLabel . snp. bottom) . offset ( 16 )
85
97
$0. leading. equalToSuperview ( ) . inset ( 16 )
86
- $0. trailing. equalTo ( nicknameDoubleCheckButton . snp. leading) . offset ( - 5 )
98
+ $0. trailing. equalTo ( nicknameCheckButton . snp. leading) . offset ( - 5 )
87
99
}
88
- nicknameDoubleCheckButton . snp. makeConstraints {
89
- $0. top. equalTo ( inputNickNameTextField )
100
+ nicknameCheckButton . snp. makeConstraints {
101
+ $0. top. equalTo ( nicknameTextField )
90
102
$0. width. equalTo ( 75 )
91
103
$0. height. equalTo ( 48 )
92
104
$0. trailing. equalToSuperview ( ) . inset ( 16 )
93
105
}
94
- inputNickNameTextField . snp. makeConstraints {
106
+ nicknameTextField . snp. makeConstraints {
95
107
$0. height. equalTo ( 48 )
96
108
}
97
- completeSettingNickNameButton . snp. makeConstraints {
109
+ completeButton . snp. makeConstraints {
98
110
$0. horizontalEdges. equalToSuperview ( ) . inset ( 16 )
99
111
$0. bottom. equalTo ( safeAreaLayoutGuide) . inset ( 26 )
100
112
$0. height. equalTo ( 50 )
101
113
}
102
114
}
103
115
104
116
/// 닉네임 입력 필드의 delegate 설정
105
- func setTextFieldDelegate ( ) {
106
- inputNickNameTextField . delegate = self
117
+ func configureTextFieldDelegate ( ) {
118
+ nicknameTextField . delegate = self
107
119
}
108
120
}
109
121
@@ -121,16 +133,16 @@ extension MyInfoView: UITextFieldDelegate {
121
133
guard let inputValue = textField. text? . trimmingCharacters ( in: . whitespaces) else { return }
122
134
123
135
if inputValue. isEmpty {
124
- textFieldSettingWhenEmpty ( )
136
+ updateTextFieldForEmptyState ( )
125
137
return
126
138
}
127
- checkNicknameValidation ( textField)
139
+ validateNickname ( textField)
128
140
}
129
141
130
142
/// 입력 필드를 초기화할 때 호출 (버튼 비활성화)
131
143
func textFieldShouldClear( _: UITextField ) -> Bool {
132
- nicknameDoubleCheckButton . isEnabled = false
133
- completeSettingNickNameButton . isEnabled = false
144
+ nicknameCheckButton . isEnabled = false
145
+ completeButton . isEnabled = false
134
146
return true
135
147
}
136
148
}
@@ -139,20 +151,20 @@ extension MyInfoView: UITextFieldDelegate {
139
151
140
152
private extension MyInfoView {
141
153
/// 닉네임 입력 값이 없을 때 기본 메시지를 표시
142
- func textFieldSettingWhenEmpty ( ) {
143
- nicknameValidationMessageLabel . text = NicknameTextFieldResultType . textFieldEmpty. hintMessage
144
- nicknameValidationMessageLabel . textColor = NicknameTextFieldResultType . textFieldEmpty. textColor
154
+ func updateTextFieldForEmptyState ( ) {
155
+ nicknameValidationLabel . text = NicknameTextFieldResultType . textFieldEmpty. hintMessage
156
+ nicknameValidationLabel . textColor = NicknameTextFieldResultType . textFieldEmpty. textColor
145
157
}
146
158
147
159
/// 닉네임 유효성 검사
148
- func checkNicknameValidation ( _ textField: UITextField ) {
160
+ func validateNickname ( _ textField: UITextField ) {
149
161
if let userNickname = textField. text {
150
- if nicknameInputChanged ( nickname : userNickname) {
151
- nicknameValidationMessageLabel . text = NicknameTextFieldResultType . nicknameTextFieldDoubleCheck. hintMessage
152
- nicknameValidationMessageLabel . textColor = NicknameTextFieldResultType . nicknameTextFieldDoubleCheck. textColor
162
+ if isNicknameValid ( userNickname) {
163
+ nicknameValidationLabel . text = NicknameTextFieldResultType . nicknameTextFieldDoubleCheck. hintMessage
164
+ nicknameValidationLabel . textColor = NicknameTextFieldResultType . nicknameTextFieldDoubleCheck. textColor
153
165
} else {
154
- nicknameValidationMessageLabel . text = NicknameTextFieldResultType . nicknameTextFieldOver. hintMessage
155
- nicknameValidationMessageLabel . textColor = NicknameTextFieldResultType . nicknameTextFieldOver. textColor
166
+ nicknameValidationLabel . text = NicknameTextFieldResultType . nicknameTextFieldOver. hintMessage
167
+ nicknameValidationLabel . textColor = NicknameTextFieldResultType . nicknameTextFieldOver. textColor
156
168
}
157
169
}
158
170
}
@@ -163,14 +175,14 @@ private extension MyInfoView {
163
175
- Parameter nickname: 사용자가 입력한 닉네임
164
176
- Returns: 닉네임이 유효한 경우 `true`, 그렇지 않으면 `false`
165
177
*/
166
- func nicknameInputChanged ( nickname: String ) -> Bool {
167
- completeSettingNickNameButton . isEnabled = false
178
+ func isNicknameValid ( _ nickname: String ) -> Bool {
179
+ completeButton . isEnabled = false
168
180
169
181
if nickname. count > 1 , nickname. count < 9 {
170
- nicknameDoubleCheckButton . isEnabled = true
182
+ nicknameCheckButton . isEnabled = true
171
183
return true
172
184
} else {
173
- nicknameDoubleCheckButton . isEnabled = false
185
+ nicknameCheckButton . isEnabled = false
174
186
return false
175
187
}
176
188
}
0 commit comments