diff --git a/SOPKATHON-11-iOS/SOPKATHON-11-iOS.xcodeproj/project.pbxproj b/SOPKATHON-11-iOS/SOPKATHON-11-iOS.xcodeproj/project.pbxproj index a255438..02ca75f 100644 --- a/SOPKATHON-11-iOS/SOPKATHON-11-iOS.xcodeproj/project.pbxproj +++ b/SOPKATHON-11-iOS/SOPKATHON-11-iOS.xcodeproj/project.pbxproj @@ -27,6 +27,12 @@ 25491B5F2A18FAFE00B16FA8 /* f.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25491B5E2A18FAFE00B16FA8 /* f.swift */; }; 25491B612A18FB0800B16FA8 /* g.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25491B602A18FB0800B16FA8 /* g.swift */; }; 25491B652A19171B00B16FA8 /* TabBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25491B642A19171B00B16FA8 /* TabBarViewController.swift */; }; + + A45E93BF2A192FAE0062E313 /* ProfileDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45E93BE2A192FAE0062E313 /* ProfileDetailView.swift */; }; + A45E93C22A1935380062E313 /* ProfileDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45E93C12A1935380062E313 /* ProfileDetail.swift */; }; + A45E93C42A1939B40062E313 /* ProfileDetailTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45E93C32A1939B40062E313 /* ProfileDetailTableViewCell.swift */; }; + A45E93C72A1940510062E313 /* ProfileDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45E93C62A1940510062E313 /* ProfileDetailViewController.swift */; }; + 25491B752A192F0600B16FA8 /* MatchingListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25491B742A192F0600B16FA8 /* MatchingListView.swift */; }; 25491B782A192F1800B16FA8 /* MatchingListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25491B772A192F1800B16FA8 /* MatchingListViewController.swift */; }; 25491B7A2A1930F500B16FA8 /* MatchingListTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25491B792A1930F500B16FA8 /* MatchingListTableViewCell.swift */; }; @@ -52,6 +58,7 @@ 3E9C06B52A195EB8004624B4 /* Pretendard-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 3E9C06AC2A195EB8004624B4 /* Pretendard-Regular.otf */; }; 3E9C06B62A195EB8004624B4 /* Pretendard-ExtraBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 3E9C06AD2A195EB8004624B4 /* Pretendard-ExtraBold.otf */; }; 3E9C06B82A195ED8004624B4 /* UIFont+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E9C06B72A195ED8004624B4 /* UIFont+Extension.swift */; }; + A4D7272B2A190F3D00A00E16 /* NavigationBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4D7272A2A190F3D00A00E16 /* NavigationBarView.swift */; }; A4D7272F2A1916CB00A00E16 /* NavigationBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4D7272E2A1916CB00A00E16 /* NavigationBarViewController.swift */; }; C30F6D372A19179D003A119E /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C30F6D362A19179D003A119E /* HomeViewController.swift */; }; @@ -84,6 +91,12 @@ 25491B5E2A18FAFE00B16FA8 /* f.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = f.swift; sourceTree = ""; }; 25491B602A18FB0800B16FA8 /* g.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = g.swift; sourceTree = ""; }; 25491B642A19171B00B16FA8 /* TabBarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarViewController.swift; sourceTree = ""; }; + + A45E93BE2A192FAE0062E313 /* ProfileDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileDetailView.swift; sourceTree = ""; }; + A45E93C12A1935380062E313 /* ProfileDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileDetail.swift; sourceTree = ""; }; + A45E93C32A1939B40062E313 /* ProfileDetailTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileDetailTableViewCell.swift; sourceTree = ""; }; + A45E93C62A1940510062E313 /* ProfileDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileDetailViewController.swift; sourceTree = ""; }; + 25491B742A192F0600B16FA8 /* MatchingListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MatchingListView.swift; sourceTree = ""; }; 25491B772A192F1800B16FA8 /* MatchingListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MatchingListViewController.swift; sourceTree = ""; }; 25491B792A1930F500B16FA8 /* MatchingListTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MatchingListTableViewCell.swift; sourceTree = ""; }; @@ -109,6 +122,7 @@ 3E9C06AC2A195EB8004624B4 /* Pretendard-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Pretendard-Regular.otf"; sourceTree = ""; }; 3E9C06AD2A195EB8004624B4 /* Pretendard-ExtraBold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Pretendard-ExtraBold.otf"; sourceTree = ""; }; 3E9C06B72A195ED8004624B4 /* UIFont+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIFont+Extension.swift"; sourceTree = ""; }; + A4D7272A2A190F3D00A00E16 /* NavigationBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBarView.swift; sourceTree = ""; }; A4D7272E2A1916CB00A00E16 /* NavigationBarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBarViewController.swift; sourceTree = ""; }; C30F6D362A19179D003A119E /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; @@ -156,6 +170,7 @@ 251DD5722A1520C6005951B8 /* SOPKATHON-11-iOS */ = { isa = PBXGroup; children = ( + A45E93C02A1935290062E313 /* Data */, 251DD58A2A15213D005951B8 /* Application */, 251DD5892A15213A005951B8 /* Network */, 251DD5872A152122005951B8 /* Global */, @@ -211,7 +226,10 @@ 251DD58C2A1521F5005951B8 /* ViewController */ = { isa = PBXGroup; children = ( + A45E93C52A1940390062E313 /* ProfileDetail */, + 3E9C067F2A190B78004624B4 /* InputData */, + A4D727302A19173500A00E16 /* NavigationBar */, 25491B6B2A1920E700B16FA8 /* MatchingList */, 25491B6A2A19177600B16FA8 /* TabBar */, @@ -224,11 +242,16 @@ 251DD58D2A1521FA005951B8 /* View */ = { isa = PBXGroup; children = ( + + A45E93BD2A192F970062E313 /* ProfileDetail */, + A4D727292A190C0500A00E16 /* NavigationBar */, + 25491B732A192EFC00B16FA8 /* MatchingList */, 3E9C06802A190B86004624B4 /* InputData */, A4D727292A190C0500A00E16 /* NavigationBar */, C30F6D3F2A1939DF003A119E /* Matching */, C30F6D3B2A191A8B003A119E /* Home */, + ); path = View; sourceTree = ""; @@ -350,6 +373,31 @@ path = MatchingList; sourceTree = ""; }; + + A45E93BD2A192F970062E313 /* ProfileDetail */ = { + isa = PBXGroup; + children = ( + A45E93BE2A192FAE0062E313 /* ProfileDetailView.swift */, + A45E93C32A1939B40062E313 /* ProfileDetailTableViewCell.swift */, + ); + path = ProfileDetail; + sourceTree = ""; + }; + A45E93C02A1935290062E313 /* Data */ = { + isa = PBXGroup; + children = ( + A45E93C12A1935380062E313 /* ProfileDetail.swift */, + ); + path = Data; + sourceTree = ""; + }; + A45E93C52A1940390062E313 /* ProfileDetail */ = { + isa = PBXGroup; + children = ( + A45E93C62A1940510062E313 /* ProfileDetailViewController.swift */, + ); + path = ProfileDetail; + 25491B732A192EFC00B16FA8 /* MatchingList */ = { isa = PBXGroup; children = ( @@ -395,6 +443,7 @@ 3E9C06832A190BD3004624B4 /* ButtonSetView.swift */, ); path = Component; + sourceTree = ""; }; A4D727292A190C0500A00E16 /* NavigationBar */ = { @@ -537,15 +586,24 @@ buildActionMask = 2147483647; files = ( 251DD5A22A152393005951B8 /* UIViewController+Extension.swift in Sources */, + + 251DD5782A1520C6005951B8 /* ViewController.swift in Sources */, + A45E93BF2A192FAE0062E313 /* ProfileDetailView.swift in Sources */, + A45E93C42A1939B40062E313 /* ProfileDetailTableViewCell.swift in Sources */, + A45E93C72A1940510062E313 /* ProfileDetailViewController.swift in Sources */, + 3E9C067E2A190B38004624B4 /* FirstInputDataViewController.swift in Sources */, C30F6D372A19179D003A119E /* HomeViewController.swift in Sources */, + 251DD5A62A15249C005951B8 /* UILabel+Extension.swift in Sources */, 25491B7C2A19376700B16FA8 /* MatchingListViewData.swift in Sources */, A4D7272F2A1916CB00A00E16 /* NavigationBarViewController.swift in Sources */, 251DD5AA2A1525EC005951B8 /* UIImageView+Extention.swift in Sources */, 25491B612A18FB0800B16FA8 /* g.swift in Sources */, + 3E9C06902A1935B0004624B4 /* SecondInputDataViewController.swift in Sources */, C30F6D3D2A193662003A119E /* MatchingViewController.swift in Sources */, + 251DD5742A1520C6005951B8 /* AppDelegate.swift in Sources */, 25491B752A192F0600B16FA8 /* MatchingListView.swift in Sources */, 3E9C06A22A195B1D004624B4 /* ImageLiteral.swift in Sources */, @@ -575,6 +633,7 @@ 3E9C06A42A195DD9004624B4 /* UIColor+Extension.swift in Sources */, 3E9C06882A191378004624B4 /* BasicCell.swift in Sources */, 251DD5A42A1523C3005951B8 /* UIView+Extension .swift in Sources */, + A45E93C22A1935380062E313 /* ProfileDetail.swift in Sources */, 251DD5A82A1525AD005951B8 /* NetworkResult.swift in Sources */, 3E9C06922A193942004624B4 /* TextfieldWithLabelView.swift in Sources */, ); diff --git a/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Application/SceneDelegate.swift b/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Application/SceneDelegate.swift index 4fcd9db..07cf594 100644 --- a/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Application/SceneDelegate.swift +++ b/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Application/SceneDelegate.swift @@ -14,7 +14,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as? UIWindowScene) else { return } - let navigationController = UINavigationController(rootViewController: TabBarViewController()) + let navigationController = UINavigationController(rootViewController: ProfileDetailViewController()) self.window = UIWindow(windowScene: windowScene) diff --git a/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Data/ProfileDetail.swift b/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Data/ProfileDetail.swift new file mode 100644 index 0000000..37cb82c --- /dev/null +++ b/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Data/ProfileDetail.swift @@ -0,0 +1,27 @@ +// +// ProfileDetail.swift +// SOPKATHON-11-iOS +// +// Created by 고아라 on 2023/05/21. +// + +import UIKit + +struct ProfileDetail { + let name: String + //let profileImage: String + let age: Int + let local: String + let isMarried: Bool + let hasChild: Bool + let hobby: [String] + let keyword: [String] +} + +extension ProfileDetail { + static func profileDummy() -> [ProfileDetail] { + return [ + ProfileDetail(name: "고아라", age: 2001, local: "서울", isMarried: true, hasChild: true, hobby: ["스쿼시"], keyword: ["매력적인"]) + ] + } +} diff --git a/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Presentation/View/ProfileDetail/ProfileDetailTableViewCell.swift b/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Presentation/View/ProfileDetail/ProfileDetailTableViewCell.swift new file mode 100644 index 0000000..1cc7b82 --- /dev/null +++ b/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Presentation/View/ProfileDetail/ProfileDetailTableViewCell.swift @@ -0,0 +1,78 @@ +// +// ProfileDetailTableViewCell.swift +// SOPKATHON-11-iOS +// +// Created by 고아라 on 2023/05/21. +// + +import UIKit + +import SnapKit +import Then + +class ProfileDetailTableViewCell: UITableViewCell { + + static let identifier = "ProfileDetailTableViewCell" + + let profileDetailTitle = UILabel() + lazy var profileDetailText = UILabel() + let profileDetailLine = UIView() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + // MARK: - 컴포넌트 설정 + setUI() + + // MARK: - addsubView + setHierarchy() + + // MARK: - autolayout설정 + setLayout() + + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +extension ProfileDetailTableViewCell { + func setUI() { + profileDetailTitle.do { + $0.text = "지역" + $0.font = .systemFont(ofSize: 16) + } + + profileDetailText.do { + $0.font = .systemFont(ofSize: 17) + $0.textColor = UIColor.gray + } + + profileDetailLine.do { + $0.backgroundColor = UIColor.gray + } + } + + func setHierarchy() { + contentView.addSubviews(profileDetailTitle, profileDetailText, profileDetailLine) + } + + func setLayout() { + profileDetailTitle.snp.makeConstraints { + $0.top.equalToSuperview() + $0.leading.equalTo(46) + } + + profileDetailText.snp.makeConstraints { + $0.top.equalTo(profileDetailTitle.snp.bottom).offset(13) + $0.leading.equalTo(46) + } + profileDetailLine.snp.makeConstraints { + $0.top.equalTo(profileDetailTitle.snp.bottom).inset(2) + $0.width.equalTo(297) + } + } + +} diff --git a/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Presentation/View/ProfileDetail/ProfileDetailView.swift b/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Presentation/View/ProfileDetail/ProfileDetailView.swift new file mode 100644 index 0000000..058b874 --- /dev/null +++ b/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Presentation/View/ProfileDetail/ProfileDetailView.swift @@ -0,0 +1,272 @@ +// +// ProfileDetailView.swift +// SOPKATHON-11-iOS +// +// Created by 고아라 on 2023/05/21. +// + +import UIKit + +import SnapKit +import Then + +class ProfileDetailView: UIView { + + private let model : [ProfileDetail] = ProfileDetail.profileDummy() + + private let navigationBar = NavigationBarView() + private let scrollView = UIScrollView() + private let contentView = UIView() + + private let profileImage = UIImageView() + private let profileView = UIView() + private let profileName = UILabel() + private let lineView = UIView() + private let profileAge = UILabel() + + private let profileMatchButton = UIButton() + //let profileInfoTableView = UITableView() + + private let profileInfoLabel = UILabel() + private let profileRegionTitle = UILabel() + private let profileRegionText = UILabel() + private let profileChildTitle = UILabel() + private let profileChildText = UILabel() + private let profileSingleTitle = UILabel() + private let profileSingleText = UILabel() + private let profileHobbyTitle = UILabel() + private let profilePersonalityTitle = UILabel() + private let profilePersonalityText = UILabel() + + private let lineView2 = UIView() + + override init(frame: CGRect) { + super.init(frame: frame) + + // MARK: - 컴포넌트 설정 + setUI() + + // MARK: - addsubView + setHierarchy() + + // MARK: - autolayout설정 + setLayout() + + setDelegate() + + + } + + @available(*, unavailable) + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +extension ProfileDetailView { + func setUI() { + backgroundColor = .white + + navigationBar.do { + $0.backgroundColor = .white + $0.setTitleBind(title: "천성우님의 프로필이에유") + } + profileImage.do { + $0.image = UIImage(systemName: "house") + } + + profileView.do { + $0.backgroundColor = UIColor.white + } + + profileName.do { + $0.text = model[0].name + $0.font = .boldSystemFont(ofSize: 28) + } + + profileAge.do { + $0.text = String(model[0].age) + "년생" + $0.font = .systemFont(ofSize: 28) + } + + lineView.do { + $0.backgroundColor = .gray + } + + profileMatchButton.do { + $0.setImage(UIImage(systemName: "heart"), for: .normal) + $0.setTitle("선택", for: .normal) + $0.setTitleColor(.black, for: .normal) + $0.titleLabel?.font = .systemFont(ofSize: 24) + $0.layer.cornerRadius = 24 + $0.setBorder(color: .systemPink, andWidth: 2) + } + + profileInfoLabel.do { + $0.text = "프로필 정보" + $0.font = .boldSystemFont(ofSize: 20) + } + + profileRegionTitle.do { + $0.text = "지역" + $0.font = .systemFont(ofSize: 18) + } + + profileRegionText.do { + $0.text = model[0].local + $0.font = .systemFont(ofSize: 18) + } + + profileChildTitle.do { + $0.text = "자녀" + $0.font = .systemFont(ofSize: 18) + } + + profileChildText.do { + $0.text = model[0].hasChild ? "해당 있음" : "해당 없음" + $0.font = .systemFont(ofSize: 18) + } + + profileSingleTitle.do { + $0.text = "돌싱 여부" + $0.font = .systemFont(ofSize: 18) + } + + profileSingleText.do { + $0.text = model[0].isMarried ? "있슈" : "없슈" + $0.font = .systemFont(ofSize: 18) + } + + lineView2.do { + $0.backgroundColor = .lightGray + } + + profileHobbyTitle.do { + $0.text = "취미" + } + + } + + func setHierarchy() { + + addSubviews(navigationBar, scrollView) + + scrollView.addSubview(contentView) + + [profileImage, profileView, profileName, lineView, profileAge, profileMatchButton, profileInfoLabel, profileRegionTitle, profileRegionText, profileChildTitle, profileChildText, profileSingleTitle, profileSingleText, lineView2,profileHobbyTitle].forEach { + contentView.addSubview($0) + } + + } + + func setLayout() { + navigationBar.snp.makeConstraints { + $0.top.equalTo(safeAreaLayoutGuide) + $0.horizontalEdges.equalToSuperview() + $0.height.equalTo(44) + } + + scrollView.snp.makeConstraints { + $0.top.equalTo(navigationBar.snp.bottom) + $0.leading.trailing.bottom.equalToSuperview() + } + + contentView.snp.makeConstraints { + $0.top.equalTo(scrollView.snp.top) + // $0.edges.equalToSuperview() + $0.height.equalTo(1200) + $0.bottom.equalToSuperview().inset(10) + } + + profileImage.snp.makeConstraints { + $0.top.equalTo(contentView.snp.top) + $0.leading.trailing.equalToSuperview() + $0.width.equalTo(375) + $0.height.equalTo(355) + } + + profileView.snp.makeConstraints { + $0.top.equalTo(profileImage.snp.bottom).offset(-20) + $0.leading.trailing.equalToSuperview() + $0.width.equalToSuperview() + $0.height.equalTo(600) + } + + profileName.snp.makeConstraints { + $0.top.equalTo(profileView.snp.top).offset(27) + $0.leading.equalToSuperview().inset(87) + } + + lineView.snp.makeConstraints { + $0.top.equalTo(profileView.snp.top).offset(29) + $0.leading.equalTo(profileName.snp.trailing).offset(8) + $0.width.equalTo(1) + $0.height.equalTo(30) + } + + profileAge.snp.makeConstraints { + $0.top.equalTo(profileView.snp.top).offset(27) + $0.trailing.equalToSuperview().inset(86) + } + + profileMatchButton.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalTo(profileName.snp.bottom).offset(20) + $0.width.equalTo(120) + $0.height.equalTo(50) + } + + profileInfoLabel.snp.makeConstraints { + $0.top.equalTo(profileMatchButton.snp.bottom).offset(26) + $0.leading.equalToSuperview().inset(24) + } + + profileRegionTitle.snp.makeConstraints { + $0.top.equalTo(profileInfoLabel.snp.bottom).offset(23) + $0.leading.equalToSuperview().inset(24) + } + + profileRegionText.snp.makeConstraints { + $0.top.equalTo(profileInfoLabel.snp.bottom).offset(23) + $0.leading.equalTo(profileRegionTitle.snp.trailing).offset(72) + } + + profileChildTitle.snp.makeConstraints { + $0.top.equalTo(profileRegionTitle.snp.bottom).offset(11) + $0.leading.equalToSuperview().inset(24) + } + + profileChildText.snp.makeConstraints { + $0.top.equalTo(profileRegionTitle.snp.bottom).offset(11) + $0.leading.equalTo(profileChildTitle.snp.trailing).offset(72) + } + + profileSingleTitle.snp.makeConstraints { + $0.top.equalTo(profileChildTitle.snp.bottom).offset(11) + $0.leading.equalToSuperview().inset(24) + } + + profileSingleText.snp.makeConstraints { + $0.top.equalTo(profileChildTitle.snp.bottom).offset(11) + $0.leading.equalTo(profileChildTitle.snp.trailing).offset(72) + } + + lineView2.snp.makeConstraints { + $0.top.equalTo(profileSingleTitle.snp.top).offset(50) + $0.leading.trailing.equalToSuperview() + $0.height.equalTo(4) + } + + profileHobbyTitle.snp.makeConstraints { + $0.top.equalTo(lineView2.snp.bottom).offset(24) + $0.leading.equalToSuperview().inset(24) + } + + } + + func setDelegate() { + + + } +} diff --git a/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Presentation/ViewController/ProfileDetail/ProfileDetailViewController.swift b/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Presentation/ViewController/ProfileDetail/ProfileDetailViewController.swift new file mode 100644 index 0000000..380c492 --- /dev/null +++ b/SOPKATHON-11-iOS/SOPKATHON-11-iOS/Presentation/ViewController/ProfileDetail/ProfileDetailViewController.swift @@ -0,0 +1,28 @@ +// +// ProfileDetailViewController.swift +// SOPKATHON-11-iOS +// +// Created by 고아라 on 2023/05/21. +// + +import UIKit + +import Then +import SnapKit + +class ProfileDetailViewController: UIViewController { + + private let originView = ProfileDetailView() + + override func loadView() { + self.view = originView + } + + override func viewDidLoad() { + super.viewDidLoad() + + } + +} + +