From 9553d9ed28dfc71456431cb2c4680ccd848dc472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=8F=99=EC=98=81?= Date: Mon, 4 Jan 2021 15:37:07 +0900 Subject: [PATCH 1/2] =?UTF-8?q?:bento:=20About=20photo=20=EB=B0=98?= =?UTF-8?q?=EC=9E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dear-World.xcodeproj/project.pbxproj | 16 ++ .../Chipmunk.imageset/Chipmunk.png | Bin 0 -> 5058 bytes .../Chipmunk.imageset/Contents.json | 21 ++ .../Ifmoon.imageset/Contents.json | 21 ++ .../Ifmoon.imageset/Ifmoon.png | Bin 0 -> 5608 bytes .../Judy.imageset/Contents.json | 21 ++ .../Assets.xcassets/Judy.imageset/Judy.png | Bin 0 -> 4984 bytes .../Minsour.imageset/Contents.json | 21 ++ .../Minsour.imageset/Minsour.png | Bin 0 -> 5404 bytes .../Owl.imageset/Contents.json | 21 ++ .../Assets.xcassets/Owl.imageset/Owl.png | Bin 0 -> 5170 bytes .../Pengin.imageset/Contents.json | 21 ++ .../Pengin.imageset/Pengin.png | Bin 0 -> 6245 bytes .../Peter.imageset/Contents.json | 21 ++ .../Assets.xcassets/Peter.imageset/Peter.png | Bin 0 -> 5003 bytes .../Rookie.imageset/Contents.json | 21 ++ .../Rookie.imageset/Rookie.png | Bin 0 -> 4386 bytes .../YuChoco.imageset/Contents.json | 21 ++ .../YuChoco.imageset/YuChoco.png | Bin 0 -> 5580 bytes .../backWhite.imageset/Contents.json | 21 ++ .../backWhite.imageset/backWhite.png | Bin 0 -> 277 bytes .../About/AboutTeam/AboutTeamReactor.swift | 29 ++ .../AboutTeam/AboutTeamViewController.swift | 253 ++++++++++++++++++ .../Scene/About/AboutViewController.swift | 5 +- 24 files changed, 512 insertions(+), 1 deletion(-) create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Chipmunk.imageset/Chipmunk.png create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Chipmunk.imageset/Contents.json create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Ifmoon.imageset/Contents.json create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Ifmoon.imageset/Ifmoon.png create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Judy.imageset/Contents.json create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Judy.imageset/Judy.png create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Minsour.imageset/Contents.json create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Minsour.imageset/Minsour.png create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Owl.imageset/Contents.json create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Owl.imageset/Owl.png create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Pengin.imageset/Contents.json create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Pengin.imageset/Pengin.png create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Peter.imageset/Contents.json create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Peter.imageset/Peter.png create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Rookie.imageset/Contents.json create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/Rookie.imageset/Rookie.png create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/YuChoco.imageset/Contents.json create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/YuChoco.imageset/YuChoco.png create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/backWhite.imageset/Contents.json create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/backWhite.imageset/backWhite.png create mode 100644 Dear-World/Dear-World/Source/Presentation/Scene/About/AboutTeam/AboutTeamReactor.swift create mode 100644 Dear-World/Dear-World/Source/Presentation/Scene/About/AboutTeam/AboutTeamViewController.swift diff --git a/Dear-World/Dear-World.xcodeproj/project.pbxproj b/Dear-World/Dear-World.xcodeproj/project.pbxproj index ef53569..cc8538f 100644 --- a/Dear-World/Dear-World.xcodeproj/project.pbxproj +++ b/Dear-World/Dear-World.xcodeproj/project.pbxproj @@ -30,6 +30,8 @@ 3914D9E6259F3FA1009765B0 /* Message.Model.Messages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3914D9E5259F3FA1009765B0 /* Message.Model.Messages.swift */; }; 393E0D4025A23A12000DB3B9 /* World.Model.Map.swift in Sources */ = {isa = PBXBuildFile; fileRef = 393E0D3F25A23A12000DB3B9 /* World.Model.Map.swift */; }; 393E0D4525A23A7B000DB3B9 /* World.API.Map.swift in Sources */ = {isa = PBXBuildFile; fileRef = 393E0D4425A23A7B000DB3B9 /* World.API.Map.swift */; }; + 393E0D5725A2BE3C000DB3B9 /* AboutTeamViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 393E0D5625A2BE3C000DB3B9 /* AboutTeamViewController.swift */; }; + 393E0D5F25A2CEB6000DB3B9 /* AboutTeamReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 393E0D5E25A2CEB6000DB3B9 /* AboutTeamReactor.swift */; }; 3958257B25948E41007325AB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3958257A25948E41007325AB /* AppDelegate.swift */; }; 3958258425948E43007325AB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3958258325948E43007325AB /* Assets.xcassets */; }; 3958258725948E43007325AB /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3958258525948E43007325AB /* LaunchScreen.storyboard */; }; @@ -125,6 +127,8 @@ 3914D9E5259F3FA1009765B0 /* Message.Model.Messages.swift */ = {isa = PBXFileReference; indentWidth = 2; lastKnownFileType = sourcecode.swift; name = Message.Model.Messages.swift; path = "Dear-World/Source/Presentation/Scene/Main/Message.Model.Messages.swift"; sourceTree = SOURCE_ROOT; tabWidth = 2; }; 393E0D3F25A23A12000DB3B9 /* World.Model.Map.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = World.Model.Map.swift; sourceTree = ""; }; 393E0D4425A23A7B000DB3B9 /* World.API.Map.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = World.API.Map.swift; sourceTree = ""; }; + 393E0D5625A2BE3C000DB3B9 /* AboutTeamViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutTeamViewController.swift; sourceTree = ""; }; + 393E0D5E25A2CEB6000DB3B9 /* AboutTeamReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutTeamReactor.swift; sourceTree = ""; }; 3958257725948E41007325AB /* Dear-World.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Dear-World.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 3958257A25948E41007325AB /* AppDelegate.swift */ = {isa = PBXFileReference; indentWidth = 2; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; tabWidth = 2; }; 3958258325948E43007325AB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; @@ -280,6 +284,15 @@ path = Extension; sourceTree = ""; }; + 393E0D5525A2BE18000DB3B9 /* AboutTeam */ = { + isa = PBXGroup; + children = ( + 393E0D5625A2BE3C000DB3B9 /* AboutTeamViewController.swift */, + 393E0D5E25A2CEB6000DB3B9 /* AboutTeamReactor.swift */, + ); + path = AboutTeam; + sourceTree = ""; + }; 3958256E25948E41007325AB = { isa = PBXGroup; children = ( @@ -453,6 +466,7 @@ 3958260325962FAE007325AB /* About */ = { isa = PBXGroup; children = ( + 393E0D5525A2BE18000DB3B9 /* AboutTeam */, 3902F117259704AF00A3DF8C /* AboutViewController.swift */, 39E9F7CF25A1738F00BC2CC2 /* AboutReactor.swift */, ); @@ -766,6 +780,7 @@ 121BDB592597652A0062B15A /* MessageTableViewCell.swift in Sources */, 3902F12A259714D800A3DF8C /* RankerTableViewCell.swift in Sources */, 395826332596E693007325AB /* Logger.swift in Sources */, + 393E0D5F25A2CEB6000DB3B9 /* AboutTeamReactor.swift in Sources */, 1263E09725A1C87400E3F121 /* Message.API.Countries.swift in Sources */, 39F0C19025987A2B00A7001F /* ServiceAPI.swift in Sources */, 12A05EFF25A353700089EF1C /* Message.API.Like.swift in Sources */, @@ -796,6 +811,7 @@ 39F0C176259860D700A7001F /* UIControl+Rx.swift in Sources */, 121BDB2A2597259E0062B15A /* MessageCountBadgeView.swift in Sources */, 39F0C16B2597C7DF00A7001F /* UIImage+.swift in Sources */, + 393E0D5725A2BE3C000DB3B9 /* AboutTeamViewController.swift in Sources */, 39E9F7E025A1BC3C00BC2CC2 /* NoticeBadge.swift in Sources */, 12257E1825A622750007E65E /* SortTypeSelectController.swift in Sources */, 39E9F7ED25A1C84900BC2CC2 /* WorldMap.Model.Country.swift in Sources */, diff --git a/Dear-World/Dear-World/Resource/Assets.xcassets/Chipmunk.imageset/Chipmunk.png b/Dear-World/Dear-World/Resource/Assets.xcassets/Chipmunk.imageset/Chipmunk.png new file mode 100644 index 0000000000000000000000000000000000000000..7f3374db708a0a0843824ff6ae5f8b2e08a76c2d GIT binary patch literal 5058 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 g1)*m1-X{!vFvP07*qoM6N<$g1Jf6$N&HU literal 0 HcmV?d00001 diff --git a/Dear-World/Dear-World/Resource/Assets.xcassets/Pengin.imageset/Contents.json b/Dear-World/Dear-World/Resource/Assets.xcassets/Pengin.imageset/Contents.json new file mode 100644 index 0000000..03fd3db --- /dev/null +++ b/Dear-World/Dear-World/Resource/Assets.xcassets/Pengin.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Pengin.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Dear-World/Dear-World/Resource/Assets.xcassets/Pengin.imageset/Pengin.png b/Dear-World/Dear-World/Resource/Assets.xcassets/Pengin.imageset/Pengin.png new file mode 100644 index 0000000000000000000000000000000000000000..8aca5ef4290d8e423bc5690546de7807da3cbaae GIT binary patch literal 6245 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 P00000NkvXXu0mjfO4k%w literal 0 HcmV?d00001 diff --git a/Dear-World/Dear-World/Resource/Assets.xcassets/Peter.imageset/Contents.json b/Dear-World/Dear-World/Resource/Assets.xcassets/Peter.imageset/Contents.json new file mode 100644 index 0000000..3a4ee6a --- /dev/null +++ b/Dear-World/Dear-World/Resource/Assets.xcassets/Peter.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Peter.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Dear-World/Dear-World/Resource/Assets.xcassets/Peter.imageset/Peter.png b/Dear-World/Dear-World/Resource/Assets.xcassets/Peter.imageset/Peter.png new file mode 100644 index 0000000000000000000000000000000000000000..3667d8db89e4397b40ff688ccac5f1e393931e7f GIT binary patch literal 5003 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 VxMJ+dZk+%C002ovPDHLkV1hE-gysMM literal 0 HcmV?d00001 diff --git a/Dear-World/Dear-World/Resource/Assets.xcassets/Rookie.imageset/Contents.json b/Dear-World/Dear-World/Resource/Assets.xcassets/Rookie.imageset/Contents.json new file mode 100644 index 0000000..fc9ded8 --- /dev/null +++ b/Dear-World/Dear-World/Resource/Assets.xcassets/Rookie.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Rookie.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Dear-World/Dear-World/Resource/Assets.xcassets/Rookie.imageset/Rookie.png b/Dear-World/Dear-World/Resource/Assets.xcassets/Rookie.imageset/Rookie.png new file mode 100644 index 0000000000000000000000000000000000000000..54ce65b6bd8a80680f78a2b87643011a75787562 GIT binary patch literal 4386 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 literal 0 HcmV?d00001 diff --git a/Dear-World/Dear-World/Resource/Assets.xcassets/YuChoco.imageset/Contents.json b/Dear-World/Dear-World/Resource/Assets.xcassets/YuChoco.imageset/Contents.json new file mode 100644 index 0000000..90f2496 --- /dev/null +++ b/Dear-World/Dear-World/Resource/Assets.xcassets/YuChoco.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "YuChoco.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Dear-World/Dear-World/Resource/Assets.xcassets/YuChoco.imageset/YuChoco.png b/Dear-World/Dear-World/Resource/Assets.xcassets/YuChoco.imageset/YuChoco.png new file mode 100644 index 0000000000000000000000000000000000000000..7d92fa0628982c2186a79e25e4d10fd7b91bf30e GIT binary patch literal 5580 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 literal 0 HcmV?d00001 diff --git a/Dear-World/Dear-World/Source/Presentation/Scene/About/AboutTeam/AboutTeamReactor.swift b/Dear-World/Dear-World/Source/Presentation/Scene/About/AboutTeam/AboutTeamReactor.swift new file mode 100644 index 0000000..b97d922 --- /dev/null +++ b/Dear-World/Dear-World/Source/Presentation/Scene/About/AboutTeam/AboutTeamReactor.swift @@ -0,0 +1,29 @@ +// +// AboutTeamReactor.swift +// Dear-World +// +// Created by dongyoung.lee on 2021/01/04. +// + +import ReactorKit + +final class AboutTeamReactor: Reactor { + enum Action { + case initialize + } + + struct State { + var crews: [Crew] = [] + } + + let initialState: State = State() + + func reduce(state: State, mutation: Action) -> State { + var newState: State = state + switch mutation { + case .initialize: + newState.crews = Crew.all + } + return newState + } +} diff --git a/Dear-World/Dear-World/Source/Presentation/Scene/About/AboutTeam/AboutTeamViewController.swift b/Dear-World/Dear-World/Source/Presentation/Scene/About/AboutTeam/AboutTeamViewController.swift new file mode 100644 index 0000000..d0b8be1 --- /dev/null +++ b/Dear-World/Dear-World/Source/Presentation/Scene/About/AboutTeam/AboutTeamViewController.swift @@ -0,0 +1,253 @@ +// +// AboutTeamViewController.swift +// Dear-World +// +// Created by dongyoung.lee on 2021/01/04. +// + +import Then +import ReactorKit +import UIKit + +final class AboutTeamViewController: UIViewController, View { + + typealias Reactor = AboutTeamReactor + + // MARK: 🖼 UI + private let scrollView: UIScrollView = UIScrollView() + private let crewsCollectionView: UICollectionView = UICollectionView( + frame: .zero, + collectionViewLayout: UICollectionViewFlowLayout() + ) + private let moreButton: UIButton = UIButton() + private let backButton: UIButton = UIButton() + + var disposeBag: DisposeBag = DisposeBag() + + // MARK: 🏁 Initialize + init() { + super.init(nibName: nil, bundle: nil) + + setupUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + // MARK: 🎛 Setup + private func setupUI() { + self.view.backgroundColor = .breathingWhite + self.navigationController?.isNavigationBarHidden = true + +// self.view.snp.makeConstraints { +// $0.edges.equalToSuperview() +// $0.width.equalTo(UIScreen.main.bounds.width) +// } + + let headerView: UIView = UIView().then { + $0.backgroundColor = .warmBlue + } + self.view.addSubview(headerView) + headerView.snp.makeConstraints { + $0.top.leading.trailing.equalToSuperview() + $0.height.equalTo(240) + } + + self.view.addSubview(backButton) + backButton.do { + $0.setBackgroundImage(UIImage(named: "backWhite"), for: .normal) + } + backButton.snp.makeConstraints { + $0.leading.equalToSuperview().inset(20) + $0.top.equalTo(self.view.safeAreaLayoutGuide).inset(37) + } + + let teamGreetingTitleLabel: UILabel = UILabel().then { + $0.text = "Hello, we are team OFU!" + $0.font = .boldSystemFont(ofSize: 16) + $0.textColor = .warmBlue + } + let teamGreetingLabel: UILabel = UILabel().then { + $0.text = """ + Since Corona bothering the world, we start the project to + make people can encouraged themselves by writting their + stories on it. Our OFU crew always cheers you and hope we all overcome this corona blue. + """ + $0.font = .systemFont(ofSize: 12) + $0.textColor = .nightBlue + $0.numberOfLines = 0 + } + self.view.addSubview(teamGreetingTitleLabel) + self.view.addSubview(teamGreetingLabel) + teamGreetingTitleLabel.snp.makeConstraints { + $0.leading.trailing.equalToSuperview().inset(20) + $0.top.equalTo(headerView.snp.bottom).offset(30) + } + teamGreetingLabel.snp.makeConstraints { + $0.leading.trailing.equalToSuperview().inset(20) + $0.top.equalTo(teamGreetingTitleLabel.snp.bottom).offset(10) + } + + let crewsTitleLable: UILabel = UILabel().then { + $0.text = "OFU CREWS" + $0.textColor = .warmBlue + $0.font = .boldSystemFont(ofSize: 16) + } + self.view.addSubview(crewsTitleLable) + crewsTitleLable.snp.makeConstraints { + $0.top.equalTo(teamGreetingLabel.snp.bottom).offset(50) + $0.leading.trailing.equalToSuperview().inset(20) + } + + self.view.addSubview(crewsCollectionView) + crewsCollectionView.do { + $0.register(CrewCollectionViewCell.self, forCellWithReuseIdentifier: "CrewCollectionViewCell") + $0.backgroundColor = .breathingWhite + $0.delegate = self + $0.allowsSelection = false + } + crewsCollectionView.snp.makeConstraints { + $0.top.equalTo(crewsTitleLable.snp.bottom).offset(20) + $0.leading.trailing.equalToSuperview().inset(20) + $0.height.equalTo(440) + } + + let footerView: UIView = UIView().then { + $0.backgroundColor = .livelyBlue + } + self.view.addSubview(footerView) + footerView.snp.makeConstraints { + $0.leading.trailing.equalToSuperview() + $0.height.equalTo(144) + $0.top.equalTo(crewsCollectionView.snp.bottom).offset(100) + } + + footerView.addSubview(moreButton) + moreButton.do { + $0.backgroundColor = .illuminatingYellow + $0.setTitle("More about OFU CREW", for: .normal) + $0.titleLabel?.font = .systemFont(ofSize: 14) + $0.layer.cornerRadius = 10 + $0.setTitleColor(.warmBlue, for: .normal) + } + moreButton.snp.makeConstraints { + $0.top.equalToSuperview().inset(15) + $0.leading.trailing.equalToSuperview().inset(20) + $0.height.equalTo(48) + } + + let copyrightLabel: UILabel = UILabel().then { + $0.text = "ⓒ OFU 2021. Made in Korea" + $0.font = .systemFont(ofSize: 14) + $0.textColor = .breathingWhite + } + footerView.addSubview(copyrightLabel) + copyrightLabel.snp.makeConstraints { + $0.centerX.equalToSuperview() + $0.top.equalTo(moreButton.snp.bottom).offset(25) + } + } + + // MARK: 🔗 Bind + func bind(reactor: AboutTeamReactor) { + reactor.state.map { $0.crews } + .bind(to: crewsCollectionView.rx.items(cellIdentifier: "CrewCollectionViewCell", cellType: CrewCollectionViewCell.self)) { index, crew, cell in + cell.configure(crew) + } + .disposed(by: disposeBag) + + reactor.action.onNext(.initialize) + } + +} +extension AboutTeamViewController: UICollectionViewDelegateFlowLayout { + private var inset: CGFloat { 20 } + private var itemSpacing: CGFloat { 48 } + var itemWidth: CGFloat { + (UIScreen.main.bounds.width - (inset * 2) - (itemSpacing * 2)) / 3 + } + var itemHeight: CGFloat { + itemWidth * 1.5 + } + + func collectionView( + _ collectionView: UICollectionView, + layout collectionViewLayout: UICollectionViewLayout, + sizeForItemAt indexPath: IndexPath + ) -> CGSize { + CGSize(width: itemWidth, height: itemHeight) + } +} + +struct Crew { + let name: String + let role: String + let profileImage: UIImage +} +extension Crew { + static let all: [Crew] = [ + Crew(name: "Judy", role: "PM, Design", profileImage: UIImage(named: "Judy")!), + Crew(name: "Pengin", role: "Backend Dev", profileImage: UIImage(named: "Pengin")!), + Crew(name: "Owl", role: "iOS Dev", profileImage: UIImage(named: "Owl")!), + Crew(name: "Rookie", role: "iOS Dev", profileImage: UIImage(named: "Rookie")!), + Crew(name: "Ifmoon", role: "Frontend Dev", profileImage: UIImage(named: "Ifmoon")!), + Crew(name: "Minsour", role: "Frontend Dev", profileImage: UIImage(named: "Minsour")!), + Crew(name: "Chipmunk", role: "Backend Dev", profileImage: UIImage(named: "Chipmunk")!), + Crew(name: "YuChoco", role: "Android Dev", profileImage: UIImage(named: "YuChoco")!), + Crew(name: "Peter", role: "Android Dev", profileImage: UIImage(named: "Peter")!) + ] +} + +final class CrewCollectionViewCell: UICollectionViewCell { + private let profileImageView: UIImageView = UIImageView() + private let nameLabel: UILabel = UILabel() + private let roleLabel: UILabel = UILabel() + + override init(frame: CGRect) { + super.init(frame: frame) + + setupUI() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + + setupUI() + } + + private func setupUI() { + self.addSubview(profileImageView) + profileImageView.snp.makeConstraints { + $0.width.height.equalTo(self.bounds.width) + } + + self.addSubview(nameLabel) + nameLabel.do { + $0.textAlignment = .center + $0.font = .systemFont(ofSize: 12) + $0.textColor = .warmBlue + } + nameLabel.snp.makeConstraints { + $0.top.equalTo(profileImageView.snp.bottom).offset(10) + $0.leading.trailing.equalToSuperview() + } + + self.addSubview(roleLabel) + roleLabel.do { + $0.textAlignment = .center + $0.font = .systemFont(ofSize: 10) + $0.textColor = .livelyBlue + } + roleLabel.snp.makeConstraints { + $0.top.equalTo(nameLabel.snp.bottom).offset(4) + $0.leading.trailing.equalToSuperview() + } + } + + func configure(_ crew: Crew) { + nameLabel.text = crew.name + roleLabel.text = crew.role + profileImageView.image = crew.profileImage + } +} diff --git a/Dear-World/Dear-World/Source/Presentation/Scene/About/AboutViewController.swift b/Dear-World/Dear-World/Source/Presentation/Scene/About/AboutViewController.swift index 3749c62..1080ad7 100644 --- a/Dear-World/Dear-World/Source/Presentation/Scene/About/AboutViewController.swift +++ b/Dear-World/Dear-World/Source/Presentation/Scene/About/AboutViewController.swift @@ -183,7 +183,10 @@ final class AboutViewController: UIViewController, View { .map { $0.isPresentCrewInfo } .filter { $0 } .subscribe(onNext: { _ in - print("isPresentCrewInfo") + let viewController: UIViewController = AboutTeamViewController().then { + $0.reactor = AboutTeamReactor() + } + self.navigationController?.pushViewController(viewController, animated: true) }) .disposed(by: disposeBag) From edb7facdd9709c7d402c410612f0f0d63f3af8f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=8F=99=EC=98=81?= Date: Thu, 7 Jan 2021 07:37:35 +0900 Subject: [PATCH 2/2] =?UTF-8?q?:bug:=20=EC=9D=B4=EB=AA=A8=EC=A7=80=20?= =?UTF-8?q?=ED=95=B8=EB=93=A4=EB=A7=81=20=EB=B2=84=EA=B7=B8=20&=20Send=20M?= =?UTF-8?q?essage=20dismiss=20=EB=AF=B8=EB=8F=99=EC=9E=91=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../about_top_img.imageset/Contents.json | 21 ++++++++++++ .../about_top_img.imageset/about_top_img.png | Bin 0 -> 17399 bytes .../API/Message.Model.SendMessage.swift | 3 -- .../About/AboutTeam/AboutTeamReactor.swift | 5 +++ .../AboutTeam/AboutTeamViewController.swift | 32 ++++++++++++------ .../Scene/Discover/DiscoverReactor.swift | 22 ++++++++++-- .../Discover/DiscoverViewController.swift | 6 ++++ .../Send Message/SendMessageReactor.swift | 23 +++++++++---- 8 files changed, 90 insertions(+), 22 deletions(-) create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/about_top_img.imageset/Contents.json create mode 100644 Dear-World/Dear-World/Resource/Assets.xcassets/about_top_img.imageset/about_top_img.png diff --git a/Dear-World/Dear-World/Resource/Assets.xcassets/about_top_img.imageset/Contents.json b/Dear-World/Dear-World/Resource/Assets.xcassets/about_top_img.imageset/Contents.json new file mode 100644 index 0000000..093b8bd --- /dev/null +++ b/Dear-World/Dear-World/Resource/Assets.xcassets/about_top_img.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "about_top_img.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Dear-World/Dear-World/Resource/Assets.xcassets/about_top_img.imageset/about_top_img.png b/Dear-World/Dear-World/Resource/Assets.xcassets/about_top_img.imageset/about_top_img.png new file mode 100644 index 0000000000000000000000000000000000000000..83e07d9f469854939d3baab4d84331bc1b1dd0e3 GIT binary patch literal 17399 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 Observable { switch action { + case .viewWillAppear: + return .merge( + Network.request(Message.API.MessageCount(countryCode: currentState.selectedCountry?.code)) + .filterNil() + .map { Mutation.setMessageCount($0.messageCount) }, + Network.request(Message.API.Messages( + countryCode: currentState.selectedCountry?.code, + lastMsgId: nil, + type: .recent + )) + .filterNil() + .map{ Mutation.setMessages(result: $0) } + ) + case let .countryDidChanged(country, sortType): return .merge( Network.request(Message.API.MessageCount(countryCode: country?.code)) @@ -99,13 +115,13 @@ final class DiscoverReactor: Reactor { case let .setRefreshing(flag): newState.isRefreshing = flag - + case let .addMessages(result: results): newState.messages = Message.Model.Messages(firstMsgId: state.messages.firstMsgId, lastMsgId: results.lastMsgId, messageCount: state.messageCount + results.messageCount, messages: currentState.messages.messages + results.messages) - + case let .setCountry(country: country): newState.selectedCountry = country - + case let .setLoading(flag): newState.isLoading = flag diff --git a/Dear-World/Dear-World/Source/Presentation/Scene/Discover/DiscoverViewController.swift b/Dear-World/Dear-World/Source/Presentation/Scene/Discover/DiscoverViewController.swift index 5628fea..9bd9f3d 100644 --- a/Dear-World/Dear-World/Source/Presentation/Scene/Discover/DiscoverViewController.swift +++ b/Dear-World/Dear-World/Source/Presentation/Scene/Discover/DiscoverViewController.swift @@ -33,6 +33,12 @@ final class DiscoverViewController: UIViewController, View { startInitAnimation() } + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + reactor?.action.onNext(.viewWillAppear) + } + private func startInitAnimation() { animate(view: messageCountBadgeView, alpha: 0.4, length: 20, duration: 0.4) animate(view: filterContainerView, alpha: 0.4, length: 20, duration: 0.4) diff --git a/Dear-World/Dear-World/Source/Presentation/Scene/Send Message/SendMessageReactor.swift b/Dear-World/Dear-World/Source/Presentation/Scene/Send Message/SendMessageReactor.swift index 9c1eef4..d11201e 100644 --- a/Dear-World/Dear-World/Source/Presentation/Scene/Send Message/SendMessageReactor.swift +++ b/Dear-World/Dear-World/Source/Presentation/Scene/Send Message/SendMessageReactor.swift @@ -21,6 +21,7 @@ final class SendMessageReactor: Reactor { } enum Mutation { + case setEmojiId(Int) case setEmoji(String) case setName(String) case setMessage(String) @@ -28,7 +29,7 @@ final class SendMessageReactor: Reactor { } struct State: Then { - var isPresented: Bool = true + @Revision var isPresented: Bool = true var emoji: String = "👽" var canSendMessage: Bool = false var name: String = "" @@ -67,8 +68,13 @@ final class SendMessageReactor: Reactor { case .tapRefresh: return Network.request(Emoji.API.Random()) - .filterNil() - .map { .setEmoji($0.unicode) } + .filterNil() + .flatMap { + Observable.from([ + .setEmojiId($0.id), + .setEmoji($0.unicode) + ]) + } case .typeName(let name): return .just(.setName(name)) @@ -83,9 +89,12 @@ final class SendMessageReactor: Reactor { name: currentState.name, message: currentState.message ) - return Network.request(api) - .filterNil() - .map { _ in .setMessage("완료") } + return .concat( + Network.request(api) + .filterNil() + .map { _ in .setMessage("완료") }, + .just(Mutation.setPresent(false)) + ) } } @@ -129,6 +138,8 @@ final class SendMessageReactor: Reactor { limitCount: $0.messageCountLimit ) } + case .setEmojiId(let id): + newState = state.with { $0.emojiId = id } } return newState }