From 3e86c94ca8842fbad4c51748dded2b6e1c4e74fb Mon Sep 17 00:00:00 2001 From: dlwns33 Date: Tue, 28 Feb 2023 21:41:32 +0900 Subject: [PATCH] feat: init customNaviBar (#371) --- NADA-iOS-forRelease.xcodeproj/project.pbxproj | 24 ++++- .../Views/{ => CardView}/CardView.swift | 0 .../Sources/Views/{ => CardView}/CardView.xib | 0 .../CustomNavigationBar.swift | 91 +++++++++++++++++++ 4 files changed, 113 insertions(+), 2 deletions(-) rename NADA-iOS-forRelease/Sources/Views/{ => CardView}/CardView.swift (100%) rename NADA-iOS-forRelease/Sources/Views/{ => CardView}/CardView.xib (100%) create mode 100644 NADA-iOS-forRelease/Sources/Views/CustomNavigationBar/CustomNavigationBar.swift diff --git a/NADA-iOS-forRelease.xcodeproj/project.pbxproj b/NADA-iOS-forRelease.xcodeproj/project.pbxproj index c2dc03ef..82d4cd7f 100644 --- a/NADA-iOS-forRelease.xcodeproj/project.pbxproj +++ b/NADA-iOS-forRelease.xcodeproj/project.pbxproj @@ -90,6 +90,7 @@ 7781294A275F6ED7004B34F4 /* CardDetail.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 77812949275F6ED7004B34F4 /* CardDetail.storyboard */; }; 77A4D5EB29AE20CB00367B7C /* makeVibrate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77A4D5EA29AE20CB00367B7C /* makeVibrate.swift */; }; 77A4D5EF29AE269B00367B7C /* AroundMeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77A4D5EE29AE269B00367B7C /* AroundMeViewController.swift */; }; + 77A4D5F429AE291F00367B7C /* CustomNavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77A4D5F329AE291F00367B7C /* CustomNavigationBar.swift */; }; 77AA68EA273E0EC4009C89B0 /* CardAddInGroupRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77AA68E9273E0EC4009C89B0 /* CardAddInGroupRequest.swift */; }; 77B4E7482990E420006098DC /* Home.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 77B4E7472990E420006098DC /* Home.storyboard */; }; 77B4E74B2990E50E006098DC /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77B4E74A2990E50E006098DC /* HomeViewController.swift */; }; @@ -307,6 +308,7 @@ 77812949275F6ED7004B34F4 /* CardDetail.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = CardDetail.storyboard; sourceTree = ""; }; 77A4D5EA29AE20CB00367B7C /* makeVibrate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = makeVibrate.swift; sourceTree = ""; }; 77A4D5EE29AE269B00367B7C /* AroundMeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AroundMeViewController.swift; sourceTree = ""; }; + 77A4D5F329AE291F00367B7C /* CustomNavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomNavigationBar.swift; sourceTree = ""; }; 77AA68E9273E0EC4009C89B0 /* CardAddInGroupRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardAddInGroupRequest.swift; sourceTree = ""; }; 77B4E7422990E00B006098DC /* Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; 77B4E7432990E015006098DC /* Beta.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Beta.xcconfig; sourceTree = ""; }; @@ -748,6 +750,23 @@ path = VC; sourceTree = ""; }; + 77A4D5F129AE28EA00367B7C /* CardView */ = { + isa = PBXGroup; + children = ( + 7705CF3D2752C7DB005195DF /* CardView.swift */, + 7705CF3F2752C844005195DF /* CardView.xib */, + ); + path = CardView; + sourceTree = ""; + }; + 77A4D5F229AE28F200367B7C /* CustomNavigationBar */ = { + isa = PBXGroup; + children = ( + 77A4D5F329AE291F00367B7C /* CustomNavigationBar.swift */, + ); + path = CustomNavigationBar; + sourceTree = ""; + }; 77B4E7462990E415006098DC /* Home */ = { isa = PBXGroup; children = ( @@ -1164,8 +1183,8 @@ F8FC43A126C01F1F0033E151 /* Views */ = { isa = PBXGroup; children = ( - 7705CF3D2752C7DB005195DF /* CardView.swift */, - 7705CF3F2752C844005195DF /* CardView.xib */, + 77A4D5F229AE28F200367B7C /* CustomNavigationBar */, + 77A4D5F129AE28EA00367B7C /* CardView */, ); path = Views; sourceTree = ""; @@ -1564,6 +1583,7 @@ 394F314C27081B3A00C83291 /* FrontViewController.swift in Sources */, 777FF89D2735B16B00BF69D3 /* GroupAddRequest.swift in Sources */, 7734D5AA27719520004360E4 /* CardShareBottomSheetViewController.swift in Sources */, + 77A4D5F429AE291F00367B7C /* CustomNavigationBar.swift in Sources */, F8F5D0AA270800FD00D99D2E /* Xib.swift in Sources */, F82FF8252702000000E57F8B /* RequiredFlavorCollectionViewCell.swift in Sources */, F8C83FC7272FA2A20009DF0D /* CardService.swift in Sources */, diff --git a/NADA-iOS-forRelease/Sources/Views/CardView.swift b/NADA-iOS-forRelease/Sources/Views/CardView/CardView.swift similarity index 100% rename from NADA-iOS-forRelease/Sources/Views/CardView.swift rename to NADA-iOS-forRelease/Sources/Views/CardView/CardView.swift diff --git a/NADA-iOS-forRelease/Sources/Views/CardView.xib b/NADA-iOS-forRelease/Sources/Views/CardView/CardView.xib similarity index 100% rename from NADA-iOS-forRelease/Sources/Views/CardView.xib rename to NADA-iOS-forRelease/Sources/Views/CardView/CardView.xib diff --git a/NADA-iOS-forRelease/Sources/Views/CustomNavigationBar/CustomNavigationBar.swift b/NADA-iOS-forRelease/Sources/Views/CustomNavigationBar/CustomNavigationBar.swift new file mode 100644 index 00000000..97a8460a --- /dev/null +++ b/NADA-iOS-forRelease/Sources/Views/CustomNavigationBar/CustomNavigationBar.swift @@ -0,0 +1,91 @@ +// +// CustomNavigationBar.swift +// NADA-iOS-forRelease +// +// Created by Yi Joon Choi on 2023/02/28. +// + +import SnapKit +import Then +import UIKit + +/* + + 공통으로 사용할 수 있도록 만들어둔 네비게이션 바 입니다. + + 1) CustomNavigationBar에는 공통으로 필요한 요소들을 구현해둔 상태에요. + 2) 해당 ViewController로 가서 CustomNavigationBar를 상속받은 UIView 생성 (ex: navigationBar) + 3) navigationBar.leftButtonAction = { 왼쪽버튼을 누르면 해야할 것 } 을 추가해요. + 4) navigationBar.rightButtonAction = { 오른쪽버튼을 누르면 해야할 것 } 을 추가해요. + 5) func iconImage(leftImage: UIImage, rightImage: UIImage) 함수를 이용하여 왼쪽 아이템과 오른쪽 아이템을 바꿔주세요. + + */ + +class CustomNavigationBar: UIView { + + // MARK: - Properties + + var leftButtonAction: (() -> Void)? + var rightButtonAction: (() -> Void)? + + // MARK: - UI Components + + private let titleLabel = UILabel().then { + $0.textColor = .primary + $0.font = .title02 + $0.sizeToFit() + } + private lazy var leftButton = UIButton().then { + $0.addTarget(self, action: #selector(touchLeftButton(_:)), for: .touchUpInside) + } + private lazy var rightButton = UIButton().then { + $0.addTarget(self, action: #selector(touchRightButton(_:)), for: .touchUpInside) + } + + // MARK: - Initialize + + override init(frame: CGRect) { + super.init(frame: frame) + setLayout() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + } + + // MARK: - UI & Layout + + func setUI(_ title: String?, leftImage: UIImage?, rightImage: UIImage?) { + titleLabel.text = title + leftButton.setImage(leftImage?.withRenderingMode(.alwaysTemplate), for: .normal) + rightButton.setImage(rightImage?.withRenderingMode(.alwaysTemplate), for: .normal) + } + + private func setLayout() { + addSubviews([leftButton, titleLabel, rightButton]) + + leftButton.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.leading.equalToSuperview().inset(25) + make.height.width.equalTo(24) + } + titleLabel.snp.makeConstraints { make in + make.center.equalToSuperview() + } + rightButton.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.trailing.equalToSuperview().inset(25) + make.height.width.equalTo(24) + } + } + + // MARK: - @objc + + @objc func touchLeftButton(_ sender: UIButton) { + leftButtonAction?() + } + + @objc func touchRightButton(_ sender: UIButton) { + rightButtonAction?() + } +}