오늘 한 일 : 지난번에 빠르게 업데이트 하면서 생긴 똥 치우기 및 상세화면 기획/디자인 다음 할 일 : 상세화면 구현하기
<aside> ✏️ 2022.10.18
지난번에 빠르게 출시하느라 정리하지 못한 네비게이션 바 디자인시스템 코드를 정리했고 그에 따라서 디자인 부분을 전반적으로 수정했다.
그리고 서울시 공공데이터 API를 기반으로 상세 화면을 어떻게 만들지 기획, 디자인했다.
</aside>
일단 디자인 작업을 해서 디자인적인 디자인시스템을 수정하고
그에 따라서 코드에서 디자인시스템을 수정할 필요가 있었다.
디자인시스템의 네비게이션 바가 좀 더 유연하게 대처할 필요가 있어서 열거형으로 화면마다 네비게이션을 관리하지 않고,
메인일 때와 상세일 때로 나눠서 네비게이션 종류를 관리했다.
import UIKit
import NiCarNaeCar_Resource
import SnapKit
import Then
final class NDSNavigationBar: UIView {
// MARK: - Properties
private var viewController = UIViewController()
public var backButton = BackButton()
private var closeButton = CloseButton()
private var titleLabel = UILabel().then {
$0.textColor = R.Color.black200
$0.textAlignment = .center
$0.font = NiCarNaeCarFont.title2.font
}
private var detailTitleLabel = UILabel().then {
$0.textColor = R.Color.black200
$0.textAlignment = .center
$0.font = NiCarNaeCarFont.body2.font
$0.isHidden = true
}
var backButtonIsHidden: Bool = true {
didSet {
backButton.isHidden = backButtonIsHidden
}
}
var closeButtonIsHidden: Bool = true {
didSet {
closeButton.isHidden = closeButtonIsHidden
}
}
var title: String = "" {
didSet {
titleLabel.text = title
detailTitleLabel.text = title
}
}
var isCloseButtonDisabled = true {
didSet {
closeButton.isDisabled = isCloseButtonDisabled
}
}
var isDetail: Bool = false {
didSet {
if isDetail {
titleLabel.isHidden = true
detailTitleLabel.isHidden = false
} else {
titleLabel.isHidden = false
detailTitleLabel.isHidden = true
}
}
}
// MARK: - Initializer
public init(_ viewController: UIViewController) {
super.init(frame: .zero)
self.backButton = BackButton(root: viewController)
self.closeButton = CloseButton(root: viewController)
configureUI()
setLayout()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// MARK: - UI Method
private func configureUI() {
backgroundColor = R.Color.white
}
private func setLayout() {
addSubviews(backButton, titleLabel, detailTitleLabel, closeButton)
snp.makeConstraints { make in
make.height.equalTo(Metric.navigationHeight)
}
backButton.snp.makeConstraints { make in
make.top.equalToSuperview()
make.leading.equalToSuperview().inset(Metric.navigationButtonLeading)
make.width.height.equalTo(Metric.navigationButtonSize)
}
titleLabel.snp.makeConstraints { make in
make.top.equalToSuperview().inset(Metric.navigationTitleTop)
make.leading.equalToSuperview().inset(Metric.navigationTitleLeading)
}
detailTitleLabel.snp.makeConstraints { make in
make.top.equalToSuperview().inset(Metric.navigationTitleTop)
make.centerX.equalToSuperview()
}
closeButton.snp.makeConstraints { make in
make.top.equalToSuperview()
make.trailing.equalToSuperview().inset(Metric.navigationButtonTrailing)
make.width.height.equalTo(Metric.navigationButtonSize)
}
}
}
→ 기존의 열거형으로 관리한 코드를 지우고, 메인화면일 때와 상세화면일 때로 나눠서 관리했다.
여러가지 후보가 있었지만 .. 가장 오른쪽으로 결정 !!