Skip to content

Commit

Permalink
Merge pull request #30 from GEON-PPANG/feat/#16-review-view
Browse files Browse the repository at this point in the history
[Feat] #16 - 리뷰 작성 VC UI 우선 구현
  • Loading branch information
seongmin221 authored Jul 12, 2023
2 parents b029cec + f02dfd5 commit 85fe523
Show file tree
Hide file tree
Showing 15 changed files with 945 additions and 0 deletions.
1 change: 1 addition & 0 deletions .swiftlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ disabled_rules:

opt_in_rules:
- mark
- todo

excluded:
- GEON-PPANG-iOS/Application
Expand Down
102 changes: 102 additions & 0 deletions GEON-PPANG-iOS.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,18 @@
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 */; };
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 */; };
3E16E4FE2A57F06D00B813D0 /* OptionsCollectionViewFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E16E4FD2A57F06D00B813D0 /* OptionsCollectionViewFlowLayout.swift */; };
3E16E5002A57FFD900B813D0 /* OptionsCollectionViewHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E16E4FF2A57FFD900B813D0 /* OptionsCollectionViewHeader.swift */; };
3E16E5022A58176800B813D0 /* ReviewDetailTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E16E5012A58176800B813D0 /* ReviewDetailTextView.swift */; };
3E79B19D2A54523D00D36A26 /* BackButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E79B19C2A54523D00D36A26 /* BackButton.swift */; };
3E79B1A62A566F6400D36A26 /* WriteReviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E79B1A52A566F6400D36A26 /* WriteReviewViewController.swift */; };
3E79B1AE2A56F14A00D36A26 /* BakeryOverviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E79B1AD2A56F14A00D36A26 /* BakeryOverviewView.swift */; };
3E79B1B02A571B4B00D36A26 /* LineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E79B1AF2A571B4B00D36A26 /* LineView.swift */; };
3E79B1B22A571E1F00D36A26 /* OptionsCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E79B1B12A571E1F00D36A26 /* OptionsCollectionView.swift */; };
3E79B1B52A571E7100D36A26 /* OptionsCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E79B1B42A571E7100D36A26 /* OptionsCollectionViewCell.swift */; };
3E79B1A02A5546E700D36A26 /* DescriptionCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E79B19F2A5546E700D36A26 /* DescriptionCollectionViewCell.swift */; };
3EA2E1E32A53E88B003516A3 /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA2E1E22A53E88B003516A3 /* BaseViewController.swift */; };
3EA2E1E92A541AEB003516A3 /* CustomNavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA2E1E82A541AEB003516A3 /* CustomNavigationBar.swift */; };
Expand Down Expand Up @@ -122,8 +133,19 @@
09CA3EFB2A569E4A0063897A /* URLConstant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLConstant.swift; sourceTree = "<group>"; };
09CA3F052A569EB30063897A /* API.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = "<group>"; };
09CA3F072A569EBA0063897A /* Service.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Service.swift; sourceTree = "<group>"; };
3E16E4F42A57CF3800B813D0 /* WriteReviewDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WriteReviewDTO.swift; sourceTree = "<group>"; };
3E16E4F92A57D1F400B813D0 /* RecommendationModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendationModel.swift; sourceTree = "<group>"; };
3E16E4FB2A57D24900B813D0 /* LikeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LikeModel.swift; sourceTree = "<group>"; };
3E16E4FD2A57F06D00B813D0 /* OptionsCollectionViewFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptionsCollectionViewFlowLayout.swift; sourceTree = "<group>"; };
3E16E4FF2A57FFD900B813D0 /* OptionsCollectionViewHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptionsCollectionViewHeader.swift; sourceTree = "<group>"; };
3E16E5012A58176800B813D0 /* ReviewDetailTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewDetailTextView.swift; sourceTree = "<group>"; };
3E79B19C2A54523D00D36A26 /* BackButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackButton.swift; sourceTree = "<group>"; };
3E79B19F2A5546E700D36A26 /* DescriptionCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DescriptionCollectionViewCell.swift; sourceTree = "<group>"; };
3E79B1A52A566F6400D36A26 /* WriteReviewViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WriteReviewViewController.swift; sourceTree = "<group>"; };
3E79B1AD2A56F14A00D36A26 /* BakeryOverviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BakeryOverviewView.swift; sourceTree = "<group>"; };
3E79B1AF2A571B4B00D36A26 /* LineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineView.swift; sourceTree = "<group>"; };
3E79B1B12A571E1F00D36A26 /* OptionsCollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptionsCollectionView.swift; sourceTree = "<group>"; };
3E79B1B42A571E7100D36A26 /* OptionsCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptionsCollectionViewCell.swift; sourceTree = "<group>"; };
3EA2E1E22A53E88B003516A3 /* BaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseViewController.swift; sourceTree = "<group>"; };
3EA2E1E82A541AEB003516A3 /* CustomNavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomNavigationBar.swift; sourceTree = "<group>"; };
3EA2E1EA2A542151003516A3 /* SizeLiteral.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SizeLiteral.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -280,6 +302,7 @@
0961C3662A501EDD0031A822 /* Network */ = {
isa = PBXGroup;
children = (
3E16E4F22A57CE2B00B813D0 /* Model */,
0961C3692A501EF00031A822 /* Base */,
0961C3682A501EE90031A822 /* API */,
0961C3672A501EE40031A822 /* Service */,
Expand Down Expand Up @@ -314,6 +337,7 @@
0961C36A2A501EF60031A822 /* Presentation */ = {
isa = PBXGroup;
children = (
3E79B1A42A566F0700D36A26 /* WriteReview */,
093214032A5AE3C000875EF6 /* Search */,
09B13F492A593C5900C0C723 /* Home */,
09B13F4D2A593C7600C0C723 /* BakeryList */,
Expand Down Expand Up @@ -476,6 +500,49 @@
path = Protocol;
sourceTree = "<group>";
};
3E16E4F22A57CE2B00B813D0 /* Model */ = {
isa = PBXGroup;
children = (
3E16E4F32A57CEF400B813D0 /* Bakery */,
);
path = Model;
sourceTree = "<group>";
};
3E16E4F32A57CEF400B813D0 /* Bakery */ = {
isa = PBXGroup;
children = (
3E16E4F42A57CF3800B813D0 /* WriteReviewDTO.swift */,
);
path = Bakery;
sourceTree = "<group>";
};
3E16E4F62A57D10300B813D0 /* ViewController */ = {
isa = PBXGroup;
children = (
3E79B1A52A566F6400D36A26 /* WriteReviewViewController.swift */,
);
path = ViewController;
sourceTree = "<group>";
};
3E16E4F72A57D11700B813D0 /* View */ = {
isa = PBXGroup;
children = (
3E79B1B32A571E2700D36A26 /* OptionsCollection */,
3E79B1AD2A56F14A00D36A26 /* BakeryOverviewView.swift */,
3E16E5012A58176800B813D0 /* ReviewDetailTextView.swift */,
);
path = View;
sourceTree = "<group>";
};
3E16E4F82A57D11B00B813D0 /* Model */ = {
isa = PBXGroup;
children = (
3E16E4FB2A57D24900B813D0 /* LikeModel.swift */,
3E16E4F92A57D1F400B813D0 /* RecommendationModel.swift */,
);
path = Model;
sourceTree = "<group>";
};
3E79B19B2A54523400D36A26 /* Button */ = {
isa = PBXGroup;
children = (
Expand All @@ -494,6 +561,27 @@
path = Cell;
sourceTree = "<group>";
};
3E79B1A42A566F0700D36A26 /* WriteReview */ = {
isa = PBXGroup;
children = (
3E16E4F82A57D11B00B813D0 /* Model */,
3E16E4F72A57D11700B813D0 /* View */,
3E16E4F62A57D10300B813D0 /* ViewController */,
);
path = WriteReview;
sourceTree = "<group>";
};
3E79B1B32A571E2700D36A26 /* OptionsCollection */ = {
isa = PBXGroup;
children = (
3E79B1B12A571E1F00D36A26 /* OptionsCollectionView.swift */,
3E79B1B42A571E7100D36A26 /* OptionsCollectionViewCell.swift */,
3E16E4FD2A57F06D00B813D0 /* OptionsCollectionViewFlowLayout.swift */,
3E16E4FF2A57FFD900B813D0 /* OptionsCollectionViewHeader.swift */,
);
path = OptionsCollection;
sourceTree = "<group>";
};
3EA2E1E02A53E864003516A3 /* Common */ = {
isa = PBXGroup;
children = (
Expand All @@ -504,6 +592,7 @@
097682D82A5C828E0008F4FB /* ImageView */,
3E79B19B2A54523400D36A26 /* Button */,
3EA2E1E12A53E880003516A3 /* Base */,
3E79B1AF2A571B4B00D36A26 /* LineView.swift */,
3EA2E1E82A541AEB003516A3 /* CustomNavigationBar.swift */,
);
path = Common;
Expand Down Expand Up @@ -667,8 +756,14 @@
buildActionMask = 2147483647;
files = (
0915C1702A5C3C5600ACB8D4 /* RegionStackView.swift in Sources */,
3E16E4FC2A57D24900B813D0 /* LikeModel.swift in Sources */,
3E79B1AE2A56F14A00D36A26 /* BakeryOverviewView.swift in Sources */,
3E16E4FA2A57D1F400B813D0 /* RecommendationModel.swift in Sources */,
3E79B1A62A566F6400D36A26 /* WriteReviewViewController.swift in Sources */,
090556292A51DBC000752067 /* UIView+.swift in Sources */,
090556292A51DBC000752067 /* UIView+.swift in Sources */,
090668FC2A4FF3C600F413FA /* AppDelegate.swift in Sources */,
3E79B1B02A571B4B00D36A26 /* LineView.swift in Sources */,
090668FD2A4FF3C600F413FA /* SceneDelegate.swift in Sources */,
097682DC2A5C83910008F4FB /* CGFloat+.swift in Sources */,
0924632F2A5BA0F200B6F65D /* HomeBakeryCollectionViewCell.swift in Sources */,
Expand Down Expand Up @@ -706,6 +801,7 @@
09B13F502A593CB800C0C723 /* BakeryListViewController.swift in Sources */,
093214022A5AE27800875EF6 /* Utils.swift in Sources */,
090556452A51E79B00752067 /* UITextField+.swift in Sources */,
3E16E5022A58176800B813D0 /* ReviewDetailTextView.swift in Sources */,
09CA3F062A569EB30063897A /* API.swift in Sources */,
DF959A6E2A568C9400E75774 /* UIColor+.swift in Sources */,
09C626562A5B3572002C8110 /* HomeBestReviewResponseDTO.swift in Sources */,
Expand All @@ -715,8 +811,14 @@
09B13F562A59410C00C0C723 /* CALayer+.swift in Sources */,
3EA2E1E92A541AEB003516A3 /* CustomNavigationBar.swift in Sources */,
090556312A51DDD800752067 /* UITableView+.swift in Sources */,
3E16E4FE2A57F06D00B813D0 /* OptionsCollectionViewFlowLayout.swift in Sources */,
3E79B1B22A571E1F00D36A26 /* OptionsCollectionView.swift in Sources */,
3E79B1B52A571E7100D36A26 /* OptionsCollectionViewCell.swift in Sources */,
090556312A51DDD800752067 /* UITableView+.swift in Sources */,
090556272A51DBB100752067 /* NSObject+.swift in Sources */,
3E79B1A02A5546E700D36A26 /* DescriptionCollectionViewCell.swift in Sources */,
3E16E5002A57FFD900B813D0 /* OptionsCollectionViewHeader.swift in Sources */,
3E16E4F52A57CF3800B813D0 /* WriteReviewDTO.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
11 changes: 11 additions & 0 deletions GEON-PPANG-iOS/Global/Extensions/UI/UIViewController+.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,15 @@ extension UIViewController {
func convertByHeightRatio(_ convert: CGFloat) -> CGFloat {
return (convert / 812) * getDeviceHeight()
}

func setKeyboardHideGesture() {
let tap = UITapGestureRecognizer(target: self,
action: #selector(UIViewController.dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}

@objc func dismissKeyboard() {
view.endEditing(true)
}
}
16 changes: 16 additions & 0 deletions GEON-PPANG-iOS/Global/Literals/Strings.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,20 @@ struct I18N {
- 건빵은 건강한 빵집의 위치와 성분 정보를 제공하여 소비자의 선택을 돕는 용도의 서비스입니다. 건빵의 모든 정보는 제조사에서 제공한 정보입니다. 이는 소비자의 구매를 돕기 위한 참고 사항이며, 제공 정보의 오류에 대한 책임을 지지 않습니다.
"""
}

/// WriteReviewViewController
struct WriteReview {
static let likeOptionTitle = "건빵집은 어떠셨나요?"
static let likePlaceholder = "추가로 좋았던 점이 있다면 말씀해주세요!"
static let dislikePlaceholder = "자유롭게 의견을 말씀해주세요!"
static let like = "좋아요"
static let dislike = "별로예요"
static let optionTitle = "어떤것을 추천하나요?"
static let aboutReview = """
솔직하게 작성해주신 리뷰는 건빵 소비자에게 도움이 됩니다!
하지만 선량한 업주나 제3자의 권리를 침해하는 게시물 (허위 리뷰,
명예훼손, 욕설, 타인 비방글 등)은 안내 없이 삭제되며, 관련법률에 따라
제재를 받을 수 있습니다. 또한, 건빵은 이에 대한 책임을 지지 않습니다.
"""
}
}
33 changes: 33 additions & 0 deletions GEON-PPANG-iOS/Global/Network/Model/Bakery/WriteReviewDTO.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
//
// WriteReviewDTO.swift
// GEON-PPANG-iOS
//
// Created by 이성민 on 2023/07/07.
//

import Foundation

struct WriteReviewDTO: Codable {
let bakeryID: Int
let isLike: Bool
let keywordList: [KeywordList]
let reviewText: String

enum CodingKeys: String, CodingKey {
case bakeryID = "bakeryId"
case isLike
case keywordList
case reviewText
}
}

struct KeywordList: Codable {
enum Keyword: String, CaseIterable {
case delicious = "맛있어요"
case kind = "친절해요"
case special = "특별한 메뉴"
case zeroWaste = "제로 웨이스트"
}

let keywordName: Keyword.RawValue
}
36 changes: 36 additions & 0 deletions GEON-PPANG-iOS/Presentation/Common/LineView.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
//
// LineView.swift
// GEON-PPANG-iOS
//
// Created by 이성민 on 2023/07/07.
//

import UIKit

import Then

final class LineView: UIView {

// MARK: - Life Cycle

override init(frame: CGRect) {
super.init(frame: frame)

setUI()
}

@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

// MARK: - Setting

private func setUI() {
self.do {
$0.backgroundColor = .gbbGray200
}
}


}
12 changes: 12 additions & 0 deletions GEON-PPANG-iOS/Presentation/WriteReview/Model/LikeModel.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
//
// LikeModel.swift
// GEON-PPANG-iOS
//
// Created by 이성민 on 2023/07/07.
//

import Foundation

struct LikeModel {
let isLike: Bool
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//
// RecommendationModel.swift
// GEON-PPANG-iOS
//
// Created by 이성민 on 2023/07/07.
//

import Foundation

struct RecommendationModel {
let keyword: KeywordList.Keyword
let isSelected: Bool
}
Loading

0 comments on commit 85fe523

Please sign in to comment.