Skip to content

Commit f96dccf

Browse files
authored
Merge pull request #244 from Team-return/feature/(#220)-companyDetail_refactoring
🔗 :: (#220) 기업 상세 리펙토링
2 parents 916fd95 + 526c934 commit f96dccf

File tree

3 files changed

+115
-123
lines changed

3 files changed

+115
-123
lines changed

Projects/Presentation/Sources/CompanyDetail/CompanyDetailViewController.swift

Lines changed: 41 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,15 @@ import Core
88
import DesignSystem
99

1010
public class CompanyDetailViewController: BaseViewController<CompanyDetailViewModel> {
11-
private let companyLogoImageView = UIImageView().then {
12-
$0.clipsToBounds = true
13-
$0.layer.borderWidth = 1.0
14-
$0.layer.borderColor = UIColor.GrayScale.gray30.cgColor
15-
$0.layer.cornerRadius = 8
16-
}
17-
private let companyLabel = UILabel().then {
18-
$0.setJobisText(
19-
"회사 정보 불러오는 중...",
20-
font: .headLine,
21-
color: .GrayScale.gray90
22-
)
23-
}
24-
private let explainCompanyLabel = UILabel().then {
25-
$0.numberOfLines = 0
26-
$0.lineBreakMode = .byWordWrapping
27-
$0.setJobisText(
28-
"-",
29-
font: .body,
30-
color: .GrayScale.gray70
31-
)
32-
}
11+
private let companyDetailProfileView = CompanyDetailProfileView()
3312
private let scrollView = UIScrollView().then {
3413
$0.showsVerticalScrollIndicator = false
3514
}
3615
private let contentView = UIView()
16+
private let mainStackView = UIStackView().then {
17+
$0.spacing = 0
18+
$0.axis = .vertical
19+
}
3720
private let bossLabel = CompanyDetailLabel(menuText: "대표자")
3821
private let startedDayLabel = CompanyDetailLabel(menuText: "설립일")
3922
private let workersNumbersLabel = CompanyDetailLabel(menuText: "근로자 수")
@@ -61,17 +44,16 @@ public class CompanyDetailViewController: BaseViewController<CompanyDetailViewMo
6144
$0.setText("모집의뢰서 보기")
6245
$0.isHidden = true
6346
}
47+
6448
public override func addView() {
6549
[
6650
scrollView,
6751
recruitmentButton
6852
].forEach(view.addSubview(_:))
6953

7054
scrollView.addSubview(contentView)
55+
7156
[
72-
companyLogoImageView,
73-
companyLabel,
74-
explainCompanyLabel,
7557
bossLabel,
7658
startedDayLabel,
7759
workersNumbersLabel,
@@ -83,31 +65,20 @@ public class CompanyDetailViewController: BaseViewController<CompanyDetailViewMo
8365
secondManagerLabel,
8466
secondPhoneNumberLabel,
8567
emailLabel,
86-
faxLabel,
68+
faxLabel
69+
].forEach(mainStackView.addArrangedSubview(_:))
70+
71+
[
72+
companyDetailProfileView,
73+
mainStackView,
8774
interviewReviewMenuLabel,
8875
interviewReviewTableView
8976
].forEach(contentView.addSubview(_:))
9077
}
9178

9279
public override func setLayout() {
93-
companyLogoImageView.snp.makeConstraints {
94-
$0.top.equalToSuperview().inset(12)
95-
$0.left.equalToSuperview().inset(24)
96-
$0.width.height.equalTo(48)
97-
}
98-
99-
companyLabel.snp.makeConstraints {
100-
$0.left.equalTo(companyLogoImageView.snp.right).offset(12)
101-
$0.centerY.equalTo(companyLogoImageView)
102-
}
103-
104-
explainCompanyLabel.snp.makeConstraints {
105-
$0.top.equalTo(companyLogoImageView.snp.bottom).offset(8)
106-
$0.left.right.equalToSuperview().inset(24)
107-
}
108-
10980
scrollView.snp.makeConstraints {
110-
$0.top.equalTo(self.view.safeAreaLayoutGuide)
81+
$0.top.equalToSuperview()
11182
$0.leading.trailing.equalTo(self.view.safeAreaLayoutGuide)
11283
$0.bottom.equalTo(recruitmentButton.snp.top).inset(-12)
11384
}
@@ -118,68 +89,17 @@ public class CompanyDetailViewController: BaseViewController<CompanyDetailViewMo
11889
$0.bottom.equalTo(interviewReviewTableView.snp.bottom).offset(20)
11990
}
12091

121-
bossLabel.snp.makeConstraints {
122-
$0.top.equalTo(explainCompanyLabel.snp.bottom).offset(24)
123-
$0.left.right.equalToSuperview().inset(24)
124-
}
125-
126-
startedDayLabel.snp.makeConstraints {
127-
$0.top.equalTo(bossLabel.snp.bottom).offset(16)
128-
$0.left.right.equalToSuperview().inset(24)
129-
}
130-
131-
workersNumbersLabel.snp.makeConstraints {
132-
$0.top.equalTo(startedDayLabel.snp.bottom).offset(16)
133-
$0.left.right.equalToSuperview().inset(24)
134-
}
135-
136-
annualSalesLabel.snp.makeConstraints {
137-
$0.top.equalTo(workersNumbersLabel.snp.bottom).offset(16)
138-
$0.left.right.equalToSuperview().inset(24)
139-
}
140-
141-
headAddressLabel.snp.makeConstraints {
142-
$0.top.equalTo(annualSalesLabel.snp.bottom).offset(16)
143-
$0.left.right.equalToSuperview().inset(24)
144-
}
145-
146-
chainAddressLabel.snp.makeConstraints {
147-
$0.top.equalTo(headAddressLabel.snp.bottom).offset(16)
148-
$0.left.right.equalToSuperview().inset(24)
149-
}
150-
151-
firstManagerLabel.snp.makeConstraints {
152-
$0.top.equalTo(chainAddressLabel.snp.bottom).offset(16)
153-
$0.left.right.equalToSuperview().inset(24)
154-
}
155-
156-
firstPhoneNumberLabel.snp.makeConstraints {
157-
$0.top.equalTo(firstManagerLabel.snp.bottom).offset(16)
158-
$0.left.right.equalToSuperview().inset(24)
159-
}
160-
161-
secondManagerLabel.snp.makeConstraints {
162-
$0.top.equalTo(firstPhoneNumberLabel.snp.bottom).offset(16)
163-
$0.left.right.equalToSuperview().inset(24)
164-
}
165-
166-
secondPhoneNumberLabel.snp.makeConstraints {
167-
$0.top.equalTo(secondManagerLabel.snp.bottom).offset(16)
168-
$0.left.right.equalToSuperview().inset(24)
169-
}
170-
171-
emailLabel.snp.makeConstraints {
172-
$0.top.equalTo(secondPhoneNumberLabel.snp.bottom).offset(16)
173-
$0.left.right.equalToSuperview().inset(24)
92+
companyDetailProfileView.snp.makeConstraints {
93+
$0.top.leading.trailing.equalToSuperview()
17494
}
17595

176-
faxLabel.snp.makeConstraints {
177-
$0.top.equalTo(emailLabel.snp.bottom).offset(16)
178-
$0.left.right.equalToSuperview().inset(24)
96+
mainStackView.snp.makeConstraints {
97+
$0.top.equalTo(companyDetailProfileView.snp.bottom).offset(12)
98+
$0.leading.trailing.equalToSuperview()
17999
}
180100

181101
interviewReviewMenuLabel.snp.makeConstraints {
182-
$0.top.equalTo(faxLabel.snp.bottom).offset(20)
102+
$0.top.equalTo(mainStackView.snp.bottom).offset(20)
183103
}
184104

185105
interviewReviewTableView.snp.makeConstraints {
@@ -204,24 +124,26 @@ public class CompanyDetailViewController: BaseViewController<CompanyDetailViewMo
204124
let output = viewModel.transform(input)
205125

206126
output.companyDetailInfo
207-
.bind(onNext: { companyDetailInfo in
208-
self.companyLogoImageView.setJobisImage(urlString: companyDetailInfo.companyProfileURL)
209-
self.companyLabel.text = companyDetailInfo.companyName
210-
self.explainCompanyLabel.text = companyDetailInfo.companyIntroduce
211-
self.bossLabel.setContent(contentText: companyDetailInfo.representativeName)
212-
self.startedDayLabel.setContent(contentText: companyDetailInfo.foundedAt)
213-
self.workersNumbersLabel.setContent(contentText: companyDetailInfo.workerNumber)
214-
self.annualSalesLabel.setContent(contentText: companyDetailInfo.take)
215-
self.headAddressLabel.setContent(contentText: companyDetailInfo.mainAddress)
216-
self.chainAddressLabel.setContent(contentText: companyDetailInfo.subAddress ?? "-")
217-
self.firstManagerLabel.setContent(contentText: companyDetailInfo.managerName)
218-
self.firstPhoneNumberLabel.setContent(contentText: companyDetailInfo.managerPhoneNo)
219-
self.secondManagerLabel.setContent(contentText: companyDetailInfo.subManagerName ?? "-")
220-
self.secondPhoneNumberLabel.setContent(contentText: companyDetailInfo.subManagerPhoneNo ?? "-")
221-
self.emailLabel.setContent(contentText: companyDetailInfo.email)
222-
self.faxLabel.setContent(contentText: companyDetailInfo.fax ?? "-")
223-
self.viewModel.recruitmentID = companyDetailInfo.recruitmentID
224-
self.recruitmentButton.isHidden = companyDetailInfo.recruitmentID == nil
127+
.bind(onNext: { [weak self] in
128+
self?.companyDetailProfileView.setCompanyProfile(
129+
imageUrl: $0.companyProfileURL,
130+
companyName: $0.companyName,
131+
companyContent: $0.companyIntroduce
132+
)
133+
self?.bossLabel.setContent(contentText: $0.representativeName)
134+
self?.startedDayLabel.setContent(contentText: $0.foundedAt)
135+
self?.workersNumbersLabel.setContent(contentText: $0.workerNumber)
136+
self?.annualSalesLabel.setContent(contentText: $0.take)
137+
self?.headAddressLabel.setContent(contentText: $0.mainAddress)
138+
self?.chainAddressLabel.setContent(contentText: $0.subAddress ?? "-")
139+
self?.firstManagerLabel.setContent(contentText: $0.managerName)
140+
self?.firstPhoneNumberLabel.setContent(contentText: $0.managerPhoneNo)
141+
self?.secondManagerLabel.setContent(contentText: $0.subManagerName ?? "-")
142+
self?.secondPhoneNumberLabel.setContent(contentText: $0.subManagerPhoneNo ?? "-")
143+
self?.emailLabel.setContent(contentText: $0.email)
144+
self?.faxLabel.setContent(contentText: $0.fax ?? "-")
145+
self?.viewModel.recruitmentID = $0.recruitmentID
146+
self?.recruitmentButton.isHidden = $0.recruitmentID == nil
225147
})
226148
.disposed(by: disposeBag)
227149

@@ -238,7 +160,7 @@ public class CompanyDetailViewController: BaseViewController<CompanyDetailViewMo
238160
public override func configureViewController() { }
239161

240162
public override func configureNavigation() {
241-
self.setSmallTitle(title: "상세 보기")
163+
self.setSmallTitle(title: "기업 상세")
242164
self.navigationItem.largeTitleDisplayMode = .never
243165
}
244166
}

Projects/Presentation/Sources/CompanyDetail/Components/CompanyDetailLabel.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,15 @@ public final class CompanyDetailLabel: BaseView {
3434

3535
public override func setLayout() {
3636
title.snp.makeConstraints {
37-
$0.top.left.equalToSuperview()
37+
$0.top.equalToSuperview()
38+
$0.leading.equalToSuperview().inset(24)
3839
$0.width.equalTo(64)
3940
}
4041
content.snp.makeConstraints {
41-
$0.top.bottom.equalToSuperview()
42-
$0.left.equalTo(title.snp.right).offset(8)
43-
$0.right.equalToSuperview()
42+
$0.top.equalToSuperview()
43+
$0.leading.equalTo(title.snp.trailing).offset(8)
44+
$0.trailing.equalToSuperview().inset(24)
45+
$0.bottom.equalToSuperview().inset(16)
4446
}
4547
}
4648
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import UIKit
2+
import SnapKit
3+
import Then
4+
import DesignSystem
5+
6+
public final class CompanyDetailProfileView: BaseView {
7+
private let backStackView = UIStackView().then {
8+
$0.axis = .vertical
9+
$0.spacing = 12
10+
$0.layoutMargins = .init(top: 12, left: 24, bottom: 12, right: 24)
11+
$0.isLayoutMarginsRelativeArrangement = true
12+
}
13+
private let profileStackView = UIStackView().then {
14+
$0.axis = .horizontal
15+
$0.spacing = 12
16+
}
17+
private let companyLogoImageView = UIImageView().then {
18+
$0.clipsToBounds = true
19+
$0.layer.borderWidth = 1.0
20+
$0.layer.borderColor = UIColor.GrayScale.gray30.cgColor
21+
$0.layer.cornerRadius = 8
22+
}
23+
private let companyLabel = UILabel().then {
24+
$0.setJobisText(
25+
"기업 상세 불러오는중...",
26+
font: .headLine,
27+
color: .GrayScale.gray90
28+
)
29+
}
30+
let companyContentLabel = UILabel().then {
31+
$0.setJobisText(
32+
"-",
33+
font: .body,
34+
color: .GrayScale.gray70
35+
)
36+
$0.numberOfLines = 0
37+
$0.lineBreakMode = .byWordWrapping
38+
}
39+
40+
func setCompanyProfile(imageUrl: String, companyName: String, companyContent: String) {
41+
companyLogoImageView.setJobisImage(urlString: imageUrl)
42+
companyLabel.text = companyName
43+
companyContentLabel.text = companyContent
44+
}
45+
46+
public override func addView() {
47+
[
48+
companyLogoImageView,
49+
companyLabel
50+
].forEach(self.profileStackView.addArrangedSubview(_:))
51+
52+
[
53+
profileStackView,
54+
companyContentLabel
55+
].forEach(self.backStackView.addArrangedSubview(_:))
56+
self.addSubview(backStackView)
57+
}
58+
59+
public override func setLayout() {
60+
companyLogoImageView.snp.makeConstraints {
61+
$0.width.height.equalTo(48)
62+
}
63+
64+
backStackView.snp.makeConstraints {
65+
$0.edges.equalToSuperview()
66+
}
67+
}
68+
}

0 commit comments

Comments
 (0)