diff --git a/HikingClub.xcodeproj/project.pbxproj b/HikingClub.xcodeproj/project.pbxproj index 25c99f4..1634f9c 100644 --- a/HikingClub.xcodeproj/project.pbxproj +++ b/HikingClub.xcodeproj/project.pbxproj @@ -14,6 +14,7 @@ 067DC4FB26FF19DE00650862 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = 067DC4FA26FF19DE00650862 /* API.swift */; }; 067DC4FF26FF213400650862 /* NetworkError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 067DC4FE26FF213400650862 /* NetworkError.swift */; }; 067DC50126FF238F00650862 /* NetworkLogging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 067DC50026FF238F00650862 /* NetworkLogging.swift */; }; + 0684EA5B2734623300FC74D1 /* UITableViewCell+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0684EA5A2734623300FC74D1 /* UITableViewCell+.swift */; }; 06962E902727FC250021402F /* NDTabButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06962E8F2727FC250021402F /* NDTabButton.swift */; }; 06962E93272927770021402F /* SearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06962E92272927770021402F /* SearchViewController.swift */; }; 06962E95272927A00021402F /* Search.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 06962E94272927A00021402F /* Search.storyboard */; }; @@ -39,6 +40,7 @@ 06A1ECB5271952B100EA78D8 /* NDTextFieldView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A1ECB4271952B100EA78D8 /* NDTextFieldView.swift */; }; 06A1ECB7271967E600EA78D8 /* ComponentTestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A1ECB6271967E600EA78D8 /* ComponentTestViewController.swift */; }; 06A1ECB927198ED200EA78D8 /* UITextField+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A1ECB827198ED200EA78D8 /* UITextField+.swift */; }; + 06AB8CB827312461007F32AA /* RxTextFieldDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06AB8CB727312461007F32AA /* RxTextFieldDelegateProxy.swift */; }; 06B68F9727228FF9007174E1 /* NDSearchTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06B68F9627228FF9007174E1 /* NDSearchTextField.swift */; }; 06BC1F74271C1B79001A6584 /* NDAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06BC1F73271C1B79001A6584 /* NDAlert.swift */; }; 283AF0502708672C0033ED71 /* Home.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 283AF04F2708672C0033ED71 /* Home.storyboard */; }; @@ -111,6 +113,7 @@ 067DC4FA26FF19DE00650862 /* API.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = ""; }; 067DC4FE26FF213400650862 /* NetworkError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkError.swift; sourceTree = ""; }; 067DC50026FF238F00650862 /* NetworkLogging.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkLogging.swift; sourceTree = ""; }; + 0684EA5A2734623300FC74D1 /* UITableViewCell+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableViewCell+.swift"; sourceTree = ""; }; 06962E8F2727FC250021402F /* NDTabButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NDTabButton.swift; sourceTree = ""; }; 06962E92272927770021402F /* SearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewController.swift; sourceTree = ""; }; 06962E94272927A00021402F /* Search.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Search.storyboard; sourceTree = ""; }; @@ -136,6 +139,7 @@ 06A1ECB4271952B100EA78D8 /* NDTextFieldView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NDTextFieldView.swift; sourceTree = ""; }; 06A1ECB6271967E600EA78D8 /* ComponentTestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComponentTestViewController.swift; sourceTree = ""; }; 06A1ECB827198ED200EA78D8 /* UITextField+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+.swift"; sourceTree = ""; }; + 06AB8CB727312461007F32AA /* RxTextFieldDelegateProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RxTextFieldDelegateProxy.swift; sourceTree = ""; }; 06B68F9627228FF9007174E1 /* NDSearchTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NDSearchTextField.swift; sourceTree = ""; }; 06BC1F73271C1B79001A6584 /* NDAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NDAlert.swift; sourceTree = ""; }; 283AF04F2708672C0033ED71 /* Home.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Home.storyboard; sourceTree = ""; }; @@ -261,6 +265,7 @@ 773C1D8F2718562A001AB7EB /* UIStoryBoard+.swift */, 775B95AB27204D1C004D4540 /* UITabBarItem+.swift */, 7760CA95272541D0006B39A9 /* Encodable+.swift */, + 0684EA5A2734623300FC74D1 /* UITableViewCell+.swift */, ); path = Extension; sourceTree = ""; @@ -275,6 +280,7 @@ 06BC1F73271C1B79001A6584 /* NDAlert.swift */, 064A960E272185F900939AD5 /* NDToastView.swift */, 06B68F9627228FF9007174E1 /* NDSearchTextField.swift */, + 06AB8CB727312461007F32AA /* RxTextFieldDelegateProxy.swift */, 06962E8F2727FC250021402F /* NDTabButton.swift */, 77C69BEA272CD4E6004C2207 /* KeyboardAccessoryToolbar.swift */, ); @@ -753,10 +759,12 @@ 06A1ECAC2711828900EA78D8 /* UIColor+.swift in Sources */, 77C69BE727294613004C2207 /* SignUpViewModel.swift in Sources */, 77213CF82708EF1600994C9A /* BaseWebView.swift in Sources */, + 06AB8CB827312461007F32AA /* RxTextFieldDelegateProxy.swift in Sources */, 7760CA942725411E006B39A9 /* PlaceRequestModel.swift in Sources */, 067DC4FB26FF19DE00650862 /* API.swift in Sources */, 064A960F272185F900939AD5 /* NDToastView.swift in Sources */, 7760CA9B27259C24006B39A9 /* ResponseModel.swift in Sources */, + 0684EA5B2734623300FC74D1 /* UITableViewCell+.swift in Sources */, 775B95AA271F110A004D4540 /* UIImageView+.swift in Sources */, 777B5169271197B800299430 /* UIView+.swift in Sources */, ); diff --git a/HikingClub/Helper/Components/ComponentTestViewController.swift b/HikingClub/Helper/Components/ComponentTestViewController.swift index 16cb0a6..c7e83dd 100644 --- a/HikingClub/Helper/Components/ComponentTestViewController.swift +++ b/HikingClub/Helper/Components/ComponentTestViewController.swift @@ -47,6 +47,7 @@ final class ComponentTestViewController: UIViewController, UIScrollViewDelegate testToast() testSearchTextField() testTabButton() + naviBar() } func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { @@ -72,6 +73,7 @@ final class ComponentTestViewController: UIViewController, UIScrollViewDelegate } func testTextField() { + ndTextFieldView.rx.setDelegate(self).disposed(by: disposeBag) ndTextFieldView.setPlaceholder("플레이스 홀더") ndTextFieldView.setTitle("히히", description: "설명", theme: .normal) ndTextFieldView.setTitle("워닝히히", description: "워닝설명", theme: .warning) @@ -118,7 +120,7 @@ final class ComponentTestViewController: UIViewController, UIScrollViewDelegate toastButton.setTitle("토스트띄우기", for: .normal) toastButton.setTitleColor(.black, for: .normal) toastButton.rx.tap - .map { .green(text: "테스트 토스트!") } + .map { .red(text: "테스트 토스트!") } .bind(to: NDToastView.shared.rx.showText) .disposed(by: disposeBag) @@ -129,6 +131,8 @@ final class ComponentTestViewController: UIViewController, UIScrollViewDelegate func testSearchTextField() { searchTextField.setPlaceholder("검색어를 입력하세요") + searchTextField.setReturnKeyType(.done) + searchTextField.rx.setDelegate(self).disposed(by: disposeBag) stackView.addArrangedSubview(searchTextField) searchTextField.snp.makeConstraints { $0.height.equalTo(48) @@ -179,5 +183,22 @@ final class ComponentTestViewController: UIViewController, UIScrollViewDelegate let spacing = UIView() containerView.addArrangedSubview(spacing) } + + func naviBar() { + let navi = NaviBar() + stackView.addArrangedSubviews(navi) + navi.setBackItemImage() + Observable.interval(.seconds(1), scheduler: MainScheduler.instance) + .map { "\($0)" } + .bind(to: navi.rx.title) + .disposed(by: disposeBag) + } +} + +extension ComponentTestViewController: UITextFieldDelegate { + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + print(textField.text!) + return true + } } #endif diff --git a/HikingClub/Helper/Components/NDSearchTextField.swift b/HikingClub/Helper/Components/NDSearchTextField.swift index 57dea16..0a36fd8 100644 --- a/HikingClub/Helper/Components/NDSearchTextField.swift +++ b/HikingClub/Helper/Components/NDSearchTextField.swift @@ -92,6 +92,10 @@ final class NDSearchTextField: CodeBasedView { func setPlaceholder(_ placeholder: String) { textField.placeholder = placeholder } + + func setReturnKeyType(_ type: UIReturnKeyType) { + textField.returnKeyType = type + } } extension Reactive where Base: NDSearchTextField { @@ -109,3 +113,11 @@ extension Reactive where Base: NDSearchTextField { } } } + +extension Reactive where Base: NDSearchTextField { + func setDelegate(_ delegate: UITextFieldDelegate) -> Disposable { + RxTextFieldDelegateProxy.installForwardDelegate(delegate, + retainDelegate: false, + onProxyForObject: base.textField) + } +} diff --git a/HikingClub/Helper/Components/NDTabButton.swift b/HikingClub/Helper/Components/NDTabButton.swift index 42c754b..24f1926 100644 --- a/HikingClub/Helper/Components/NDTabButton.swift +++ b/HikingClub/Helper/Components/NDTabButton.swift @@ -19,7 +19,13 @@ final class NDTabButton: CodeBasedView { }() private let titleLabel: UILabel = UILabel() private let subTitleLabel: UILabel = UILabel() - private var isSelected: Bool = false + private var isSelected: Bool = false { + didSet { + setSelected() + tapHandler?(isSelected) + } + } + private var isEnabled: Bool = true /// tap할때 isSelected를 넘겨주는 클로져 var tapHandler: ((Bool) -> Void)? @@ -72,14 +78,21 @@ final class NDTabButton: CodeBasedView { } } - private func toggle() { + func toggle() { isSelected = !isSelected - setSelected() + } + + func setEnabledTouch(_ isEnabled: Bool) { + self.isEnabled = isEnabled + } + + func setSelected(_ isSelected: Bool) { + self.isSelected = isSelected } override func touchesBegan(_ touches: Set, with event: UIEvent?) { super.touchesBegan(touches, with: event) + guard isEnabled else { return } toggle() - tapHandler?(isSelected) } } diff --git a/HikingClub/Helper/Components/NDTextFieldView.swift b/HikingClub/Helper/Components/NDTextFieldView.swift index 5ad84bb..6e2a1f2 100644 --- a/HikingClub/Helper/Components/NDTextFieldView.swift +++ b/HikingClub/Helper/Components/NDTextFieldView.swift @@ -148,6 +148,10 @@ final class NDTextFieldView: UIView { func setPasswordMode() { textField.isSecureTextEntry = true } + + func setReturnKeyType(_ type: UIReturnKeyType) { + textField.returnKeyType = type + } } // MARK: - Rx @@ -167,3 +171,11 @@ extension Reactive where Base: NDTextFieldView { } } } + +extension Reactive where Base: NDTextFieldView { + func setDelegate(_ delegate: UITextFieldDelegate) -> Disposable { + RxTextFieldDelegateProxy.installForwardDelegate(delegate, + retainDelegate: false, + onProxyForObject: base.textField) + } +} diff --git a/HikingClub/Helper/Components/NDToastView.swift b/HikingClub/Helper/Components/NDToastView.swift index 058f5f5..fe3a1dc 100644 --- a/HikingClub/Helper/Components/NDToastView.swift +++ b/HikingClub/Helper/Components/NDToastView.swift @@ -51,6 +51,7 @@ final class NDToastView: UIView, CodeBasedProtocol { titleLabel.setFont(.semiBold16) titleLabel.textColor = .white iconImageView.layer.cornerRadius = 12 + iconImageView.backgroundColor = .white layer.cornerRadius = 8 } @@ -62,12 +63,11 @@ final class NDToastView: UIView, CodeBasedProtocol { switch theme { case let .green(text): backgroundColor = .green500 - iconImageView.backgroundColor = .white iconImageView.setImage(.icon_check_green500_24) titleLabel.text = text case let .red(text): backgroundColor = .red500 - iconImageView.image = UIImage(named: "Pin") + iconImageView.setImage(.icon_exclamation_red500_24) titleLabel.text = text } } diff --git a/HikingClub/Helper/Components/NaviBar.swift b/HikingClub/Helper/Components/NaviBar.swift index 50028ad..2bb7981 100644 --- a/HikingClub/Helper/Components/NaviBar.swift +++ b/HikingClub/Helper/Components/NaviBar.swift @@ -113,4 +113,8 @@ extension Reactive where Base: NaviBar { var tapRightItem: ControlEvent { base.rightButton.rx.tap } + + var title: Binder { + Binder(base) { $0.setTitle($1) } + } } diff --git a/HikingClub/Helper/Components/RxTextFieldDelegateProxy.swift b/HikingClub/Helper/Components/RxTextFieldDelegateProxy.swift new file mode 100644 index 0000000..e95102b --- /dev/null +++ b/HikingClub/Helper/Components/RxTextFieldDelegateProxy.swift @@ -0,0 +1,26 @@ +// +// RxTextFieldDelegateProxy.swift +// HikingClub +// +// Created by 남수김 on 2021/11/02. +// + +import UIKit +import RxCocoa +import RxSwift + +final class RxTextFieldDelegateProxy: DelegateProxy, DelegateProxyType, UITextFieldDelegate { + static func registerKnownImplementations() { + self.register { textField -> RxTextFieldDelegateProxy in + RxTextFieldDelegateProxy(parentObject: textField, delegateProxy: self) + } + } + + static func currentDelegate(for object: UITextField) -> UITextFieldDelegate? { + return object.delegate + } + + static func setCurrentDelegate(_ delegate: UITextFieldDelegate?, to object: UITextField) { + object.delegate = delegate + } +} diff --git a/HikingClub/Helper/Extension/UITableViewCell+.swift b/HikingClub/Helper/Extension/UITableViewCell+.swift new file mode 100644 index 0000000..c03aabc --- /dev/null +++ b/HikingClub/Helper/Extension/UITableViewCell+.swift @@ -0,0 +1,20 @@ +// +// UITableViewCell+.swift +// HikingClub +// +// Created by 남수김 on 2021/11/05. +// + +import UIKit + +extension UITableViewCell { + func selectedColor(_ color: UIColor) { + let selectView: UIView = { + let view = UIView() + view.backgroundColor = color + return view + }() + selectionStyle = .default + selectedBackgroundView = selectView + } +} diff --git a/HikingClub/SupportingFiles/Info.plist b/HikingClub/SupportingFiles/Info.plist index a25e08b..041412f 100644 --- a/HikingClub/SupportingFiles/Info.plist +++ b/HikingClub/SupportingFiles/Info.plist @@ -2,6 +2,8 @@ + UIUserInterfaceStyle + Light NSAppTransportSecurity NSAllowsArbitraryLoads diff --git a/HikingClub/SupportingFiles/Resource/AssetImage.swift b/HikingClub/SupportingFiles/Resource/AssetImage.swift index 281305f..fa9ad32 100644 --- a/HikingClub/SupportingFiles/Resource/AssetImage.swift +++ b/HikingClub/SupportingFiles/Resource/AssetImage.swift @@ -44,6 +44,9 @@ enum AssetImage: String { case icon_trashCan_gray900_24 case icon_footprint_green500_16 case icon_location_green500_16 + case icon_camera_gray500_28 + case icon_threeLines_horizon_gray400_24 + case icon_threeLines_horizon_gray900_24 // MARK: - tabbar diff --git a/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_camera_gray500_28.imageset/Contents.json b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_camera_gray500_28.imageset/Contents.json new file mode 100644 index 0000000..0401bec --- /dev/null +++ b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_camera_gray500_28.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icon_camera_gray500_28.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_camera_gray500_28@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_camera_gray500_28@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_camera_gray500_28.imageset/icon_camera_gray500_28.png b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_camera_gray500_28.imageset/icon_camera_gray500_28.png new file mode 100644 index 0000000..71daeec Binary files /dev/null and b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_camera_gray500_28.imageset/icon_camera_gray500_28.png differ diff --git a/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_camera_gray500_28.imageset/icon_camera_gray500_28@2x.png b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_camera_gray500_28.imageset/icon_camera_gray500_28@2x.png new file mode 100644 index 0000000..7ee92f3 Binary files /dev/null and b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_camera_gray500_28.imageset/icon_camera_gray500_28@2x.png differ diff --git a/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_camera_gray500_28.imageset/icon_camera_gray500_28@3x.png b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_camera_gray500_28.imageset/icon_camera_gray500_28@3x.png new file mode 100644 index 0000000..165fb3c Binary files /dev/null and b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_camera_gray500_28.imageset/icon_camera_gray500_28@3x.png differ diff --git a/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray400_24.imageset/Contents.json b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray400_24.imageset/Contents.json new file mode 100644 index 0000000..bc28889 --- /dev/null +++ b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray400_24.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icon_threeLines_horizon_gray400_24.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_threeLines_horizon_gray400_24@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_threeLines_horizon_gray400_24@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray400_24.imageset/icon_threeLines_horizon_gray400_24.png b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray400_24.imageset/icon_threeLines_horizon_gray400_24.png new file mode 100644 index 0000000..bda8593 Binary files /dev/null and b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray400_24.imageset/icon_threeLines_horizon_gray400_24.png differ diff --git a/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray400_24.imageset/icon_threeLines_horizon_gray400_24@2x.png b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray400_24.imageset/icon_threeLines_horizon_gray400_24@2x.png new file mode 100644 index 0000000..4dd728a Binary files /dev/null and b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray400_24.imageset/icon_threeLines_horizon_gray400_24@2x.png differ diff --git a/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray400_24.imageset/icon_threeLines_horizon_gray400_24@3x.png b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray400_24.imageset/icon_threeLines_horizon_gray400_24@3x.png new file mode 100644 index 0000000..42f4fb6 Binary files /dev/null and b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray400_24.imageset/icon_threeLines_horizon_gray400_24@3x.png differ diff --git a/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray900_24.imageset/Contents.json b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray900_24.imageset/Contents.json new file mode 100644 index 0000000..e6805c5 --- /dev/null +++ b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray900_24.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icon_threeLines_horizon_gray900_24.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_threeLines_horizon_gray900_24@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_threeLines_horizon_gray900_24@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray900_24.imageset/icon_threeLines_horizon_gray900_24.png b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray900_24.imageset/icon_threeLines_horizon_gray900_24.png new file mode 100644 index 0000000..531c8fd Binary files /dev/null and b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray900_24.imageset/icon_threeLines_horizon_gray900_24.png differ diff --git a/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray900_24.imageset/icon_threeLines_horizon_gray900_24@2x.png b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray900_24.imageset/icon_threeLines_horizon_gray900_24@2x.png new file mode 100644 index 0000000..cfd10a4 Binary files /dev/null and b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray900_24.imageset/icon_threeLines_horizon_gray900_24@2x.png differ diff --git a/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray900_24.imageset/icon_threeLines_horizon_gray900_24@3x.png b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray900_24.imageset/icon_threeLines_horizon_gray900_24@3x.png new file mode 100644 index 0000000..22ed9f9 Binary files /dev/null and b/HikingClub/SupportingFiles/Resource/Assets.xcassets/common/icon_threeLines_horizon_gray900_24.imageset/icon_threeLines_horizon_gray900_24@3x.png differ