From 7cd155b880ee688d76264ee2a24c38b782f34ead Mon Sep 17 00:00:00 2001 From: doyeonk429 <80318425+doyeonk429@users.noreply.github.com> Date: Fri, 16 Aug 2024 00:03:22 +0900 Subject: [PATCH] =?UTF-8?q?#43=20Chore:=20Sliding=20Cards=20Deck=20UI=20pa?= =?UTF-8?q?ckage=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Drink-EG/Drink-EG.xcodeproj/project.pbxproj | 29 +++ .../xcshareddata/swiftpm/Package.resolved | 13 +- .../ClassSampleImage.imageset/Contents.json | 21 ++ .../ClassSampleImage.imageset/wineImage.jpg | Bin 0 -> 58515 bytes .../Drink-EG/Resources/SceneDelegate.swift | 2 +- .../MyCollectionViewController.swift | 17 ++ .../WineClass/SavingVideoViewController.swift | 5 + .../WineClassMainViewController.swift | 181 +++++++++++++++++- .../WineKnowledgeViewController.swift | 17 ++ .../WineClass/WineNewsViewController.swift | 17 ++ 10 files changed, 298 insertions(+), 4 deletions(-) create mode 100644 Drink-EG/Drink-EG/Resources/Assets.xcassets/ClassSampleImage.imageset/Contents.json create mode 100644 Drink-EG/Drink-EG/Resources/Assets.xcassets/ClassSampleImage.imageset/wineImage.jpg create mode 100644 Drink-EG/Drink-EG/Sources/VCs/WineClass/MyCollectionViewController.swift create mode 100644 Drink-EG/Drink-EG/Sources/VCs/WineClass/WineKnowledgeViewController.swift create mode 100644 Drink-EG/Drink-EG/Sources/VCs/WineClass/WineNewsViewController.swift diff --git a/Drink-EG/Drink-EG.xcodeproj/project.pbxproj b/Drink-EG/Drink-EG.xcodeproj/project.pbxproj index e116ee8..5ef4af3 100644 --- a/Drink-EG/Drink-EG.xcodeproj/project.pbxproj +++ b/Drink-EG/Drink-EG.xcodeproj/project.pbxproj @@ -29,6 +29,10 @@ 165401092C6BA644008A9DBF /* MemberInfoAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 165401082C6BA644008A9DBF /* MemberInfoAPI.swift */; }; 1654010B2C6BACDC008A9DBF /* SelectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1654010A2C6BACDC008A9DBF /* SelectionManager.swift */; }; 1654010D2C6C7FBB008A9DBF /* APIResponseMemberResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1654010C2C6C7FBB008A9DBF /* APIResponseMemberResponse.swift */; }; + 1654010F2C6E2B4B008A9DBF /* MyCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1654010E2C6E2B4B008A9DBF /* MyCollectionViewController.swift */; }; + 165401112C6E2B79008A9DBF /* WineNewsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 165401102C6E2B79008A9DBF /* WineNewsViewController.swift */; }; + 165401132C6E2BAA008A9DBF /* WineKnowledgeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 165401122C6E2BAA008A9DBF /* WineKnowledgeViewController.swift */; }; + 165401162C6E3858008A9DBF /* CardSlider in Frameworks */ = {isa = PBXBuildFile; productRef = 165401152C6E3858008A9DBF /* CardSlider */; }; 16752F9D2C5A7FB90001907D /* HexCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16752F9C2C5A7FB90001907D /* HexCode.swift */; }; 16B97CD42C4BEB0900D8B453 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16B97CD32C4BEB0900D8B453 /* AppDelegate.swift */; }; 16B97CD62C4BEB0900D8B453 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16B97CD52C4BEB0900D8B453 /* SceneDelegate.swift */; }; @@ -129,6 +133,9 @@ 165401082C6BA644008A9DBF /* MemberInfoAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemberInfoAPI.swift; sourceTree = ""; }; 1654010A2C6BACDC008A9DBF /* SelectionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectionManager.swift; sourceTree = ""; }; 1654010C2C6C7FBB008A9DBF /* APIResponseMemberResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIResponseMemberResponse.swift; sourceTree = ""; }; + 1654010E2C6E2B4B008A9DBF /* MyCollectionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyCollectionViewController.swift; sourceTree = ""; }; + 165401102C6E2B79008A9DBF /* WineNewsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WineNewsViewController.swift; sourceTree = ""; }; + 165401122C6E2BAA008A9DBF /* WineKnowledgeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WineKnowledgeViewController.swift; sourceTree = ""; }; 16752F9C2C5A7FB90001907D /* HexCode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HexCode.swift; sourceTree = ""; }; 16B97CD02C4BEB0900D8B453 /* Drink-EG.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Drink-EG.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 16B97CD32C4BEB0900D8B453 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -208,6 +215,7 @@ files = ( 5E2219712C6B5B5B005849FB /* Cosmos in Frameworks */, 5E22195E2C69DDB5005849FB /* SnapKit in Frameworks */, + 165401162C6E3858008A9DBF /* CardSlider in Frameworks */, 5E2219672C69DE78005849FB /* KakaoSDK in Frameworks */, 5E2219612C69DDBF005849FB /* Alamofire in Frameworks */, 5E22196A2C69DEEA005849FB /* Toast in Frameworks */, @@ -438,6 +446,9 @@ 16B97D132C4C0F4100D8B453 /* ClassVideoViewController.swift */, 16B97D152C4C0F6400D8B453 /* SavingVideoViewController.swift */, 16B97D172C4C0F6E00D8B453 /* SearchVideoViewController.swift */, + 1654010E2C6E2B4B008A9DBF /* MyCollectionViewController.swift */, + 165401102C6E2B79008A9DBF /* WineNewsViewController.swift */, + 165401122C6E2BAA008A9DBF /* WineKnowledgeViewController.swift */, ); path = WineClass; sourceTree = ""; @@ -531,6 +542,7 @@ 5E2219662C69DE78005849FB /* KakaoSDK */, 5E2219692C69DEEA005849FB /* Toast */, 5E2219702C6B5B5B005849FB /* Cosmos */, + 165401152C6E3858008A9DBF /* CardSlider */, ); productName = "Drink-EG"; productReference = 16B97CD02C4BEB0900D8B453 /* Drink-EG.app */; @@ -567,6 +579,7 @@ 5E2219652C69DE78005849FB /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */, 5E2219682C69DEEA005849FB /* XCRemoteSwiftPackageReference "Toast-Swift" */, 5E22196F2C6B5B5B005849FB /* XCRemoteSwiftPackageReference "Cosmos" */, + 165401142C6E3858008A9DBF /* XCRemoteSwiftPackageReference "cardslider" */, ); productRefGroup = 16B97CD12C4BEB0900D8B453 /* Products */; projectDirPath = ""; @@ -626,6 +639,7 @@ 1F598EFD2C58150E000CE79F /* JoinViewController.swift in Sources */, 165400E32C69D6B9008A9DBF /* CallMoyaExample.swift in Sources */, 165400E72C69DDBE008A9DBF /* TastingNoteAPI.swift in Sources */, + 1654010F2C6E2B4B008A9DBF /* MyCollectionViewController.swift in Sources */, 16B97CEC2C4BF37E00D8B453 /* Constant.swift in Sources */, 16B97D182C4C0F6E00D8B453 /* SearchVideoViewController.swift in Sources */, 1F598EEC2C524D2E000CE79F /* RecomCollectionViewCell.swift in Sources */, @@ -654,6 +668,7 @@ 1F3CEAD62C669FD2002A4BC0 /* WineListCollectionViewCell.swift in Sources */, 165401042C69FA13008A9DBF /* APIResponseString.swift in Sources */, 165400E12C69D6B9008A9DBF /* BasicAPI.swift in Sources */, + 165401112C6E2B79008A9DBF /* WineNewsViewController.swift in Sources */, 165400E52C69DDB6008A9DBF /* LoginAPI.swift in Sources */, 5E2219412C69D5D0005849FB /* CustomTableViewCell.swift in Sources */, 1F598F012C581573000CE79F /* LoginViewController.swift in Sources */, @@ -682,6 +697,7 @@ 5E2219442C69D5D0005849FB /* CreateNewCommViewController.swift in Sources */, 5E2219472C69D5D0005849FB /* CustomCollectionViewCell.swift in Sources */, 5E22195B2C69D5E7005849FB /* WriteNoteViewController.swift in Sources */, + 165401132C6E2BAA008A9DBF /* WineKnowledgeViewController.swift in Sources */, 165400EF2C69DDFF008A9DBF /* WineNewsBookmarkAPI.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -897,6 +913,14 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ + 165401142C6E3858008A9DBF /* XCRemoteSwiftPackageReference "cardslider" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Ramotion/cardslider.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 0.1.0; + }; + }; 5E22195C2C69DDB5005849FB /* XCRemoteSwiftPackageReference "SnapKit" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/SnapKit/SnapKit.git"; @@ -948,6 +972,11 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 165401152C6E3858008A9DBF /* CardSlider */ = { + isa = XCSwiftPackageProductDependency; + package = 165401142C6E3858008A9DBF /* XCRemoteSwiftPackageReference "cardslider" */; + productName = CardSlider; + }; 5E22195D2C69DDB5005849FB /* SnapKit */ = { isa = XCSwiftPackageProductDependency; package = 5E22195C2C69DDB5005849FB /* XCRemoteSwiftPackageReference "SnapKit" */; diff --git a/Drink-EG/Drink-EG.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Drink-EG/Drink-EG.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 3413622..838c2c4 100644 --- a/Drink-EG/Drink-EG.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Drink-EG/Drink-EG.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "94393d098153cbd97eec19a1c56e156b79e10a5cb07e1198ba426834b6a505ba", + "originHash" : "ae843fcd9fde0e0eb90792d861b014bf16f661547950eb4147c039184b74fb38", "pins" : [ { "identity" : "alamofire", @@ -10,6 +10,15 @@ "version" : "5.9.1" } }, + { + "identity" : "cardslider", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Ramotion/cardslider.git", + "state" : { + "revision" : "016e2996d9f9fc20ac108ad82fd9fce007546be1", + "version" : "0.1.0" + } + }, { "identity" : "cosmos", "kind" : "remoteSourceControl", @@ -58,7 +67,7 @@ { "identity" : "snapkit", "kind" : "remoteSourceControl", - "location" : "https://github.com/SnapKit/SnapKit.git", + "location" : "https://github.com/SnapKit/SnapKit", "state" : { "revision" : "2842e6e84e82eb9a8dac0100ca90d9444b0307f4", "version" : "5.7.1" diff --git a/Drink-EG/Drink-EG/Resources/Assets.xcassets/ClassSampleImage.imageset/Contents.json b/Drink-EG/Drink-EG/Resources/Assets.xcassets/ClassSampleImage.imageset/Contents.json new file mode 100644 index 0000000..930b26a --- /dev/null +++ b/Drink-EG/Drink-EG/Resources/Assets.xcassets/ClassSampleImage.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "wineImage.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Drink-EG/Drink-EG/Resources/Assets.xcassets/ClassSampleImage.imageset/wineImage.jpg b/Drink-EG/Drink-EG/Resources/Assets.xcassets/ClassSampleImage.imageset/wineImage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f9145e608aa6bf31803c51d919f19e60160e9b57 GIT binary patch literal 58515 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 literal 0 HcmV?d00001 diff --git a/Drink-EG/Drink-EG/Resources/SceneDelegate.swift b/Drink-EG/Drink-EG/Resources/SceneDelegate.swift index 1ac98e7..5b4d75b 100644 --- a/Drink-EG/Drink-EG/Resources/SceneDelegate.swift +++ b/Drink-EG/Drink-EG/Resources/SceneDelegate.swift @@ -21,7 +21,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { let window = UIWindow(windowScene: windowScene) // 실제 첫 화면이 되는 MainViewController 인스턴스 생성 // let vc = ThirdVarietyTasteTestViewController() - let vc = EnterLoginViewController() + let vc = MainTabBarViewController() // NavigationController을 사용할 경우, MainViewController를 rootViewController로 갖는 NavigationController을 생성해야한다. let navigationController = UINavigationController(rootViewController: vc) navigationController.isNavigationBarHidden = true diff --git a/Drink-EG/Drink-EG/Sources/VCs/WineClass/MyCollectionViewController.swift b/Drink-EG/Drink-EG/Sources/VCs/WineClass/MyCollectionViewController.swift new file mode 100644 index 0000000..eb5c66c --- /dev/null +++ b/Drink-EG/Drink-EG/Sources/VCs/WineClass/MyCollectionViewController.swift @@ -0,0 +1,17 @@ +// +// MyCollectionViewController.swift +// Drink-EG +// +// Created by 김도연 on 8/15/24. +// + +import UIKit +import SnapKit + +class MyCollectionViewController: UIViewController { + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = .white + title = "내 보관함" + } +} diff --git a/Drink-EG/Drink-EG/Sources/VCs/WineClass/SavingVideoViewController.swift b/Drink-EG/Drink-EG/Sources/VCs/WineClass/SavingVideoViewController.swift index aa5f66b..ca3b5d3 100644 --- a/Drink-EG/Drink-EG/Sources/VCs/WineClass/SavingVideoViewController.swift +++ b/Drink-EG/Drink-EG/Sources/VCs/WineClass/SavingVideoViewController.swift @@ -6,3 +6,8 @@ // import Foundation +import UIKit + +class SavingVideoViewController : UIViewController { + +} diff --git a/Drink-EG/Drink-EG/Sources/VCs/WineClass/WineClassMainViewController.swift b/Drink-EG/Drink-EG/Sources/VCs/WineClass/WineClassMainViewController.swift index 60661a7..ec7bb86 100644 --- a/Drink-EG/Drink-EG/Sources/VCs/WineClass/WineClassMainViewController.swift +++ b/Drink-EG/Drink-EG/Sources/VCs/WineClass/WineClassMainViewController.swift @@ -6,11 +6,190 @@ // import UIKit +import SnapKit class WineClassMainViewController : UIViewController { + + // "VINO 클래스" 타이틀 + private let titleLabel: UILabel = { + let label = UILabel() + label.text = "VINO 클래스" + label.font = UIFont.boldSystemFont(ofSize: 28) + label.textColor = .black + return label + }() + + // 검색창 + private let searchBar: UISearchBar = { + let searchBar = UISearchBar() + searchBar.placeholder = "제목, 연관내용 검색" + searchBar.backgroundImage = UIImage() // 배경을 없앰 + return searchBar + }() + + // "내 보관함" 버튼 + private let myCollectionButton: UIButton = { + let button = UIButton(type: .system) + button.setTitle("내 보관함", for: .normal) + button.setTitleColor(.black, for: .normal) + button.backgroundColor = UIColor.white + button.layer.cornerRadius = 15 + button.addTarget(WineClassMainViewController.self, action: #selector(didTapMyCollectionButton), for: .touchUpInside) + return button + }() + + + + // "15초만에 알아가는 와인 지식" 카드 뷰 + private let wineKnowledgeCardView: UIView = { + let view = UIView() + view.backgroundColor = UIColor.white + view.layer.cornerRadius = 10 + view.layer.shadowColor = UIColor.black.cgColor + view.layer.shadowOpacity = 0.1 + view.layer.shadowOffset = CGSize(width: 0, height: 2) + view.layer.shadowRadius = 4 + let tapGesture = UITapGestureRecognizer(target: WineClassMainViewController.self, action: #selector(didTapWineKnowledgeCard)) + view.addGestureRecognizer(tapGesture) + view.isUserInteractionEnabled = true + return view + }() + + // 카드 이미지뷰 + private let cardImageView: UIImageView = { + let imageView = UIImageView(image: UIImage(named: "ClassSampleImage")) + imageView.contentMode = .scaleAspectFill + imageView.layer.cornerRadius = 10 + imageView.layer.masksToBounds = true + return imageView + }() + + // "15초만에 알아가는 와인 지식" 라벨 + private let wineKnowledgeLabel: UILabel = { + let label = UILabel() + label.text = "15초만에 알아가는 와인 지식" + label.font = UIFont.systemFont(ofSize: 20, weight: .bold) + label.textColor = .black + return label + }() + + // "이번 달 와인뉴스" 카드 뷰 + private let wineNewsCardView: UIView = { + let view = UIView() + view.backgroundColor = UIColor.white + view.layer.cornerRadius = 10 + view.layer.shadowColor = UIColor.black.cgColor + view.layer.shadowOpacity = 0.1 + view.layer.shadowOffset = CGSize(width: 0, height: 2) + view.layer.shadowRadius = 4 + let tapGesture = UITapGestureRecognizer(target: WineClassMainViewController.self, action: #selector(didTapWineNewsCard)) + view.addGestureRecognizer(tapGesture) + view.isUserInteractionEnabled = true + return view + }() + + // "이번 달 와인뉴스" 카드 이미지뷰 + private let newsImageView: UIImageView = { + let imageView = UIImageView(image: UIImage(named: "ClassSampleImage")) + imageView.contentMode = .scaleAspectFill + imageView.layer.cornerRadius = 10 + imageView.layer.masksToBounds = true + return imageView + }() + + // "이번 달 와인뉴스" 라벨 + private let wineNewsLabel: UILabel = { + let label = UILabel() + label.text = "이번 달 와인뉴스" + label.font = UIFont.systemFont(ofSize: 20, weight: .bold) + label.textColor = .black + return label + }() + override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = .purple + view.backgroundColor = .white + setupUI() + } + + private func setupUI() { + // Add subviews + view.addSubview(titleLabel) + view.addSubview(searchBar) + view.addSubview(wineKnowledgeCardView) + view.addSubview(myCollectionButton) + view.addSubview(wineNewsCardView) + + wineKnowledgeCardView.addSubview(cardImageView) + wineKnowledgeCardView.addSubview(wineKnowledgeLabel) + + wineNewsCardView.addSubview(newsImageView) + wineNewsCardView.addSubview(wineNewsLabel) + + // Layout constraints using SnapKit + titleLabel.snp.makeConstraints { make in + make.top.equalTo(view.safeAreaLayoutGuide).offset(20) + make.leading.equalToSuperview().offset(16) + } + + searchBar.snp.makeConstraints { make in + make.top.equalTo(titleLabel.snp.bottom).offset(10) + make.leading.trailing.equalToSuperview().inset(16) + } + + wineKnowledgeCardView.snp.makeConstraints { make in + make.top.equalTo(searchBar.snp.bottom).offset(20) + make.leading.trailing.equalToSuperview().inset(16) + make.height.equalTo(200) + } + + cardImageView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + wineKnowledgeLabel.snp.makeConstraints { make in + make.bottom.equalToSuperview().inset(10) + make.leading.equalToSuperview().offset(10) + } + + myCollectionButton.snp.makeConstraints { make in + make.trailing.equalTo(wineKnowledgeCardView.snp.trailing).inset(16) + make.centerY.equalTo(wineKnowledgeCardView.snp.centerY) + make.height.equalTo(30) + make.width.equalTo(100) + } + + wineNewsCardView.snp.makeConstraints { make in + make.top.equalTo(wineKnowledgeCardView.snp.bottom).offset(40) + make.leading.trailing.equalToSuperview().inset(16) + make.height.equalTo(200) + } + + newsImageView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + wineNewsLabel.snp.makeConstraints { make in + make.bottom.equalToSuperview().inset(10) + make.leading.equalToSuperview().offset(10) + } + } + + // MARK: - Actions + + @objc private func didTapMyCollectionButton() { + let myCollectionViewController = MyCollectionViewController() + navigationController?.pushViewController(myCollectionViewController, animated: true) + } + + @objc private func didTapWineKnowledgeCard() { + let wineKnowledgeViewController = WineKnowledgeViewController() + navigationController?.pushViewController(wineKnowledgeViewController, animated: true) + } + + @objc private func didTapWineNewsCard() { + let wineNewsViewController = WineNewsViewController() + navigationController?.pushViewController(wineNewsViewController, animated: true) } } diff --git a/Drink-EG/Drink-EG/Sources/VCs/WineClass/WineKnowledgeViewController.swift b/Drink-EG/Drink-EG/Sources/VCs/WineClass/WineKnowledgeViewController.swift new file mode 100644 index 0000000..553b900 --- /dev/null +++ b/Drink-EG/Drink-EG/Sources/VCs/WineClass/WineKnowledgeViewController.swift @@ -0,0 +1,17 @@ +// +// WineKnowledgeViewController.swift +// Drink-EG +// +// Created by 김도연 on 8/15/24. +// + +import UIKit +import SnapKit + +class WineKnowledgeViewController: UIViewController { + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = .white + title = "와인 지식" + } +} diff --git a/Drink-EG/Drink-EG/Sources/VCs/WineClass/WineNewsViewController.swift b/Drink-EG/Drink-EG/Sources/VCs/WineClass/WineNewsViewController.swift new file mode 100644 index 0000000..0a27809 --- /dev/null +++ b/Drink-EG/Drink-EG/Sources/VCs/WineClass/WineNewsViewController.swift @@ -0,0 +1,17 @@ +// +// WineNewsViewController.swift +// Drink-EG +// +// Created by 김도연 on 8/15/24. +// + +import UIKit +import SnapKit + +class WineNewsViewController: UIViewController { + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = .white + title = "와인 뉴스" + } +}