diff --git a/GEON-PPANG-iOS.xcodeproj/project.pbxproj b/GEON-PPANG-iOS.xcodeproj/project.pbxproj index f97b9818..ceffe8cc 100644 --- a/GEON-PPANG-iOS.xcodeproj/project.pbxproj +++ b/GEON-PPANG-iOS.xcodeproj/project.pbxproj @@ -44,6 +44,8 @@ 097682E72A5CF0080008F4FB /* BakeryFilterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097682E62A5CF0080008F4FB /* BakeryFilterView.swift */; }; 097682E92A5D0B6B0008F4FB /* BakeryListTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097682E82A5D0B6B0008F4FB /* BakeryListTopView.swift */; }; 097682EB2A5D12BD0008F4FB /* BakeryListCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 097682EA2A5D12BD0008F4FB /* BakeryListCollectionViewCell.swift */; }; + 098716B42A6061F500538D05 /* SearchResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 098716B32A6061F500538D05 /* SearchResponseDTO.swift */; }; + 098716B62A60F52200538D05 /* BakeryTypeProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 098716B52A60F52200538D05 /* BakeryTypeProtocol.swift */; }; 0987288D2A5BA1F000A29402 /* BookmarkButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0987288C2A5BA1F000A29402 /* BookmarkButton.swift */; }; 098F32EA2A4200FE0092D09A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 098F32E92A4200FE0092D09A /* Assets.xcassets */; }; 098F32ED2A4200FE0092D09A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 098F32EB2A4200FE0092D09A /* LaunchScreen.storyboard */; }; @@ -55,7 +57,6 @@ 09B13F562A59410C00C0C723 /* CALayer+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B13F552A59410C00C0C723 /* CALayer+.swift */; }; 09B13F582A59433500C0C723 /* TabBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B13F572A59433500C0C723 /* TabBarItem.swift */; }; 09B13F5A2A5946B700C0C723 /* TabBar+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B13F592A5946B700C0C723 /* TabBar+.swift */; }; - 09B71BFC2A59CF3E00076AC2 /* Protocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B71BFB2A59CF3E00076AC2 /* Protocol.swift */; }; 09B71C002A59D50900076AC2 /* HomeTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B71BFF2A59D50900076AC2 /* HomeTopView.swift */; }; 09B71C022A59D99200076AC2 /* SearchTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09B71C012A59D99200076AC2 /* SearchTextField.swift */; }; 09C6264E2A5B29F8002C8110 /* SearchEnum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C6264D2A5B29F8002C8110 /* SearchEnum.swift */; }; @@ -66,6 +67,9 @@ 09CA3EFC2A569E4A0063897A /* URLConstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CA3EFB2A569E4A0063897A /* URLConstant.swift */; }; 09CA3F062A569EB30063897A /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CA3F052A569EB30063897A /* API.swift */; }; 09CA3F082A569EBA0063897A /* Service.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CA3F072A569EBA0063897A /* Service.swift */; }; + 09FD47C82A5DC991002020BD /* SearchNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09FD47C72A5DC991002020BD /* SearchNavigationView.swift */; }; + 09FD47CA2A5DD38D002020BD /* SearchResultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09FD47C92A5DD38D002020BD /* SearchResultView.swift */; }; + 09FD47D22A5DF892002020BD /* EmptyCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09FD47D12A5DF892002020BD /* EmptyCollectionViewCell.swift */; }; 3E16E4F52A57CF3800B813D0 /* WriteReviewDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E16E4F42A57CF3800B813D0 /* WriteReviewDTO.swift */; }; 3E16E4FA2A57D1F400B813D0 /* RecommendationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E16E4F92A57D1F400B813D0 /* RecommendationModel.swift */; }; 3E16E4FC2A57D24900B813D0 /* LikeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E16E4FB2A57D24900B813D0 /* LikeModel.swift */; }; @@ -121,6 +125,8 @@ 097682E62A5CF0080008F4FB /* BakeryFilterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BakeryFilterView.swift; sourceTree = ""; }; 097682E82A5D0B6B0008F4FB /* BakeryListTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BakeryListTopView.swift; sourceTree = ""; }; 097682EA2A5D12BD0008F4FB /* BakeryListCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BakeryListCollectionViewCell.swift; sourceTree = ""; }; + 098716B32A6061F500538D05 /* SearchResponseDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResponseDTO.swift; sourceTree = ""; }; + 098716B52A60F52200538D05 /* BakeryTypeProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BakeryTypeProtocol.swift; sourceTree = ""; }; 0987288C2A5BA1F000A29402 /* BookmarkButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkButton.swift; sourceTree = ""; }; 098F32DD2A4200FD0092D09A /* GEON-PPANG-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "GEON-PPANG-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 098F32E02A4200FD0092D09A /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -136,7 +142,6 @@ 09B13F552A59410C00C0C723 /* CALayer+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CALayer+.swift"; sourceTree = ""; }; 09B13F572A59433500C0C723 /* TabBarItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarItem.swift; sourceTree = ""; }; 09B13F592A5946B700C0C723 /* TabBar+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TabBar+.swift"; sourceTree = ""; }; - 09B71BFB2A59CF3E00076AC2 /* Protocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Protocol.swift; sourceTree = ""; }; 09B71BFF2A59D50900076AC2 /* HomeTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTopView.swift; sourceTree = ""; }; 09B71C012A59D99200076AC2 /* SearchTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchTextField.swift; sourceTree = ""; }; 09C6264D2A5B29F8002C8110 /* SearchEnum.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchEnum.swift; sourceTree = ""; }; @@ -147,6 +152,9 @@ 09CA3EFB2A569E4A0063897A /* URLConstant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLConstant.swift; sourceTree = ""; }; 09CA3F052A569EB30063897A /* API.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = ""; }; 09CA3F072A569EBA0063897A /* Service.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Service.swift; sourceTree = ""; }; + 09FD47C72A5DC991002020BD /* SearchNavigationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchNavigationView.swift; sourceTree = ""; }; + 09FD47C92A5DD38D002020BD /* SearchResultView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultView.swift; sourceTree = ""; }; + 09FD47D12A5DF892002020BD /* EmptyCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmptyCollectionViewCell.swift; sourceTree = ""; }; 3E16E4F42A57CF3800B813D0 /* WriteReviewDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WriteReviewDTO.swift; sourceTree = ""; }; 3E16E4F92A57D1F400B813D0 /* RecommendationModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendationModel.swift; sourceTree = ""; }; 3E16E4FB2A57D24900B813D0 /* LikeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LikeModel.swift; sourceTree = ""; }; @@ -262,6 +270,8 @@ 093214032A5AE3C000875EF6 /* Search */ = { isa = PBXGroup; children = ( + 098716B22A603A8500538D05 /* Model */, + 09FD47C62A5DC97E002020BD /* Views */, 093214052A5AE3D600875EF6 /* ViewControllers */, ); path = Search; @@ -271,6 +281,7 @@ isa = PBXGroup; children = ( 093214072A5AE40900875EF6 /* SearchViewController.swift */, + 09FD47D12A5DF892002020BD /* EmptyCollectionViewCell.swift */, ); path = ViewControllers; sourceTree = ""; @@ -429,6 +440,14 @@ path = Views; sourceTree = ""; }; + 098716B22A603A8500538D05 /* Model */ = { + isa = PBXGroup; + children = ( + 098716B32A6061F500538D05 /* SearchResponseDTO.swift */, + ); + path = Model; + sourceTree = ""; + }; 098F32D42A4200FD0092D09A = { isa = PBXGroup; children = ( @@ -534,11 +553,20 @@ 09CA3EF62A56738A0063897A /* Protocol */ = { isa = PBXGroup; children = ( - 09B71BFB2A59CF3E00076AC2 /* Protocol.swift */, + 098716B52A60F52200538D05 /* BakeryTypeProtocol.swift */, ); path = Protocol; sourceTree = ""; }; + 09FD47C62A5DC97E002020BD /* Views */ = { + isa = PBXGroup; + children = ( + 09FD47C72A5DC991002020BD /* SearchNavigationView.swift */, + 09FD47C92A5DD38D002020BD /* SearchResultView.swift */, + ); + path = Views; + sourceTree = ""; + }; 3E16E4F22A57CE2B00B813D0 /* Model */ = { isa = PBXGroup; children = ( @@ -813,6 +841,7 @@ 090556292A51DBC000752067 /* UIView+.swift in Sources */, 090668FC2A4FF3C600F413FA /* AppDelegate.swift in Sources */, 3E79B1B02A571B4B00D36A26 /* LineView.swift in Sources */, + 09FD47C82A5DC991002020BD /* SearchNavigationView.swift in Sources */, 090668FD2A4FF3C600F413FA /* SceneDelegate.swift in Sources */, 097682DC2A5C83910008F4FB /* CGFloat+.swift in Sources */, 0924632F2A5BA0F200B6F65D /* HomeBakeryCollectionViewCell.swift in Sources */, @@ -847,9 +876,9 @@ 3EA2E1EB2A542151003516A3 /* SizeLiteral.swift in Sources */, 0987288D2A5BA1F000A29402 /* BookmarkButton.swift in Sources */, 090556202A51DB2C00752067 /* UIImage+.swift in Sources */, - 09B71BFC2A59CF3E00076AC2 /* Protocol.swift in Sources */, 0905562D2A51DBE700752067 /* UILabel+.swift in Sources */, 090556252A51DB9600752067 /* UICollectionView+.swift in Sources */, + 098716B62A60F52200538D05 /* BakeryTypeProtocol.swift in Sources */, 09B13F582A59433500C0C723 /* TabBarItem.swift in Sources */, 09B13F502A593CB800C0C723 /* BakeryListViewController.swift in Sources */, 093214022A5AE27800875EF6 /* Utils.swift in Sources */, @@ -871,10 +900,13 @@ 3E79B1B52A571E7100D36A26 /* OptionsCollectionViewCell.swift in Sources */, 090556312A51DDD800752067 /* UITableView+.swift in Sources */, 097682E52A5C99340008F4FB /* BakeryFilterItems.swift in Sources */, + 098716B42A6061F500538D05 /* SearchResponseDTO.swift in Sources */, + 09FD47D22A5DF892002020BD /* EmptyCollectionViewCell.swift in Sources */, 090556272A51DBB100752067 /* NSObject+.swift in Sources */, 3E79B1A02A5546E700D36A26 /* DescriptionCollectionViewCell.swift in Sources */, 3E16E5002A57FFD900B813D0 /* OptionsCollectionViewHeader.swift in Sources */, 3E16E4F52A57CF3800B813D0 /* WriteReviewDTO.swift in Sources */, + 09FD47CA2A5DD38D002020BD /* SearchResultView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/GEON-PPANG-iOS/Global/Literals/Strings.swift b/GEON-PPANG-iOS/Global/Literals/Strings.swift index 0850d14b..852cf0eb 100644 --- a/GEON-PPANG-iOS/Global/Literals/Strings.swift +++ b/GEON-PPANG-iOS/Global/Literals/Strings.swift @@ -47,5 +47,6 @@ struct I18N { static let nutfree = "넛프리" static let vegan = "비건빵" static let noSugar = "저당, 무설탕" + static let defaultFilter = "기본순" } } diff --git a/GEON-PPANG-iOS/Global/Protocol/BakeryTypeProtocol.swift b/GEON-PPANG-iOS/Global/Protocol/BakeryTypeProtocol.swift new file mode 100644 index 00000000..8182d7e8 --- /dev/null +++ b/GEON-PPANG-iOS/Global/Protocol/BakeryTypeProtocol.swift @@ -0,0 +1,46 @@ +// +// BakeryTypeProtocol.swift +// GEON-PPANG-iOS +// +// Created by JEONGEUN KIM on 2023/07/14. +// + +import Foundation + +protocol BakeryTypeProtocol { + var isGlutenFree: Bool { get } + var isNutFree: Bool { get } + var isVegan: Bool { get } + var isSugarFree: Bool { get } +} + +protocol BakeryListProtocol { + var bakeryName: String { get } + var bookmarkCount: Int { get } + var isBooked: Bool { get } + + var isHACCP: Bool { get } + var isVegan: Bool { get } + var isNonGMO: Bool { get } + + var firstNearStation: String { get } + var secondNearStation: String? { get } + + var breadType: BreadType { get } +} + +struct BakeryListProtocols: BakeryListProtocol { + var bakeryName: String + var bookmarkCount: Int + var isBooked: Bool + + var isHACCP: Bool + var isVegan: Bool + var isNonGMO: Bool + + var firstNearStation: String + var secondNearStation: String? = "" + + var breadType: BreadType + +} diff --git a/GEON-PPANG-iOS/Global/Protocol/Protocol.swift b/GEON-PPANG-iOS/Global/Protocol/Protocol.swift deleted file mode 100644 index 924a7429..00000000 --- a/GEON-PPANG-iOS/Global/Protocol/Protocol.swift +++ /dev/null @@ -1,8 +0,0 @@ -// -// Protocol.swift -// GEON-PPANG-iOS -// -// Created by JEONGEUN KIM on 2023/07/09. -// - -import Foundation diff --git a/GEON-PPANG-iOS/Presentation/BakeryList/ViewControllers/BakeryListCollectionViewCell.swift b/GEON-PPANG-iOS/Presentation/BakeryList/ViewControllers/BakeryListCollectionViewCell.swift index b67344eb..7781fb25 100644 --- a/GEON-PPANG-iOS/Presentation/BakeryList/ViewControllers/BakeryListCollectionViewCell.swift +++ b/GEON-PPANG-iOS/Presentation/BakeryList/ViewControllers/BakeryListCollectionViewCell.swift @@ -109,12 +109,12 @@ final class BakeryListCollectionViewCell: UICollectionViewCell { } } - func updateUI(data: BakeryListResponseDTO, index: Int) { + func updateUI(data: T, index: Int) { self.index = index bakeryTitle.text = data.bakeryName bookMarkButton.getCount(data.bookmarkCount) bookMarkButton.updateData = { [weak self] status in - guard let self = self else { return } + guard let self = self else { return } self.updateData?(status, self.index) } bookMarkButton.isSelected = data.isBooked @@ -123,38 +123,38 @@ final class BakeryListCollectionViewCell: UICollectionViewCell { regionStackView.removeSecondRegion() } regionStackView.getRegionName(data.firstNearStation, data.secondNearStation ?? "") - - if self.ingredientList[index].breadType.isGlutenFree { - self.breadTypeTag.append(I18N.BakeryList.glutenfree) + + if data.breadType.isGlutenFree { + breadTypeTag.append(I18N.BakeryList.glutenfree) } - - if self.ingredientList[index].breadType.isNutFree { - self.breadTypeTag.append(I18N.BakeryList.nutfree) + + if data.breadType.isNutFree { + breadTypeTag.append(I18N.BakeryList.nutfree) } - - if self.ingredientList[index].breadType.isVegan { - self.breadTypeTag.append(I18N.BakeryList.vegan) + + if data.breadType.isVegan { + breadTypeTag.append(I18N.BakeryList.vegan) } - - if self.ingredientList[index].breadType.isSugarFree { - self.breadTypeTag.append(I18N.BakeryList.noSugar) + + if data.breadType.isSugarFree { + breadTypeTag.append(I18N.BakeryList.noSugar) } - + collectionView.snp.remakeConstraints { - $0.height.equalTo(getHeight(self.breadTypeTag)) + $0.height.equalTo(getHeight(breadTypeTag)) $0.top.equalTo(bakeryTitle.snp.bottom).offset(10) $0.leading.equalTo(bakeryImage.snp.trailing).offset(14) $0.trailing.equalToSuperview().offset(-70) } } - + func getViewType(_ type: BakeryViewType) { bakeryViewType = type } - + func defaultViewButton() { addSubview(bookMarkButton) - + bookMarkButton.do { $0.configuration?.imagePlacement = NSDirectionalRectEdge.top $0.configuration?.imagePadding = 4 @@ -163,27 +163,27 @@ final class BakeryListCollectionViewCell: UICollectionViewCell { print("default") }, for: .touchUpInside) } - + bookMarkButton.snp.makeConstraints { $0.centerY.equalToSuperview() $0.trailing.equalToSuperview().offset(-24) $0.size.equalTo(34) } } - + func getHeight(_ list: [String]) -> CGFloat { var width: CGFloat = 0 list.forEach { width += $0.size(withAttributes: [NSAttributedString.Key.font: UIFont.pretendardMedium(13)]).width + 4 } width -= 4 - + return width < (UIScreen.main.bounds.width - 206) ? 25 : 60 } - + func reviewViewButton() { addSubview(arrowButton) - + regionStackView.getBackgroundColor(.gbbGray700!) arrowButton.do { $0.setImage(.rightArrowIcon, for: .normal) @@ -191,7 +191,7 @@ final class BakeryListCollectionViewCell: UICollectionViewCell { print("review") }, for: .touchUpInside) } - + arrowButton.snp.makeConstraints { $0.centerY.equalToSuperview() $0.trailing.equalToSuperview().offset(-12) diff --git a/GEON-PPANG-iOS/Presentation/BakeryList/ViewControllers/BakeryListViewController.swift b/GEON-PPANG-iOS/Presentation/BakeryList/ViewControllers/BakeryListViewController.swift index 4e1baf1c..42b091b4 100644 --- a/GEON-PPANG-iOS/Presentation/BakeryList/ViewControllers/BakeryListViewController.swift +++ b/GEON-PPANG-iOS/Presentation/BakeryList/ViewControllers/BakeryListViewController.swift @@ -75,7 +75,7 @@ final class BakeryListViewController: BaseViewController { var config = UICollectionLayoutListConfiguration(appearance: .plain) config.backgroundColor = .clear config.showsSeparators = true - + let layout = UICollectionViewCompositionalLayout.list(using: config) return layout } @@ -84,7 +84,20 @@ final class BakeryListViewController: BaseViewController { dataSource = DataSource(collectionView: bakeryListCollectionView, cellProvider: { collectionView, indexPath, item in let cell: BakeryListCollectionViewCell = collectionView.dequeueReusableCell(for: indexPath) cell.getViewType(.defaultType) - cell.updateUI(data: item, index: indexPath.item) + if let bakeryListItem = item as? BakeryListResponseDTO { + let bakeryListProtocols = BakeryListProtocols( + bakeryName: bakeryListItem.bakeryName, + bookmarkCount: bakeryListItem.bookmarkCount, + isBooked: bakeryListItem.isBooked, + isHACCP: bakeryListItem.isHACCP, + isVegan: bakeryListItem.isVegan, + isNonGMO: bakeryListItem.isNonGMO, + firstNearStation: bakeryListItem.firstNearStation, + secondNearStation: bakeryListItem.secondNearStation ?? "", + breadType: bakeryListItem.breadType + ) + cell.updateUI(data: bakeryListProtocols, index: indexPath.item) + } return cell }) } diff --git a/GEON-PPANG-iOS/Presentation/BakeryList/ViewControllers/Model/BakeryListResponseDTO.swift b/GEON-PPANG-iOS/Presentation/BakeryList/ViewControllers/Model/BakeryListResponseDTO.swift index fad727b5..d886f93e 100644 --- a/GEON-PPANG-iOS/Presentation/BakeryList/ViewControllers/Model/BakeryListResponseDTO.swift +++ b/GEON-PPANG-iOS/Presentation/BakeryList/ViewControllers/Model/BakeryListResponseDTO.swift @@ -6,6 +6,7 @@ // // MARK: - BakeryListResponseDTO + struct BakeryListResponseDTO: Hashable { let bakeryID: Int let bakeryName: String @@ -22,7 +23,7 @@ struct BakeryListResponseDTO: Hashable { // MARK: - BreadType -struct BreadType: Hashable { +struct BreadType: Hashable, BakeryTypeProtocol { let breadTypeID: Int let breadTypeName: String let isGlutenFree: Bool diff --git a/GEON-PPANG-iOS/Presentation/BakeryList/Views/BakeryFilterView.swift b/GEON-PPANG-iOS/Presentation/BakeryList/Views/BakeryFilterView.swift index 5622a2a9..199029ac 100644 --- a/GEON-PPANG-iOS/Presentation/BakeryList/Views/BakeryFilterView.swift +++ b/GEON-PPANG-iOS/Presentation/BakeryList/Views/BakeryFilterView.swift @@ -61,7 +61,8 @@ final class BakeryFilterView: UIView { $0.configuration?.background.strokeColor = .gbbGray200 $0.configuration?.baseForegroundColor = .black $0.configuration?.image = .swapIcon - $0.configuration?.attributedTitle = AttributedString("기본순", attributes: AttributeContainer([.font: UIFont.pretendardBold(13)])) + $0.configuration?.attributedTitle = AttributedString(I18N.BakeryList.defaultFilter, + attributes: AttributeContainer([.font: UIFont.pretendardBold(13)])) $0.configuration?.cornerStyle = .capsule $0.configuration?.imagePadding = 5 $0.configuration?.contentInsets = .zero diff --git a/GEON-PPANG-iOS/Presentation/BakeryList/Views/BakeryListTopView.swift b/GEON-PPANG-iOS/Presentation/BakeryList/Views/BakeryListTopView.swift index fc622b9b..3e6a98bc 100644 --- a/GEON-PPANG-iOS/Presentation/BakeryList/Views/BakeryListTopView.swift +++ b/GEON-PPANG-iOS/Presentation/BakeryList/Views/BakeryListTopView.swift @@ -19,7 +19,6 @@ final class BakeryListTopView: UIView { private let bakeryIcon = UIImageView() private let searchButton = UIButton() - // MARK: - Life Cycle override init(frame: CGRect) { diff --git a/GEON-PPANG-iOS/Presentation/Home/ViewControllers/HomeBottomCollectionViewCell.swift b/GEON-PPANG-iOS/Presentation/Home/ViewControllers/HomeBottomCollectionViewCell.swift index 2c3da14e..735a494e 100644 --- a/GEON-PPANG-iOS/Presentation/Home/ViewControllers/HomeBottomCollectionViewCell.swift +++ b/GEON-PPANG-iOS/Presentation/Home/ViewControllers/HomeBottomCollectionViewCell.swift @@ -42,7 +42,7 @@ final class HomeBottomCollectionViewCell: UICollectionViewCell { $0.textAlignment = .left $0.numberOfLines = 0 $0.basic(text: I18N.Home.bottomSectionTitle, - font: .pretendardMedium(11), + font: .captionM2!, color: .gbbGray300!) } diff --git a/GEON-PPANG-iOS/Presentation/Home/ViewControllers/HomeReviewCollectionViewCell.swift b/GEON-PPANG-iOS/Presentation/Home/ViewControllers/HomeReviewCollectionViewCell.swift index 67c80d1f..6f7855db 100644 --- a/GEON-PPANG-iOS/Presentation/Home/ViewControllers/HomeReviewCollectionViewCell.swift +++ b/GEON-PPANG-iOS/Presentation/Home/ViewControllers/HomeReviewCollectionViewCell.swift @@ -33,7 +33,7 @@ final class HomeReviewCollectionViewCell: UICollectionViewCell { setLayout() setUI() } - + required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } diff --git a/GEON-PPANG-iOS/Presentation/Search/Model/SearchResponseDTO.swift b/GEON-PPANG-iOS/Presentation/Search/Model/SearchResponseDTO.swift new file mode 100644 index 00000000..9651fd88 --- /dev/null +++ b/GEON-PPANG-iOS/Presentation/Search/Model/SearchResponseDTO.swift @@ -0,0 +1,43 @@ +// +// SearchResponseDTO.swift +// GEON-PPANG-iOS +// +// Created by JEONGEUN KIM on 2023/07/14. +// + +import Foundation + +// MARK: - SearchResponseDTO + +struct SearchResponseDTO: Hashable { + let resultCount: Int + let bakeryList: [SearchBakeryList] +} + +// MARK: - SearchBakeryList + +struct SearchBakeryList: Hashable, BakeryListProtocol { + let bakeryID: Int + let bakeryName: String + let isHACCP: Bool + let isVegan: Bool + let isNonGMO: Bool + var breadType: BreadType + let firstNearStation: String + var secondNearStation: String? + let isBooked: Bool + let bookmarkCount: Int + let bakeryPicture: String +} + +extension SearchResponseDTO { + static let item: [SearchResponseDTO] = [SearchResponseDTO(resultCount: 0, bakeryList: SearchBakeryList.searchBakeryItem)] +} + +extension SearchBakeryList { + static let searchBakeryItem: [SearchBakeryList] = [SearchBakeryList(bakeryID: 1, bakeryName: "히히히히", isHACCP: true, isVegan: true, isNonGMO: true, breadType: .searchBreadType, firstNearStation: "헤헤", secondNearStation: "두번째역", isBooked: true, bookmarkCount: 5, bakeryPicture: "")] +} + +extension BreadType { + static let searchBreadType: BreadType = BreadType(breadTypeID: 3, breadTypeName: "글루텐프리", isGlutenFree: true, isVegan: true, isNutFree: false, isSugarFree: true) +} diff --git a/GEON-PPANG-iOS/Presentation/Search/ViewControllers/EmptyCollectionViewCell.swift b/GEON-PPANG-iOS/Presentation/Search/ViewControllers/EmptyCollectionViewCell.swift new file mode 100644 index 00000000..636d07b4 --- /dev/null +++ b/GEON-PPANG-iOS/Presentation/Search/ViewControllers/EmptyCollectionViewCell.swift @@ -0,0 +1,104 @@ +// +// EmptyCollectionViewCell.swift +// GEON-PPANG-iOS +// +// Created by JEONGEUN KIM on 2023/07/12. +// + +import UIKit + +import SnapKit +import Then + +enum EmptyType: String { + case noReview = "작성된 리뷰가 없어요!" + case noBookMark = "저장 목록이 없어요!" + case noSearch = "검색결과가 없어요\n다른 키워드로 검색해보세요!" + case initialize = "궁금하신 건빵집을\n검색해보세요!" + + var icon: UIImage { + switch self { + case .noReview: return .noReviewImage + case .noBookMark: return .noBookmarkImage + case .noSearch: return .noSearchResultImage + case .initialize: return .searchImage + } + } +} + +final class EmptyCollectionViewCell: UICollectionViewCell { + + // MARK: - Property + + private var emptyType: EmptyType = .initialize + + // MARK: - UI Property + + private let emptyIcon = UIImageView() + private let emptyLabel = UILabel() + + // MARK: - Life Cycle + + override init(frame: CGRect) { + super.init(frame: .zero) + + setLayout() + setUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // MARK: - Setting + + private func setLayout() { + addSubviews(emptyIcon, emptyLabel) + + emptyIcon.snp.makeConstraints { + $0.size.equalTo(CGSize(width: 154, height: 132)) + $0.centerX.equalToSuperview() + } + + emptyLabel.snp.makeConstraints { + $0.top.equalTo(emptyIcon.snp.bottom).offset(20) + $0.centerX.equalToSuperview() + + switch emptyType { + case .initialize, .noSearch: + $0.centerY.equalToSuperview().inset(-33) + case .noReview, .noBookMark: + $0.centerY.equalToSuperview().inset(-22) + } + } + } + + private func setUI() { + emptyIcon.do { + $0.contentMode = .scaleAspectFit + } + + emptyLabel.do { + $0.numberOfLines = 0 + $0.textAlignment = .center + $0.basic(font: .title2!, color: .gbbGray300!) + } + } + + func getViewType(_ type: EmptyType) { + emptyType = type + emptyIcon.image = type.icon + emptyLabel.text = type.rawValue + + switch type { + case .initialize, .noBookMark, .noReview: + return emptyLabel.basic(text: emptyType.rawValue, font: .title2!, color: .gbbGray300!) + case .noSearch: + return emptyLabel.partFontChange(targetString: "다른 키워드로 검색해보세요!", font: .subHead!) + } + } + + func getEmtyText(_ text: String) { + emptyLabel.text = text + } +} diff --git a/GEON-PPANG-iOS/Presentation/Search/ViewControllers/SearchViewController.swift b/GEON-PPANG-iOS/Presentation/Search/ViewControllers/SearchViewController.swift index abe039ad..af5b0c00 100644 --- a/GEON-PPANG-iOS/Presentation/Search/ViewControllers/SearchViewController.swift +++ b/GEON-PPANG-iOS/Presentation/Search/ViewControllers/SearchViewController.swift @@ -7,11 +7,182 @@ import UIKit -final class SearchViewController: UIViewController { +import SnapKit +import Then +final class SearchViewController: BaseViewController { + + // MARK: - Property + + enum Section { + case initial, main, empty + } + private lazy var safeArea = self.view.safeAreaLayoutGuide + typealias Item = AnyHashable + typealias DataSource = UICollectionViewDiffableDataSource + private var dataSource: DataSource? + private var searchList: [SearchResponseDTO] = SearchResponseDTO.item + private var searchBakeryList: [SearchBakeryList] = SearchBakeryList.searchBakeryItem + private var currentSection: [Section] = [.initial] + + // MARK: - UI Property + + private let naviView = SearchNavigationView() + private let searchResultView = SearchResultView() + private lazy var collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout()) + + // MARK: - Life Cycle + override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = .purple + setRegistration() + setDataSource() + setReloadData() + } + + // MARK: - Setting + + override func touchesBegan(_ touches: Set, with event: UIEvent?) { + + self.view.endEditing(true) + } + + override func setLayout() { + view.addSubviews(naviView, searchResultView, collectionView) + + naviView.snp.makeConstraints { + $0.top.equalTo(safeArea) + $0.directionalHorizontalEdges.equalTo(safeArea) + $0.height.equalTo(convertByHeightRatio(68)) + } + + searchResultView.snp.makeConstraints { + $0.top.equalTo(naviView.snp.bottom) + $0.directionalHorizontalEdges.equalTo(safeArea) + $0.height.equalTo(convertByHeightRatio(55)) + } + + collectionView.snp.makeConstraints { + $0.top.equalTo(searchResultView.snp.bottom) + $0.directionalHorizontalEdges.equalTo(safeArea) + $0.bottom.equalToSuperview() + } + } + + override func setUI() { + naviView.do { + $0.dismissClosure = { + self.navigationController?.popViewController(animated: true) + } + } + searchResultView.do { + $0.updateUI(count: 3) + $0.isHidden = true + } + collectionView.do { + $0.backgroundColor = .clear + $0.isScrollEnabled = false + } + } + + private func setRegistration() { + collectionView.register(cell: EmptyCollectionViewCell.self) + collectionView.register(cell: BakeryListCollectionViewCell.self) + } + + private func setDataSource() { + dataSource = DataSource(collectionView: collectionView, cellProvider: { collectionView, indexPath, item in + let section = self.dataSource?.snapshot().sectionIdentifiers[indexPath.section] + switch section { + case .initial: + let cell: EmptyCollectionViewCell = collectionView.dequeueReusableCell(for: indexPath) + cell.getViewType(.initialize) + return cell + case .empty: + let cell: EmptyCollectionViewCell = collectionView.dequeueReusableCell(for: indexPath) + cell.getViewType(.noSearch) + return cell + case .main, .none: + let cell: BakeryListCollectionViewCell = collectionView.dequeueReusableCell(for: indexPath) + cell.getViewType(.defaultType) + if let searchBakeryItem = item as? SearchBakeryList { + let bakeryListProtocols = BakeryListProtocols( + bakeryName: searchBakeryItem.bakeryName, + bookmarkCount: searchBakeryItem.bookmarkCount, + isBooked: searchBakeryItem.isBooked, + isHACCP: searchBakeryItem.isHACCP, + isVegan: searchBakeryItem.isVegan, + isNonGMO: searchBakeryItem.isNonGMO, + firstNearStation: searchBakeryItem.firstNearStation, + secondNearStation: searchBakeryItem.secondNearStation ?? "", + breadType: searchBakeryItem.breadType + ) + cell.updateUI(data: bakeryListProtocols, index: indexPath.item) + } + return cell + } + }) + } + + private func setReloadData() { + var snapshot = NSDiffableDataSourceSnapshot() + defer { dataSource?.apply(snapshot, animatingDifferences: false)} + snapshot.appendSections([.initial]) + snapshot.appendItems([0]) + } + + private func updateDataSource(data: SearchResponseDTO) { + guard var snapshot = dataSource?.snapshot() else { return } + if data.resultCount == 0 { + searchResultView.isHidden = true + snapshot.deleteSections(currentSection) + snapshot.appendItems([0], toSection: .empty) + currentSection = [.empty] + dataSource?.apply(snapshot) + } else { + searchResultView.isHidden = false + snapshot.deleteSections(currentSection) + snapshot.appendItems(searchBakeryList, toSection: .main) + currentSection = [.main] + dataSource?.apply(snapshot) + } + } + + private func layout() -> UICollectionViewLayout { + + let layout = UICollectionViewCompositionalLayout { sectionIndex, layoutEnvirnment in + let section = self.dataSource?.snapshot().sectionIdentifiers[sectionIndex] + switch section { + case .main: + var config = UICollectionLayoutListConfiguration(appearance: .plain) + config.backgroundColor = .clear + config.showsSeparators = true + + let layoutSection = NSCollectionLayoutSection.list(using: config, layoutEnvironment: layoutEnvirnment) + return layoutSection + case .initial, .empty, .none: + return self.normalSection() + } + } + return layout + } + + private func normalSection() -> NSCollectionLayoutSection { + let item = NSCollectionLayoutItem(layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .fractionalHeight(1)) + ) + let group = NSCollectionLayoutGroup.vertical( + layoutSize: .init( + widthDimension: .fractionalWidth(1), + heightDimension: .fractionalHeight(1) + ), + subitem: item, + count: 1 + ) + let section = NSCollectionLayoutSection(group: group) + return section } + } diff --git a/GEON-PPANG-iOS/Presentation/Search/Views/SearchNavigationView.swift b/GEON-PPANG-iOS/Presentation/Search/Views/SearchNavigationView.swift new file mode 100644 index 00000000..1a42b678 --- /dev/null +++ b/GEON-PPANG-iOS/Presentation/Search/Views/SearchNavigationView.swift @@ -0,0 +1,66 @@ +// +// SearchNavigationView.swift +// GEON-PPANG-iOS +// +// Created by JEONGEUN KIM on 2023/07/12. +// + +import UIKit + +import SnapKit +import Then + +final class SearchNavigationView: UIView { + + // MARK: - Property + + var dismissClosure: (() -> Void)? + + // MARK: - UI Property + + private lazy var backButton = UIButton() + private let searchTextField = SearchTextField() + + // MARK: - Life Cycle + + override init(frame: CGRect) { + super.init(frame: .zero) + + setLayout() + setUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // MARK: - Setting + + private func setLayout() { + addSubviews(backButton, searchTextField) + + backButton.snp.makeConstraints { + $0.top.equalToSuperview().offset(10) + $0.leading.equalToSuperview().offset(5) + $0.size.equalTo(48) + } + + searchTextField.snp.makeConstraints { + $0.directionalVerticalEdges.equalToSuperview().inset(10) + $0.leading.equalTo(backButton.snp.trailing) + $0.trailing.equalToSuperview().inset(24) + } + } + + private func setUI() { + searchTextField.do { + $0.viewType(.search) + } + backButton.do { + $0.setImage(.leftArrowIcon, for: .normal) + $0.addAction(UIAction { [weak self] _ in + self?.dismissClosure?() + }, for: .touchUpInside) + } + } +} diff --git a/GEON-PPANG-iOS/Presentation/Search/Views/SearchResultView.swift b/GEON-PPANG-iOS/Presentation/Search/Views/SearchResultView.swift new file mode 100644 index 00000000..1f32a154 --- /dev/null +++ b/GEON-PPANG-iOS/Presentation/Search/Views/SearchResultView.swift @@ -0,0 +1,64 @@ +// +// SearchResultView.swift +// GEON-PPANG-iOS +// +// Created by JEONGEUN KIM on 2023/07/12. +// + +import UIKit + +import SnapKit +import Then + +final class SearchResultView: UIView { + + // MARK: - UI Property + + private let resultLabel = UILabel() + private let lineView = UIView() + + // MARK: - Life Cycle + + override init(frame: CGRect) { + super.init(frame: .zero) + + setLayout() + setUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // MARK: - Setting + + private func setLayout() { + addSubviews(resultLabel, lineView) + + resultLabel.snp.makeConstraints { + $0.top.equalToSuperview().offset(12) + $0.leading.equalToSuperview().offset(24) + } + + lineView.snp.makeConstraints { + $0.height.equalTo(1) + $0.directionalHorizontalEdges.equalToSuperview() + $0.bottom.equalToSuperview() + } + } + + private func setUI() { + resultLabel.do { + $0.basic(font: .headLine!, color: .gbbGray600!) + } + + lineView.do { + $0.makeBorder(width: 1, color: .gbbGray200!) + } + } + + func updateUI(count: Int) { + resultLabel.text = "건빵집 결과 \(count)개" + resultLabel.partColorChange(targetString: "\(count)개", textColor: .gbbPoint1!) + } +} diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/Contents.json b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/Contents.json index 3d0a8af5..9fecf89f 100644 --- a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/Contents.json +++ b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/Contents.json @@ -1,17 +1,15 @@ { "images" : [ { - "filename" : "img_no_bookmark@1x.png", + "filename" : "img_no_bookmark.svg", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "img_no_bookmark@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "img_no_bookmark@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/img_no_bookmark.svg b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/img_no_bookmark.svg new file mode 100644 index 00000000..c0193287 --- /dev/null +++ b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/img_no_bookmark.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/img_no_bookmark@1x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/img_no_bookmark@1x.png deleted file mode 100644 index 24ee0839..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/img_no_bookmark@1x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/img_no_bookmark@2x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/img_no_bookmark@2x.png deleted file mode 100644 index 37fd3a6a..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/img_no_bookmark@2x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/img_no_bookmark@3x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/img_no_bookmark@3x.png deleted file mode 100644 index 4d9770dc..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_bookmark.imageset/img_no_bookmark@3x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_myreview.imageset/Contents.json b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_myreview.imageset/Contents.json deleted file mode 100644 index b96c65ab..00000000 --- a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_myreview.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "img_no_myreview@1x.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "img_no_myreview@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "img_no_myreview@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_myreview.imageset/img_no_myreview@1x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_myreview.imageset/img_no_myreview@1x.png deleted file mode 100644 index 84342b8b..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_myreview.imageset/img_no_myreview@1x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_myreview.imageset/img_no_myreview@2x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_myreview.imageset/img_no_myreview@2x.png deleted file mode 100644 index 11510278..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_myreview.imageset/img_no_myreview@2x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_myreview.imageset/img_no_myreview@3x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_myreview.imageset/img_no_myreview@3x.png deleted file mode 100644 index 282e6579..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_myreview.imageset/img_no_myreview@3x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/Contents.json b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/Contents.json index ef7a2d3f..5eef1317 100644 --- a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/Contents.json +++ b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/Contents.json @@ -1,17 +1,15 @@ { "images" : [ { - "filename" : "img_no_review@1x.png", + "filename" : "img_no_review.svg", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "img_no_review@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "img_no_review@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/img_no_review.svg b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/img_no_review.svg new file mode 100644 index 00000000..8b910959 --- /dev/null +++ b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/img_no_review.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/img_no_review@1x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/img_no_review@1x.png deleted file mode 100644 index 5db2cb60..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/img_no_review@1x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/img_no_review@2x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/img_no_review@2x.png deleted file mode 100644 index 0e627de6..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/img_no_review@2x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/img_no_review@3x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/img_no_review@3x.png deleted file mode 100644 index ca594fba..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_review.imageset/img_no_review@3x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/Contents.json b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/Contents.json index b943180a..77772d8b 100644 --- a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/Contents.json +++ b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/Contents.json @@ -1,17 +1,15 @@ { "images" : [ { - "filename" : "img_no_search_result@1x.png", + "filename" : "img_no_search_result.svg", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "img_no_search_result@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "img_no_search_result@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/img_no_search_result.svg b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/img_no_search_result.svg new file mode 100644 index 00000000..bdc1499d --- /dev/null +++ b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/img_no_search_result.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/img_no_search_result@1x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/img_no_search_result@1x.png deleted file mode 100644 index ef16cdf7..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/img_no_search_result@1x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/img_no_search_result@2x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/img_no_search_result@2x.png deleted file mode 100644 index e3e1ecff..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/img_no_search_result@2x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/img_no_search_result@3x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/img_no_search_result@3x.png deleted file mode 100644 index 5eca8263..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_no_search_result.imageset/img_no_search_result@3x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/Contents.json b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/Contents.json index de222f00..0b5586a5 100644 --- a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/Contents.json +++ b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/Contents.json @@ -1,17 +1,15 @@ { "images" : [ { - "filename" : "img_search@1x.png", + "filename" : "img_search.svg", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "img_search@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "img_search@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/img_search.svg b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/img_search.svg new file mode 100644 index 00000000..80c697e6 --- /dev/null +++ b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/img_search.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/img_search@1x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/img_search@1x.png deleted file mode 100644 index a147d439..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/img_search@1x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/img_search@2x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/img_search@2x.png deleted file mode 100644 index a26c3663..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/img_search@2x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/img_search@3x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/img_search@3x.png deleted file mode 100644 index bd3002d5..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_search.imageset/img_search@3x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/Contents.json b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/Contents.json index 57eac8a2..43e43fa3 100644 --- a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/Contents.json +++ b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/Contents.json @@ -1,17 +1,15 @@ { "images" : [ { - "filename" : "img_server_maintenance@1x.png", + "filename" : "img_server_maintenance.svg", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "img_server_maintenance@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "img_server_maintenance@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/img_server_maintenance.svg b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/img_server_maintenance.svg new file mode 100644 index 00000000..1006e586 --- /dev/null +++ b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/img_server_maintenance.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/img_server_maintenance@1x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/img_server_maintenance@1x.png deleted file mode 100644 index b0669261..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/img_server_maintenance@1x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/img_server_maintenance@2x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/img_server_maintenance@2x.png deleted file mode 100644 index 08bbd7e7..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/img_server_maintenance@2x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/img_server_maintenance@3x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/img_server_maintenance@3x.png deleted file mode 100644 index 90cd7e65..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_server_maintenance.imageset/img_server_maintenance@3x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/Contents.json b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/Contents.json index b271cd8e..b6073907 100644 --- a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/Contents.json +++ b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/Contents.json @@ -1,17 +1,15 @@ { "images" : [ { - "filename" : "img_welcome@1x.png", + "filename" : "img_welcome.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "img_welcome@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "img_welcome@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/img_welcome.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/img_welcome.png new file mode 100644 index 00000000..8ef08791 Binary files /dev/null and b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/img_welcome.png differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/img_welcome@1x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/img_welcome@1x.png deleted file mode 100644 index b916b028..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/img_welcome@1x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/img_welcome@2x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/img_welcome@2x.png deleted file mode 100644 index 7981ffdd..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/img_welcome@2x.png and /dev/null differ diff --git a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/img_welcome@3x.png b/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/img_welcome@3x.png deleted file mode 100644 index 9f56775b..00000000 Binary files a/GEON-PPANG-iOS/Resource/Assets/Assets.xcassets/images/img_welcome.imageset/img_welcome@3x.png and /dev/null differ