From aa2551e1147474c64c3a21bdddf327e4964331fe Mon Sep 17 00:00:00 2001 From: kim-seonwoo Date: Wed, 10 Jan 2024 00:41:16 +0900 Subject: [PATCH 1/6] =?UTF-8?q?[Add/#42]=20CreateChallenge=20-=20=EC=B1=8C?= =?UTF-8?q?=EB=A6=B0=EC=A7=80=20=EC=83=9D=EC=84=B1=20=EB=B7=B0=EC=BB=A8?= =?UTF-8?q?=ED=8A=B8=EB=A1=A4=EB=9F=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj | 24 +++++++ .../Global/Literals/String/String.swift | 9 +++ .../ViewControllers/AppChoiceController.swift | 8 +++ .../ApprovePermisionController.swift | 71 +++++++++++++++++++ .../SelectPeriodController.swift | 70 ++++++++++++++++++ .../SelectTotalTimeController.swift | 70 ++++++++++++++++++ .../ProblemSurveyViewController.swift | 2 +- 7 files changed, 253 insertions(+), 1 deletion(-) create mode 100644 HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppChoiceController.swift create mode 100644 HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/ApprovePermisionController.swift create mode 100644 HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift create mode 100644 HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift diff --git a/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj b/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj index 6af0e32..be6a11c 100644 --- a/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj +++ b/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj @@ -7,6 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + 0B000CE92B4D9D6E00AEC582 /* SelectPeriodController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CE82B4D9D6E00AEC582 /* SelectPeriodController.swift */; }; + 0B000CEB2B4D9D9100AEC582 /* SelectTotalTimeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CEA2B4D9D9100AEC582 /* SelectTotalTimeController.swift */; }; + 0B000CED2B4D9DA800AEC582 /* ApprovePermisionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CEC2B4D9DA800AEC582 /* ApprovePermisionController.swift */; }; + 0B000CEF2B4D9DBF00AEC582 /* AppChoiceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CEE2B4D9DBF00AEC582 /* AppChoiceController.swift */; }; 0B0035402B43D64D00DA140C /* HMHNavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B00353F2B43D64D00DA140C /* HMHNavigationBar.swift */; }; 0B2C2D3B2B443BE90023CCFA /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2C2D3A2B443BE90023CCFA /* Image.swift */; }; 0B2C2D412B4572240023CCFA /* HMHSelectButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2C2D402B4572240023CCFA /* HMHSelectButton.swift */; }; @@ -153,6 +157,10 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0B000CE82B4D9D6E00AEC582 /* SelectPeriodController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectPeriodController.swift; sourceTree = ""; }; + 0B000CEA2B4D9D9100AEC582 /* SelectTotalTimeController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectTotalTimeController.swift; sourceTree = ""; }; + 0B000CEC2B4D9DA800AEC582 /* ApprovePermisionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApprovePermisionController.swift; sourceTree = ""; }; + 0B000CEE2B4D9DBF00AEC582 /* AppChoiceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppChoiceController.swift; sourceTree = ""; }; 0B00353F2B43D64D00DA140C /* HMHNavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMHNavigationBar.swift; sourceTree = ""; }; 0B2C2D3A2B443BE90023CCFA /* Image.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Image.swift; sourceTree = ""; }; 0B2C2D402B4572240023CCFA /* HMHSelectButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMHSelectButton.swift; sourceTree = ""; }; @@ -289,6 +297,17 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 0B000CE72B4D9D4E00AEC582 /* ViewControllers */ = { + isa = PBXGroup; + children = ( + 0B000CE82B4D9D6E00AEC582 /* SelectPeriodController.swift */, + 0B000CEA2B4D9D9100AEC582 /* SelectTotalTimeController.swift */, + 0B000CEC2B4D9DA800AEC582 /* ApprovePermisionController.swift */, + 0B000CEE2B4D9DBF00AEC582 /* AppChoiceController.swift */, + ); + path = ViewControllers; + sourceTree = ""; + }; 0B2C2D3C2B4559AE0023CCFA /* Onboarding */ = { isa = PBXGroup; children = ( @@ -796,6 +815,7 @@ 3666C8842B47110800564874 /* CreateChallenge */ = { isa = PBXGroup; children = ( + 0B000CE72B4D9D4E00AEC582 /* ViewControllers */, 3666C8852B47110800564874 /* Views */, ); path = CreateChallenge; @@ -985,6 +1005,7 @@ 36E05FE42B487911005B633E /* GrayBackgroundView.swift in Sources */, 0B50F9CF2B369813000C5046 /* HomeViewController.swift in Sources */, 0B2C2D412B4572240023CCFA /* HMHSelectButton.swift in Sources */, + 0B000CEF2B4D9DBF00AEC582 /* AppChoiceController.swift in Sources */, 0B8A89BC2B369F2D00688BA6 /* UIView+.swift in Sources */, 0B8A89AF2B369E4300688BA6 /* HomeModel.swift in Sources */, 3666C89F2B485C8F00564874 /* DateCollectionViewCell.swift in Sources */, @@ -1003,9 +1024,12 @@ 0B7817522B4BE0280078E925 /* ProgressBarManager.swift in Sources */, 0B8A89C42B369FA000688BA6 /* F.swift in Sources */, 3666C8892B47110800564874 /* TotalTimePickerView.swift in Sources */, + 0B000CE92B4D9D6E00AEC582 /* SelectPeriodController.swift in Sources */, 174AF49A2B447CFB00450D07 /* ChanllengeViews.swift in Sources */, + 0B000CEB2B4D9D9100AEC582 /* SelectTotalTimeController.swift in Sources */, 17314F872B49853C0089A551 /* HMHQuitAlert.swift in Sources */, 0BA193B62B4D08B7007E3F9C /* ProblemSurveyViewController.swift in Sources */, + 0B000CED2B4D9DA800AEC582 /* ApprovePermisionController.swift in Sources */, 0B8A89B72B369F1100688BA6 /* C.swift in Sources */, 0B2C2D3B2B443BE90023CCFA /* Image.swift in Sources */, 17314F852B497FDE0089A551 /* HMHLogoutAlert.swift in Sources */, diff --git a/HMH_iOS/HMH_iOS/Global/Literals/String/String.swift b/HMH_iOS/HMH_iOS/Global/Literals/String/String.swift index cc09bc6..9ebb914 100644 --- a/HMH_iOS/HMH_iOS/Global/Literals/String/String.swift +++ b/HMH_iOS/HMH_iOS/Global/Literals/String/String.swift @@ -75,10 +75,12 @@ enum StringLiteral { enum OnboardigMain { static let timeSurvey = "하루 평균 휴대폰을\n얼마나 사용하나요?" static let problemSurvey = "휴대폰을 사용할 때\n어떤 문제를 겪고 있나요?" + static let selectPeriod = "챌린지 기간을 선택해 주세요" } enum OnboardigSub { static let problemSurvey = "해당 문항은 최대 2개까지 선택할 수 있어요" + static let selectPeriod = "첫 챌린지로 가볍게 도전하기 좋은 7일을 추천해요" } enum TimeSurveySelect { @@ -94,4 +96,11 @@ enum StringLiteral { static let thirdSelect = "특정 앱에 수시로 접속하게 돼요" static let fourthSelect = "중독을 탈출하려고 노력해도 잘 안 돼요" } + + enum PeriodSelect { + static let firstSelect = "7일" + static let secondSelect = "14일" + static let thirdSelect = "20일" + static let fourthSelect = "30일" + } } diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppChoiceController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppChoiceController.swift new file mode 100644 index 0000000..1665fff --- /dev/null +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppChoiceController.swift @@ -0,0 +1,8 @@ +// +// AppChoiceController.swift +// HMH_iOS +// +// Created by Seonwoo Kim on 1/10/24. +// + +import Foundation diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/ApprovePermisionController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/ApprovePermisionController.swift new file mode 100644 index 0000000..ec86398 --- /dev/null +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/ApprovePermisionController.swift @@ -0,0 +1,71 @@ +// +// ApprovePermisionController.swift +// HMH_iOS +// +// Created by Seonwoo Kim on 1/10/24. +// + +import UIKit + +import SnapKit +import Then + +final class ApprovePermisionController: OnboardingBaseViewController { + private let surveyView = SurveyView(buttonType: .solitary) + + override func viewDidLoad() { + super.viewDidLoad() + setUI() + configureSurveyView() + setDelegate() + setTimeSurvey() + } + + override func viewDidAppear(_ animated: Bool) { + setUI() + } + + private func setUI(){ + setHierarchy() + setConstraints() + } + + private func setHierarchy() { + view.addSubview(surveyView) + } + + private func setConstraints() { + surveyView.snp.makeConstraints { + $0.top.equalTo(mainTitleLabel.snp.bottom).offset(94.adjustedHeight) + $0.leading.trailing.equalTo(progressBar) + } + } + + private func setDelegate() { + self.delegate = self + } + + private func setTimeSurvey() { + view.backgroundColor = .background + step = 5 + } + + private func configureSurveyView() { + nextButtonText = StringLiteral.OnboardingButton.next + nextButton.setButtonText(buttonTitle: nextButtonText) + mainTitleText = StringLiteral.OnboardigMain.selectPeriod + subTitleText = StringLiteral.OnboardigSub.selectPeriod + surveyView.firstButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.firstSelect) + surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.secondSelect) + surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.thirdSelect) + surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.fourthSelect) + } +} + +extension ApprovePermisionController: NextViewPushDelegate { + func didTapButton() { + let nextViewController = SelectTotalTimeController() + self.navigationController?.pushViewController(nextViewController, animated: false) + } +} + diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift new file mode 100644 index 0000000..c11515f --- /dev/null +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift @@ -0,0 +1,70 @@ +// +// SelectPeriodController.swift +// HMH_iOS +// +// Created by Seonwoo Kim on 1/10/24. +// + +import UIKit + +import SnapKit +import Then + +final class SelectPeriodController: OnboardingBaseViewController { + private let surveyView = SurveyView(buttonType: .solitary) + + override func viewDidLoad() { + super.viewDidLoad() + setUI() + configureSurveyView() + setDelegate() + setTimeSurvey() + } + + override func viewDidAppear(_ animated: Bool) { + setUI() + } + + private func setUI(){ + setHierarchy() + setConstraints() + } + + private func setHierarchy() { + view.addSubview(surveyView) + } + + private func setConstraints() { + surveyView.snp.makeConstraints { + $0.top.equalTo(mainTitleLabel.snp.bottom).offset(94.adjustedHeight) + $0.leading.trailing.equalTo(progressBar) + } + } + + private func setDelegate() { + self.delegate = self + } + + private func setTimeSurvey() { + view.backgroundColor = .background + step = 3 + } + + private func configureSurveyView() { + nextButtonText = StringLiteral.OnboardingButton.next + nextButton.setButtonText(buttonTitle: nextButtonText) + mainTitleText = StringLiteral.OnboardigMain.selectPeriod + subTitleText = StringLiteral.OnboardigSub.selectPeriod + surveyView.firstButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.firstSelect) + surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.secondSelect) + surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.thirdSelect) + surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.fourthSelect) + } +} + +extension SelectPeriodController: NextViewPushDelegate { + func didTapButton() { + let nextViewController = SelectTotalTimeController() + self.navigationController?.pushViewController(nextViewController, animated: false) + } +} diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift new file mode 100644 index 0000000..be84e1e --- /dev/null +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift @@ -0,0 +1,70 @@ +// +// SelectTotalTimeController.swift +// HMH_iOS +// +// Created by Seonwoo Kim on 1/10/24. +// + +import UIKit + +import SnapKit +import Then + +final class SelectTotalTimeController: OnboardingBaseViewController { + private let surveyView = SurveyView(buttonType: .solitary) + + override func viewDidLoad() { + super.viewDidLoad() + setUI() + configureSurveyView() + setDelegate() + setTimeSurvey() + } + + override func viewDidAppear(_ animated: Bool) { + setUI() + } + + private func setUI(){ + setHierarchy() + setConstraints() + } + + private func setHierarchy() { + view.addSubview(surveyView) + } + + private func setConstraints() { + surveyView.snp.makeConstraints { + $0.top.equalTo(mainTitleLabel.snp.bottom).offset(94.adjustedHeight) + $0.leading.trailing.equalTo(progressBar) + } + } + + private func setDelegate() { + self.delegate = self + } + + private func setTimeSurvey() { + view.backgroundColor = .background + step = 4 + } + + private func configureSurveyView() { + nextButtonText = StringLiteral.OnboardingButton.next + nextButton.setButtonText(buttonTitle: nextButtonText) + mainTitleText = StringLiteral.OnboardigMain.selectPeriod + subTitleText = StringLiteral.OnboardigSub.selectPeriod + surveyView.firstButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.firstSelect) + surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.secondSelect) + surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.thirdSelect) + surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.fourthSelect) + } +} + +extension SelectTotalTimeController: NextViewPushDelegate { + func didTapButton() { + let nextViewController = ApprovePermisionController() + self.navigationController?.pushViewController(nextViewController, animated: false) + } +} diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift index f31df04..16ef9db 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift @@ -64,7 +64,7 @@ final class ProblemSurveyViewController: OnboardingBaseViewController { extension ProblemSurveyViewController: NextViewPushDelegate { func didTapButton() { - let nextViewController = TimeSurveyViewController() + let nextViewController = SelectPeriodController() self.navigationController?.pushViewController(nextViewController, animated: false) } } From 9892a9e6b353de0691cdc5e4bc4eb3734779a80c Mon Sep 17 00:00:00 2001 From: kim-seonwoo Date: Wed, 10 Jan 2024 01:30:51 +0900 Subject: [PATCH 2/6] =?UTF-8?q?[Fix/#42]=20CreateChallenge=20-=20=EC=BB=A4?= =?UTF-8?q?=EC=8A=A4=ED=85=80=20=EB=B2=84=ED=8A=BC=20=ED=8C=8C=EB=9D=BC?= =?UTF-8?q?=EB=AF=B8=ED=84=B0=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj | 4 ++ .../HMH_iOS/Global/Extension/UILabel+.swift | 20 +++++++++ .../Global/Literals/String/String.swift | 6 +++ .../AppSelectViewController.swift | 45 +++++++++++++++++++ .../ApprovePermisionController.swift | 34 ++------------ .../SelectPeriodController.swift | 2 +- .../SelectTotalTimeController.swift | 15 +++---- .../OnboardingBaseViewControllers.swift | 5 ++- .../ProblemSurveyViewController.swift | 3 +- .../TimeSurveyViewController.swift | 2 +- .../Onboarding/Views/SurveyView.swift | 28 +++++++----- 11 files changed, 106 insertions(+), 58 deletions(-) create mode 100644 HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppSelectViewController.swift diff --git a/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj b/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj index be6a11c..ceea8b3 100644 --- a/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj +++ b/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 0B000CEB2B4D9D9100AEC582 /* SelectTotalTimeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CEA2B4D9D9100AEC582 /* SelectTotalTimeController.swift */; }; 0B000CED2B4D9DA800AEC582 /* ApprovePermisionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CEC2B4D9DA800AEC582 /* ApprovePermisionController.swift */; }; 0B000CEF2B4D9DBF00AEC582 /* AppChoiceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CEE2B4D9DBF00AEC582 /* AppChoiceController.swift */; }; + 0B000CF12B4DA30F00AEC582 /* AppSelectViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CF02B4DA30F00AEC582 /* AppSelectViewController.swift */; }; 0B0035402B43D64D00DA140C /* HMHNavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B00353F2B43D64D00DA140C /* HMHNavigationBar.swift */; }; 0B2C2D3B2B443BE90023CCFA /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2C2D3A2B443BE90023CCFA /* Image.swift */; }; 0B2C2D412B4572240023CCFA /* HMHSelectButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2C2D402B4572240023CCFA /* HMHSelectButton.swift */; }; @@ -161,6 +162,7 @@ 0B000CEA2B4D9D9100AEC582 /* SelectTotalTimeController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectTotalTimeController.swift; sourceTree = ""; }; 0B000CEC2B4D9DA800AEC582 /* ApprovePermisionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApprovePermisionController.swift; sourceTree = ""; }; 0B000CEE2B4D9DBF00AEC582 /* AppChoiceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppChoiceController.swift; sourceTree = ""; }; + 0B000CF02B4DA30F00AEC582 /* AppSelectViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSelectViewController.swift; sourceTree = ""; }; 0B00353F2B43D64D00DA140C /* HMHNavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMHNavigationBar.swift; sourceTree = ""; }; 0B2C2D3A2B443BE90023CCFA /* Image.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Image.swift; sourceTree = ""; }; 0B2C2D402B4572240023CCFA /* HMHSelectButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMHSelectButton.swift; sourceTree = ""; }; @@ -304,6 +306,7 @@ 0B000CEA2B4D9D9100AEC582 /* SelectTotalTimeController.swift */, 0B000CEC2B4D9DA800AEC582 /* ApprovePermisionController.swift */, 0B000CEE2B4D9DBF00AEC582 /* AppChoiceController.swift */, + 0B000CF02B4DA30F00AEC582 /* AppSelectViewController.swift */, ); path = ViewControllers; sourceTree = ""; @@ -1065,6 +1068,7 @@ 0BC0EBD22B493B6B003EF5D4 /* OnboardingProgressView.swift in Sources */, 364C4E732B4BF27C0015729C /* AppAddCollectionReusableView.swift in Sources */, 17314F7F2B485E150089A551 /* CustomAlertButton.swift in Sources */, + 0B000CF12B4DA30F00AEC582 /* AppSelectViewController.swift in Sources */, 36A3D9BA2B3EBC65007EA272 /* UIButton+.swift in Sources */, 3666C88F2B471C5800564874 /* TabBarController.swift in Sources */, 36E05FE62B48825A005B633E /* AppCollectionReusableView.swift in Sources */, diff --git a/HMH_iOS/HMH_iOS/Global/Extension/UILabel+.swift b/HMH_iOS/HMH_iOS/Global/Extension/UILabel+.swift index c74ee8e..31d8316 100644 --- a/HMH_iOS/HMH_iOS/Global/Extension/UILabel+.swift +++ b/HMH_iOS/HMH_iOS/Global/Extension/UILabel+.swift @@ -34,4 +34,24 @@ extension UILabel { self.numberOfLines = 2 } } + + func setTextWithLineHeightLeft(text: String?, lineHeight: CGFloat) { + if let text = text { + let style = NSMutableParagraphStyle() + style.maximumLineHeight = lineHeight + style.minimumLineHeight = lineHeight + + let attributes: [NSAttributedString.Key: Any] = [ + .paragraphStyle: style, + .baselineOffset: (lineHeight - font.lineHeight) * 0.26 + ] + + let attrString = NSAttributedString(string: text, + attributes: attributes) + self.attributedText = attrString + self.textAlignment = .left + self.numberOfLines = 2 + } + } + } diff --git a/HMH_iOS/HMH_iOS/Global/Literals/String/String.swift b/HMH_iOS/HMH_iOS/Global/Literals/String/String.swift index 9ebb914..9f2bd7f 100644 --- a/HMH_iOS/HMH_iOS/Global/Literals/String/String.swift +++ b/HMH_iOS/HMH_iOS/Global/Literals/String/String.swift @@ -76,11 +76,17 @@ enum StringLiteral { static let timeSurvey = "하루 평균 휴대폰을\n얼마나 사용하나요?" static let problemSurvey = "휴대폰을 사용할 때\n어떤 문제를 겪고 있나요?" static let selectPeriod = "챌린지 기간을 선택해 주세요" + static let selectTotalTime = "총 목표 이용 시간을\n설정해 주세요" + static let approvePermision = "스크린타임 권한 허용이 필요해요" + static let appSelect = "중독에서 탈출하고 싶은\n앱을 선택해 주세요" } enum OnboardigSub { static let problemSurvey = "해당 문항은 최대 2개까지 선택할 수 있어요" static let selectPeriod = "첫 챌린지로 가볍게 도전하기 좋은 7일을 추천해요" + static let selectTotalTime = "목표 이용 시간은 최대 6시간까지 설정할 수 있어요" + static let approvePermision = "언제든지 설정에서 스크린타임 권한을\n변경할 수 있어요" + static let appSelect = "목표 이용 시간이 지나면 앱이 잠겨요\n선택하고 싶은 앱은 언제든지 추가할 수 있어요" } enum TimeSurveySelect { diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppSelectViewController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppSelectViewController.swift new file mode 100644 index 0000000..7e3e85e --- /dev/null +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppSelectViewController.swift @@ -0,0 +1,45 @@ +// +// AppSelectViewController.swift +// HMH_iOS +// +// Created by Seonwoo Kim on 1/10/24. +// + +import UIKit + +import SnapKit +import Then + +final class AppSelectViewController: OnboardingBaseViewController { + override func viewDidLoad() { + super.viewDidLoad() + configureSurveyView() + setDelegate() + setTimeSurvey() + } + + private func setDelegate() { + self.delegate = self + } + + private func setTimeSurvey() { + view.backgroundColor = .background + step = 5 + } + + private func configureSurveyView() { + nextButtonText = StringLiteral.OnboardingButton.permission + nextButton.setButtonText(buttonTitle: nextButtonText) + mainTitleText = StringLiteral.OnboardigMain.appSelect + subTitleText = StringLiteral.OnboardigSub.appSelect + } +} + +extension AppSelectViewController: NextViewPushDelegate { + func didTapButton() { + let nextViewController = AppSelectViewController() + self.navigationController?.pushViewController(nextViewController, animated: false) + } +} + + diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/ApprovePermisionController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/ApprovePermisionController.swift index ec86398..96b3745 100644 --- a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/ApprovePermisionController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/ApprovePermisionController.swift @@ -11,35 +11,13 @@ import SnapKit import Then final class ApprovePermisionController: OnboardingBaseViewController { - private let surveyView = SurveyView(buttonType: .solitary) - override func viewDidLoad() { super.viewDidLoad() - setUI() configureSurveyView() setDelegate() setTimeSurvey() } - override func viewDidAppear(_ animated: Bool) { - setUI() - } - - private func setUI(){ - setHierarchy() - setConstraints() - } - - private func setHierarchy() { - view.addSubview(surveyView) - } - - private func setConstraints() { - surveyView.snp.makeConstraints { - $0.top.equalTo(mainTitleLabel.snp.bottom).offset(94.adjustedHeight) - $0.leading.trailing.equalTo(progressBar) - } - } private func setDelegate() { self.delegate = self @@ -51,20 +29,16 @@ final class ApprovePermisionController: OnboardingBaseViewController { } private func configureSurveyView() { - nextButtonText = StringLiteral.OnboardingButton.next + nextButtonText = StringLiteral.OnboardingButton.permission nextButton.setButtonText(buttonTitle: nextButtonText) - mainTitleText = StringLiteral.OnboardigMain.selectPeriod - subTitleText = StringLiteral.OnboardigSub.selectPeriod - surveyView.firstButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.firstSelect) - surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.secondSelect) - surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.thirdSelect) - surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.fourthSelect) + mainTitleText = StringLiteral.OnboardigMain.approvePermision + subTitleText = StringLiteral.OnboardigSub.approvePermision } } extension ApprovePermisionController: NextViewPushDelegate { func didTapButton() { - let nextViewController = SelectTotalTimeController() + let nextViewController = AppSelectViewController() self.navigationController?.pushViewController(nextViewController, animated: false) } } diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift index c11515f..e78088b 100644 --- a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift @@ -11,7 +11,7 @@ import SnapKit import Then final class SelectPeriodController: OnboardingBaseViewController { - private let surveyView = SurveyView(buttonType: .solitary) + private let surveyView = SurveyView(firstButtonType: .solitary, secondButtonType: .solitary, thirdButtonType: .disabled, fourthButtonType: .disabled) override func viewDidLoad() { super.viewDidLoad() diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift index be84e1e..ec38715 100644 --- a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift @@ -11,8 +11,7 @@ import SnapKit import Then final class SelectTotalTimeController: OnboardingBaseViewController { - private let surveyView = SurveyView(buttonType: .solitary) - + private let pickerView = TotalTimePickerView() override func viewDidLoad() { super.viewDidLoad() setUI() @@ -31,11 +30,11 @@ final class SelectTotalTimeController: OnboardingBaseViewController { } private func setHierarchy() { - view.addSubview(surveyView) + view.addSubview(pickerView) } private func setConstraints() { - surveyView.snp.makeConstraints { + pickerView.snp.makeConstraints { $0.top.equalTo(mainTitleLabel.snp.bottom).offset(94.adjustedHeight) $0.leading.trailing.equalTo(progressBar) } @@ -53,12 +52,8 @@ final class SelectTotalTimeController: OnboardingBaseViewController { private func configureSurveyView() { nextButtonText = StringLiteral.OnboardingButton.next nextButton.setButtonText(buttonTitle: nextButtonText) - mainTitleText = StringLiteral.OnboardigMain.selectPeriod - subTitleText = StringLiteral.OnboardigSub.selectPeriod - surveyView.firstButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.firstSelect) - surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.secondSelect) - surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.thirdSelect) - surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.fourthSelect) + mainTitleText = StringLiteral.OnboardigMain.selectTotalTime + subTitleText = StringLiteral.OnboardigSub.selectTotalTime } } diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift index be95177..5b1c6c7 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift @@ -21,12 +21,13 @@ class OnboardingBaseViewController: UIViewController { $0.textColor = .whiteText $0.font = .iosTitle1Semibold22 $0.text = StringLiteral.OnboardingButton.next - $0.numberOfLines = 2 + $0.setTextWithLineHeightLeft(text: $0.text, lineHeight: 33) } private let subTitleLabel = UILabel().then { $0.textColor = .gray2 $0.font = .iosText6Medium14 $0.text = StringLiteral.OnboardingButton.next + $0.setTextWithLineHeightLeft(text: $0.text, lineHeight: 21) } var nextButtonText: String = StringLiteral.OnboardingButton.next var mainTitleText: String = "" @@ -87,7 +88,7 @@ class OnboardingBaseViewController: UIViewController { } subTitleLabel.snp.makeConstraints { - $0.top.equalTo(mainTitleLabel.snp.bottom).offset(4.adjusted) + $0.top.equalTo(mainTitleLabel.snp.bottom).offset(7.adjusted) $0.leading.equalTo(progressBar) } diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift index 16ef9db..eb50dbe 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift @@ -11,8 +11,7 @@ import SnapKit import Then final class ProblemSurveyViewController: OnboardingBaseViewController { - private let surveyView = SurveyView(buttonType: .multiple) - + private let surveyView = SurveyView(firstButtonType: .multiple, secondButtonType: .multiple, thirdButtonType: .multiple, fourthButtonType: .multiple) override func viewDidLoad() { super.viewDidLoad() setDelegate() diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift index e7b2963..588efb6 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift @@ -11,7 +11,7 @@ import SnapKit import Then final class TimeSurveyViewController: OnboardingBaseViewController { - private let surveyView = SurveyView(buttonType: .solitary) + private let surveyView = SurveyView(firstButtonType: .solitary, secondButtonType: .solitary, thirdButtonType: .solitary, fourthButtonType: .solitary) override func viewDidLoad() { super.viewDidLoad() diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/SurveyView.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/SurveyView.swift index c854925..fc3e4c6 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/SurveyView.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/SurveyView.swift @@ -20,17 +20,25 @@ final class SurveyView: UIView { var secondButtonText: String = "" var thirdButtonText: String = "" var fourthButtonText: String = "" - var buttonType: HMHSelectButton.HMHSelectButtonType = .solitary + var firstButtonType: HMHSelectButton.HMHSelectButtonType = .solitary + var secondButtonType: HMHSelectButton.HMHSelectButtonType = .solitary + var thirdButtonType: HMHSelectButton.HMHSelectButtonType = .solitary + var fourthButtonType: HMHSelectButton.HMHSelectButtonType = .solitary - lazy var firstButton = HMHSelectButton(buttonType: buttonType) - lazy var secondButton = HMHSelectButton(buttonType: buttonType) - lazy var thirdButton = HMHSelectButton(buttonType: buttonType) - lazy var fourthButton = HMHSelectButton(buttonType: buttonType) + lazy var firstButton = HMHSelectButton(buttonType: firstButtonType) + lazy var secondButton = HMHSelectButton(buttonType: secondButtonType) + lazy var thirdButton = HMHSelectButton(buttonType: thirdButtonType) + lazy var fourthButton = HMHSelectButton(buttonType: fourthButtonType) - - init(buttonType: HMHSelectButton.HMHSelectButtonType) { + init(firstButtonType: HMHSelectButton.HMHSelectButtonType, + secondButtonType: HMHSelectButton.HMHSelectButtonType, + thirdButtonType: HMHSelectButton.HMHSelectButtonType, + fourthButtonType: HMHSelectButton.HMHSelectButtonType) { super.init(frame: .zero) - self.buttonType = buttonType + self.firstButtonType = firstButtonType + self.secondButtonType = secondButtonType + self.thirdButtonType = thirdButtonType + self.fourthButtonType = fourthButtonType setAddTarget() setUI() @@ -62,8 +70,4 @@ final class SurveyView: UIView { private func setAddTarget() { } - - func setButtonType(buttonType: HMHSelectButton.HMHSelectButtonType) { - self.buttonType = buttonType - } } From e6472dd62ca1f2159c22ea4819bf0c6e52fffaa7 Mon Sep 17 00:00:00 2001 From: kim-seonwoo Date: Wed, 10 Jan 2024 06:09:31 +0900 Subject: [PATCH 3/6] =?UTF-8?q?[Feat/#42]=20Onboarding=20-=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=ED=99=9C=EC=84=B1=ED=99=94=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/UIComponets/HMHSelectButton.swift | 23 ++++++++++++++++++- .../OnboardingBaseViewControllers.swift | 15 +++++++++--- .../ProblemSurveyViewController.swift | 11 +++++++++ .../TimeSurveyViewController.swift | 12 ++++++++++ .../Onboarding/Views/OnboardingButton.swift | 2 +- 5 files changed, 58 insertions(+), 5 deletions(-) diff --git a/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift b/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift index b9685f0..725ef38 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift @@ -4,6 +4,9 @@ // // Created by Seonwoo Kim on 1/3/24. // +protocol HMHSelectButtonDelegate: AnyObject { + func updateAvailability(isEnabled: Bool) +} import UIKit @@ -11,6 +14,8 @@ import SnapKit import Then final class HMHSelectButton: UIButton { + weak var delegate: HMHSelectButtonDelegate? + @frozen enum HMHSelectButtonType { case solitary @@ -105,14 +110,15 @@ final class HMHSelectButton: UIButton { } setChecked(true) + setAvailability() case .multiple: let selectedCount = (superview?.subviews.compactMap { ($0 as? HMHSelectButton)?.isChecked } ?? []).filter { $0 }.count if selectedCount < 2 || isChecked { setChecked(!isChecked) + setAvailability() } - case .disabled: return } @@ -121,4 +127,19 @@ final class HMHSelectButton: UIButton { func setButtonText(buttonTitle: String) { buttonContentLabel.text = buttonTitle } + + func setAvailability() { + if (superview?.subviews.compactMap { ($0 as? HMHSelectButton)?.isChecked } ?? []).filter { $0 }.count == 0 { + updateAvailability(status: false) + } else { + updateAvailability(status: true) + } + + } + + @objc + func updateAvailability(status: Bool) { + self.delegate?.updateAvailability(isEnabled: status) + print("tap") + } } diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift index 5b1c6c7..cd9e067 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift @@ -16,7 +16,6 @@ protocol NextViewPushDelegate: AnyObject { class OnboardingBaseViewController: UIViewController { weak var delegate: NextViewPushDelegate? - let mainTitleLabel = UILabel().then { $0.textColor = .whiteText $0.font = .iosTitle1Semibold22 @@ -32,13 +31,13 @@ class OnboardingBaseViewController: UIViewController { var nextButtonText: String = StringLiteral.OnboardingButton.next var mainTitleText: String = "" var subTitleText: String = "" - let navigationBar = HMHNavigationBar(leftItem: .normal, + let navigationBar = HMHNavigationBar(leftItem: .normal, isBackButton: true, isTitleLabel: false, isPointImage: false, isBackGroundGray: false) let progressBar = ProgressBarManager.shared.progressBarView - lazy var nextButton = OnboardingButton(buttonStatus: .enabled) + lazy var nextButton = OnboardingButton(buttonStatus: .disabled) var step = 0 override func viewWillAppear(_ animated: Bool) { @@ -102,6 +101,16 @@ class OnboardingBaseViewController: UIViewController { func onTapButton() { self.delegate?.didTapButton() } + + func updateNextButtonStatus(buttonStatus: Bool) { + if buttonStatus { + self.nextButton.backgroundColor = .bluePurpleButton + self.nextButton.isEnabled = true + } else { + self.nextButton.backgroundColor = .gray4 + self.nextButton.isEnabled = false + } + } } diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift index eb50dbe..a82e76c 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift @@ -58,6 +58,11 @@ final class ProblemSurveyViewController: OnboardingBaseViewController { surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.ProblemSurveySelect.secondSelect) surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.ProblemSurveySelect.thirdSelect) surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.ProblemSurveySelect.fourthSelect) + + surveyView.firstButton.delegate = self + surveyView.secondButton.delegate = self + surveyView.thirdButton.delegate = self + surveyView.fourthButton.delegate = self } } @@ -68,3 +73,9 @@ extension ProblemSurveyViewController: NextViewPushDelegate { } } +extension ProblemSurveyViewController: HMHSelectButtonDelegate { + func updateAvailability(isEnabled: Bool) { + print("taptap") + updateNextButtonStatus(buttonStatus: isEnabled) + } +} diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift index 588efb6..32e8bd7 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift @@ -58,6 +58,11 @@ final class TimeSurveyViewController: OnboardingBaseViewController { surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.TimeSurveySelect.secondSelect) surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.TimeSurveySelect.thirdSelect) surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.TimeSurveySelect.fourthSelect) + + surveyView.firstButton.delegate = self + surveyView.secondButton.delegate = self + surveyView.thirdButton.delegate = self + surveyView.fourthButton.delegate = self } } @@ -67,3 +72,10 @@ extension TimeSurveyViewController: NextViewPushDelegate { self.navigationController?.pushViewController(nextViewController, animated: false) } } + +extension TimeSurveyViewController: HMHSelectButtonDelegate { + func updateAvailability(isEnabled: Bool) { + print("taptap") + updateNextButtonStatus(buttonStatus: isEnabled) + } +} diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift index 3f0ddd1..cf443ae 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift @@ -17,7 +17,7 @@ final class OnboardingButton: UIButton { case disabled } - private var type: OnboardingButtonType = .disabled + var type: OnboardingButtonType = .disabled private let buttonTitleLabel = UILabel().then { $0.textColor = .whiteText From e1783b8595b76e17cbc6abd0b1d96b44946ce4fe Mon Sep 17 00:00:00 2001 From: kim-seonwoo Date: Wed, 10 Jan 2024 16:20:40 +0900 Subject: [PATCH 4/6] =?UTF-8?q?[Feat/#42]=20PickerView=20-=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=ED=99=9C=EC=84=B1=ED=99=94=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewControllers/SelectTotalTimeController.swift | 8 ++++++++ .../CreateChallenge/Views/TotalTimePickerView.swift | 9 ++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift index ec38715..db3a35d 100644 --- a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectTotalTimeController.swift @@ -42,6 +42,7 @@ final class SelectTotalTimeController: OnboardingBaseViewController { private func setDelegate() { self.delegate = self + pickerView.totalTimePickerDelegate = self } private func setTimeSurvey() { @@ -63,3 +64,10 @@ extension SelectTotalTimeController: NextViewPushDelegate { self.navigationController?.pushViewController(nextViewController, animated: false) } } + +extension SelectTotalTimeController: TotalTimePickerDelegate { + func updateAvailability() { + nextButton.updateStatus(isEnabled: true) + } +} + diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/Views/TotalTimePickerView.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/Views/TotalTimePickerView.swift index 2d54704..a07ccd1 100644 --- a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/Views/TotalTimePickerView.swift +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/Views/TotalTimePickerView.swift @@ -10,7 +10,13 @@ import UIKit import SnapKit import Then +protocol TotalTimePickerDelegate: AnyObject { + func updateAvailability() +} + final class TotalTimePickerView: UIPickerView { + weak var totalTimePickerDelegate: TotalTimePickerDelegate? + private let hours: [String] = ["1", "2", "3", "4", "5", "6"] private let titleLabel = UILabel().then { @@ -43,7 +49,7 @@ final class TotalTimePickerView: UIPickerView { private func setConstraints() { titleLabel.snp.makeConstraints { $0.centerY.equalToSuperview() - $0.trailing.equalToSuperview().inset(124.adjusted) + $0.trailing.equalToSuperview().inset(110.adjusted) } } @@ -68,6 +74,7 @@ extension TotalTimePickerView: UIPickerViewDelegate { func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { self.reloadComponent(component) + self.totalTimePickerDelegate?.updateAvailability() } func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? { From 8d5ebc87f0da8ca41c99d8c38072cff1e38f24f2 Mon Sep 17 00:00:00 2001 From: kim-seonwoo Date: Wed, 10 Jan 2024 16:21:29 +0900 Subject: [PATCH 5/6] =?UTF-8?q?[Delete/#42]=20CreateChallenge=20-=20?= =?UTF-8?q?=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj | 4 ---- .../ViewControllers/AppChoiceController.swift | 8 -------- 2 files changed, 12 deletions(-) delete mode 100644 HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppChoiceController.swift diff --git a/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj b/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj index ceea8b3..168e9f4 100644 --- a/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj +++ b/HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ 0B000CE92B4D9D6E00AEC582 /* SelectPeriodController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CE82B4D9D6E00AEC582 /* SelectPeriodController.swift */; }; 0B000CEB2B4D9D9100AEC582 /* SelectTotalTimeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CEA2B4D9D9100AEC582 /* SelectTotalTimeController.swift */; }; 0B000CED2B4D9DA800AEC582 /* ApprovePermisionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CEC2B4D9DA800AEC582 /* ApprovePermisionController.swift */; }; - 0B000CEF2B4D9DBF00AEC582 /* AppChoiceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CEE2B4D9DBF00AEC582 /* AppChoiceController.swift */; }; 0B000CF12B4DA30F00AEC582 /* AppSelectViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B000CF02B4DA30F00AEC582 /* AppSelectViewController.swift */; }; 0B0035402B43D64D00DA140C /* HMHNavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B00353F2B43D64D00DA140C /* HMHNavigationBar.swift */; }; 0B2C2D3B2B443BE90023CCFA /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2C2D3A2B443BE90023CCFA /* Image.swift */; }; @@ -161,7 +160,6 @@ 0B000CE82B4D9D6E00AEC582 /* SelectPeriodController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectPeriodController.swift; sourceTree = ""; }; 0B000CEA2B4D9D9100AEC582 /* SelectTotalTimeController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectTotalTimeController.swift; sourceTree = ""; }; 0B000CEC2B4D9DA800AEC582 /* ApprovePermisionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApprovePermisionController.swift; sourceTree = ""; }; - 0B000CEE2B4D9DBF00AEC582 /* AppChoiceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppChoiceController.swift; sourceTree = ""; }; 0B000CF02B4DA30F00AEC582 /* AppSelectViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSelectViewController.swift; sourceTree = ""; }; 0B00353F2B43D64D00DA140C /* HMHNavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMHNavigationBar.swift; sourceTree = ""; }; 0B2C2D3A2B443BE90023CCFA /* Image.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Image.swift; sourceTree = ""; }; @@ -305,7 +303,6 @@ 0B000CE82B4D9D6E00AEC582 /* SelectPeriodController.swift */, 0B000CEA2B4D9D9100AEC582 /* SelectTotalTimeController.swift */, 0B000CEC2B4D9DA800AEC582 /* ApprovePermisionController.swift */, - 0B000CEE2B4D9DBF00AEC582 /* AppChoiceController.swift */, 0B000CF02B4DA30F00AEC582 /* AppSelectViewController.swift */, ); path = ViewControllers; @@ -1008,7 +1005,6 @@ 36E05FE42B487911005B633E /* GrayBackgroundView.swift in Sources */, 0B50F9CF2B369813000C5046 /* HomeViewController.swift in Sources */, 0B2C2D412B4572240023CCFA /* HMHSelectButton.swift in Sources */, - 0B000CEF2B4D9DBF00AEC582 /* AppChoiceController.swift in Sources */, 0B8A89BC2B369F2D00688BA6 /* UIView+.swift in Sources */, 0B8A89AF2B369E4300688BA6 /* HomeModel.swift in Sources */, 3666C89F2B485C8F00564874 /* DateCollectionViewCell.swift in Sources */, diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppChoiceController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppChoiceController.swift deleted file mode 100644 index 1665fff..0000000 --- a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/AppChoiceController.swift +++ /dev/null @@ -1,8 +0,0 @@ -// -// AppChoiceController.swift -// HMH_iOS -// -// Created by Seonwoo Kim on 1/10/24. -// - -import Foundation From f54708bcd1c62c9bc5fb9f2876c9338bb5460e78 Mon Sep 17 00:00:00 2001 From: kim-seonwoo Date: Wed, 10 Jan 2024 16:30:31 +0900 Subject: [PATCH 6/6] =?UTF-8?q?[Chore/#42]=20CreateChallenge=20-=20?= =?UTF-8?q?=EC=9E=90=EC=9E=98=ED=95=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/UIComponets/HMHSelectButton.swift | 10 ++++------ .../ViewControllers/SelectPeriodController.swift | 11 +++++++++++ .../OnboardingBaseViewControllers.swift | 12 +----------- .../ProblemSurveyViewController.swift | 9 ++++++--- .../ViewControllers/TimeSurveyViewController.swift | 3 +-- .../Onboarding/Views/OnboardingButton.swift | 10 ++++++++++ 6 files changed, 33 insertions(+), 22 deletions(-) diff --git a/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift b/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift index 725ef38..f31028d 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift @@ -4,15 +4,16 @@ // // Created by Seonwoo Kim on 1/3/24. // -protocol HMHSelectButtonDelegate: AnyObject { - func updateAvailability(isEnabled: Bool) -} import UIKit import SnapKit import Then +protocol HMHSelectButtonDelegate: AnyObject { + func updateAvailability(isEnabled: Bool) +} + final class HMHSelectButton: UIButton { weak var delegate: HMHSelectButtonDelegate? @@ -134,12 +135,9 @@ final class HMHSelectButton: UIButton { } else { updateAvailability(status: true) } - } - @objc func updateAvailability(status: Bool) { self.delegate?.updateAvailability(isEnabled: status) - print("tap") } } diff --git a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift index e78088b..7b47f5f 100644 --- a/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/CreateChallenge/ViewControllers/SelectPeriodController.swift @@ -59,6 +59,11 @@ final class SelectPeriodController: OnboardingBaseViewController { surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.secondSelect) surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.thirdSelect) surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.PeriodSelect.fourthSelect) + + surveyView.firstButton.delegate = self + surveyView.secondButton.delegate = self + surveyView.thirdButton.delegate = self + surveyView.fourthButton.delegate = self } } @@ -68,3 +73,9 @@ extension SelectPeriodController: NextViewPushDelegate { self.navigationController?.pushViewController(nextViewController, animated: false) } } + +extension SelectPeriodController: HMHSelectButtonDelegate { + func updateAvailability(isEnabled: Bool) { + nextButton.updateStatus(isEnabled: isEnabled) + } +} diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift index cd9e067..28ced65 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift @@ -18,7 +18,7 @@ class OnboardingBaseViewController: UIViewController { weak var delegate: NextViewPushDelegate? let mainTitleLabel = UILabel().then { $0.textColor = .whiteText - $0.font = .iosTitle1Semibold22 + $0.font = .iosTitle3Semibold22 $0.text = StringLiteral.OnboardingButton.next $0.setTextWithLineHeightLeft(text: $0.text, lineHeight: 33) } @@ -101,16 +101,6 @@ class OnboardingBaseViewController: UIViewController { func onTapButton() { self.delegate?.didTapButton() } - - func updateNextButtonStatus(buttonStatus: Bool) { - if buttonStatus { - self.nextButton.backgroundColor = .bluePurpleButton - self.nextButton.isEnabled = true - } else { - self.nextButton.backgroundColor = .gray4 - self.nextButton.isEnabled = false - } - } } diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift index a82e76c..8b52e3d 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift @@ -11,7 +11,11 @@ import SnapKit import Then final class ProblemSurveyViewController: OnboardingBaseViewController { - private let surveyView = SurveyView(firstButtonType: .multiple, secondButtonType: .multiple, thirdButtonType: .multiple, fourthButtonType: .multiple) + private let surveyView = SurveyView(firstButtonType: .multiple, + secondButtonType: .multiple, + thirdButtonType: .multiple, + fourthButtonType: .multiple) + override func viewDidLoad() { super.viewDidLoad() setDelegate() @@ -75,7 +79,6 @@ extension ProblemSurveyViewController: NextViewPushDelegate { extension ProblemSurveyViewController: HMHSelectButtonDelegate { func updateAvailability(isEnabled: Bool) { - print("taptap") - updateNextButtonStatus(buttonStatus: isEnabled) + nextButton.updateStatus(isEnabled: isEnabled) } } diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift index 32e8bd7..759bbcb 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift @@ -75,7 +75,6 @@ extension TimeSurveyViewController: NextViewPushDelegate { extension TimeSurveyViewController: HMHSelectButtonDelegate { func updateAvailability(isEnabled: Bool) { - print("taptap") - updateNextButtonStatus(buttonStatus: isEnabled) + nextButton.updateStatus(isEnabled: isEnabled) } } diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift index cf443ae..3898af4 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift @@ -73,5 +73,15 @@ final class OnboardingButton: UIButton { func setButtonText(buttonTitle: String) { buttonTitleLabel.text = buttonTitle } + + func updateStatus(isEnabled: Bool) { + if isEnabled { + self.isEnabled = true + self.backgroundColor = .bluePurpleButton + } else { + self.isEnabled = false + self.backgroundColor = .gray5 + } + } }