From 8f26a18031c6b43598739e582afd7f6a2e290c12 Mon Sep 17 00:00:00 2001 From: MaraMincho <103064352+MaraMincho@users.noreply.github.com> Date: Sat, 18 Nov 2023 00:15:20 +0900 Subject: [PATCH 1/8] =?UTF-8?q?feat:=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Application/SceneDelegate.swift | 5 +- .../View/ExerciseCardCell.swift | 121 ++++++++++++++++++ ...erciseEnvironmentSetupViewController.swift | 98 ++++++++++++++ .../View/ExerciseSelectViewController.swift | 109 ++++++++++++++++ .../Sources/ConstraintsGuideLine.swift | 13 ++ 5 files changed, 343 insertions(+), 3 deletions(-) create mode 100644 iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift create mode 100644 iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift create mode 100644 iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift create mode 100644 iOS/Projects/Shared/DesignSystem/Sources/ConstraintsGuideLine.swift diff --git a/iOS/Projects/App/Sources/Application/SceneDelegate.swift b/iOS/Projects/App/Sources/Application/SceneDelegate.swift index f925bca4..1b0fd5c8 100644 --- a/iOS/Projects/App/Sources/Application/SceneDelegate.swift +++ b/iOS/Projects/App/Sources/Application/SceneDelegate.swift @@ -6,6 +6,7 @@ // Copyright © 2023 kr.codesquad.boostcamp8. All rights reserved. // +import RecordFeature import UIKit final class SceneDelegate: UIResponder, UIWindowSceneDelegate { @@ -15,9 +16,7 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate { guard let windowScene = scene as? UIWindowScene else { return } let navigationController = UINavigationController() window = UIWindow(windowScene: windowScene) - window?.rootViewController = navigationController - let coordinator = AppCoordinator(navigationController: navigationController) - coordinator.start() + window?.rootViewController = ExerciseEnvironmentSetupViewController() window?.makeKeyAndVisible() } } diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift new file mode 100644 index 00000000..abcb6885 --- /dev/null +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift @@ -0,0 +1,121 @@ +// +// ExerciseCardCell.swift +// RecordFeature +// +// Created by MaraMincho on 11/16/23. +// Copyright © 2023 kr.codesquad.boostcamp8. All rights reserved. +// + +import DesignSystem +import UIKit + +// MARK: - ExerciseCardCell + +class ExerciseCardCell: UICollectionViewCell { + static let identifier = "ExerciseCardCell" + + override init(frame: CGRect) { + super.init(frame: frame) + shadowDecorate() + backgroundColor = .white + setupConstraints() + } + + override var isSelected: Bool { + didSet { + if isSelected { + makeSelectUI() + } else { + makeDeslectUI() + } + } + } + + private let exerciseIconDescriptionLagel: UILabel = { + let label = UILabel() + label.font = UIFont.preferredFont(forTextStyle: .title3) + label.textAlignment = .center + label.text = "달리기에용" + label.contentMode = .scaleAspectFit + + label.translatesAutoresizingMaskIntoConstraints = false + return label + }() + + private let exerciseIcon: UIImageView = { + let config = UIImage.SymbolConfiguration(font: .systemFont(ofSize: 120)) + let icon = UIImage(systemName: "figure.run", withConfiguration: config) + let imageView = UIImageView(image: icon) + imageView.contentMode = .scaleAspectFit + imageView.tintColor = DesignSystemColor.primaryText + + imageView.translatesAutoresizingMaskIntoConstraints = false + return imageView + }() + + required init?(coder: NSCoder) { + super.init(coder: coder) + } +} + +private extension ExerciseCardCell { + func setupConstraints() { + contentView.addSubview(exerciseIconDescriptionLagel) + exerciseIconDescriptionLagel.bottomAnchor + .constraint(equalTo: contentView.bottomAnchor, constant: -12).isActive = true + exerciseIconDescriptionLagel.leadingAnchor + .constraint(equalTo: contentView.leadingAnchor, constant: 0).isActive = true + exerciseIconDescriptionLagel.trailingAnchor + .constraint(equalTo: contentView.trailingAnchor, constant: 0).isActive = true + + contentView.addSubview(exerciseIcon) + exerciseIcon.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 5).isActive = true + exerciseIcon.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -5).isActive = true + exerciseIcon.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 5).isActive = true + exerciseIcon.bottomAnchor.constraint(equalTo: exerciseIconDescriptionLagel.topAnchor, constant: -15).isActive = true + } + + func shadowDecorate() { + let radius: CGFloat = 10 + contentView.layer.cornerRadius = radius + contentView.layer.borderWidth = 1 + contentView.layer.borderColor = UIColor.clear.cgColor + contentView.layer.masksToBounds = true + + layer.shadowColor = UIColor.black.cgColor + layer.shadowOffset = CGSize(width: 0, height: 1.0) + layer.shadowRadius = 2.0 + layer.shadowOpacity = 0.5 + layer.masksToBounds = false + layer.shadowPath = UIBezierPath(roundedRect: bounds, cornerRadius: radius).cgPath + layer.cornerRadius = radius + } + + func makeSelectUI() { + exerciseIcon.tintColor = DesignSystemColor.main03 + exerciseIcon.makeShadow() + exerciseIconDescriptionLagel.textColor = DesignSystemColor.main03 + exerciseIconDescriptionLagel.font = .preferredFont(forTextStyle: .title3, with: .traitBold) + } + + func makeDeslectUI() { + exerciseIcon.tintColor = DesignSystemColor.primaryText + exerciseIcon.disableShadow() + exerciseIconDescriptionLagel.textColor = DesignSystemColor.primaryText + exerciseIconDescriptionLagel.font = .preferredFont(forTextStyle: .title3) + } +} + +private extension UIImageView { + func makeShadow() { + layer.shadowColor = UIColor.black.cgColor + layer.shadowOffset = CGSize(width: -2, height: 2) + layer.shadowRadius = 2.0 + layer.shadowOpacity = 0.3 + layer.masksToBounds = false + } + + func disableShadow() { + layer.shadowOpacity = 0 + } +} diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift new file mode 100644 index 00000000..b279acc3 --- /dev/null +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift @@ -0,0 +1,98 @@ +// +// ExerciseEnvironmentSetupViewController.swift +// RecordFeature +// +// Created by MaraMincho on 11/15/23. +// Copyright © 2023 kr.codesquad.boostcamp8. All rights reserved. +// + +import DesignSystem +import UIKit + +// MARK: - ExerciseEnvironmentSetupViewController + +public final class ExerciseEnvironmentSetupViewController: UIViewController { + public init() { + super.init(nibName: nil, bundle: nil) + } + + public required init?(coder: NSCoder) { + super.init(coder: coder) + } + + override public func viewDidLoad() { + super.viewDidLoad() + setup() + } + + override public func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + insertTempSource() + } + + lazy var contentNAV: UINavigationController = { + let nav = UINavigationController(rootViewController: exerciseSelectView) + + return nav + }() + + private let exerciseSelectView = ExerciseSelectViewController() + + private let pageControl: GWPageControl = { + let pageControl = GWPageControl(count: Const.countOfPage) + + pageControl.translatesAutoresizingMaskIntoConstraints = false + return pageControl + }() + + var dataSource: UICollectionViewDiffableDataSource! + var exerciseCardCollectionView: UICollectionView! +} + +private extension ExerciseEnvironmentSetupViewController { + func setup() { + view.backgroundColor = .systemBackground + setupConstraints() + exerciseCardCollectionView = exerciseSelectView.exerciseCardCollectionView + + configureDataSource() + } + + func configureDataSource() { + dataSource = .init(collectionView: exerciseCardCollectionView, cellProvider: { collectionView, indexPath, _ in + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: ExerciseCardCell.identifier, for: indexPath) + return cell + }) + } + + func insertTempSource() { + var snapshot = dataSource.snapshot() + snapshot.deleteAllItems() + snapshot.appendSections([0]) + snapshot.appendItems([.init(), .init(), .init(), .init(), .init()]) + + dataSource.apply(snapshot) + } + + func setupConstraints() { + let safeArea = view.safeAreaLayoutGuide + + view.addSubview(pageControl) + pageControl.topAnchor.constraint(equalTo: safeArea.topAnchor, constant: 10).isActive = true + pageControl.leadingAnchor.constraint(equalTo: safeArea.leadingAnchor, constant: 23).isActive = true + pageControl.trailingAnchor.constraint(equalTo: safeArea.trailingAnchor, constant: -23).isActive = true + pageControl.heightAnchor.constraint(equalToConstant: 30).isActive = true + + view.addSubview(contentNAV.view) + contentNAV.view.translatesAutoresizingMaskIntoConstraints = false + contentNAV.view.leadingAnchor.constraint(equalTo: safeArea.leadingAnchor).isActive = true + contentNAV.view.trailingAnchor.constraint(equalTo: safeArea.trailingAnchor).isActive = true + contentNAV.view.topAnchor.constraint(equalTo: pageControl.bottomAnchor).isActive = true + contentNAV.view.bottomAnchor.constraint(equalTo: safeArea.bottomAnchor).isActive = true + } + + enum Const { + static let countOfPage = 2 + } +} diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift new file mode 100644 index 00000000..efaf8798 --- /dev/null +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift @@ -0,0 +1,109 @@ +// +// ExerciseSelectViewController.swift +// RecordFeature +// +// Created by MaraMincho on 11/16/23. +// Copyright © 2023 kr.codesquad.boostcamp8. All rights reserved. +// + +import DesignSystem +import UIKit + +// MARK: - ExerciseSelectViewController + +final class ExerciseSelectViewController: UIViewController { + override init(nibName _: String?, bundle _: Bundle?) { + super.init(nibName: nil, bundle: nil) + } + + override func viewDidLoad() { + super.viewDidLoad() + setupConstraints() + navigationController?.setNavigationBarHidden(true, animated: false) + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + } + + private let exerciseSelectDescriptionLabel: UILabel = { + let label = UILabel() + label.font = .preferredFont(forTextStyle: .title1, with: .traitBold) + label.textAlignment = .left + label.text = "1. 운동을 선택하세요" + + label.translatesAutoresizingMaskIntoConstraints = false + return label + }() + + lazy var exerciseCardCollectionView: UICollectionView = { + let collectionView = UICollectionView(frame: .zero, collectionViewLayout: makeCollectionViewLayout()) + collectionView.register(ExerciseCardCell.self, forCellWithReuseIdentifier: ExerciseCardCell.identifier) + + collectionView.translatesAutoresizingMaskIntoConstraints = false + return collectionView + }() + + private let nextButton: UIButton = { + let button = UIButton() + button.configurationUpdateHandler = UIButton.Configuration.main(label: "다음") + + button.translatesAutoresizingMaskIntoConstraints = false + return button + }() +} + +private extension ExerciseSelectViewController { + func makeCollectionViewLayout() -> UICollectionViewLayout { + let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.5), heightDimension: .fractionalHeight(1)) + + let item = NSCollectionLayoutItem(layoutSize: itemSize) + item.contentInsets = .init( + top: Const.CellInset, + leading: Const.CellInset, + bottom: Const.CellInset, + trailing: Const.CellInset + ) + + let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), + heightDimension: .fractionalWidth(0.55)) + let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitems: [item]) + + let section = NSCollectionLayoutSection(group: group) + + return UICollectionViewCompositionalLayout(section: section) + } + + func setupConstraints() { + let safeArea = view.safeAreaLayoutGuide + + view.addSubview(exerciseSelectDescriptionLabel) + exerciseSelectDescriptionLabel.topAnchor.constraint(equalTo: safeArea.topAnchor).isActive = true + exerciseSelectDescriptionLabel.leadingAnchor + .constraint(equalTo: safeArea.leadingAnchor, constant: ConstraintsGuideLine.value).isActive = true + exerciseSelectDescriptionLabel.trailingAnchor + .constraint(equalTo: safeArea.trailingAnchor, constant: -ConstraintsGuideLine.value).isActive = true + + view.addSubview(exerciseCardCollectionView) + exerciseCardCollectionView.topAnchor + .constraint(equalTo: exerciseSelectDescriptionLabel.bottomAnchor, constant: 12).isActive = true + exerciseCardCollectionView.leadingAnchor + .constraint(equalTo: safeArea.leadingAnchor, constant: ConstraintsGuideLine.value).isActive = true + exerciseCardCollectionView.trailingAnchor + .constraint(equalTo: safeArea.trailingAnchor, constant: -ConstraintsGuideLine.value).isActive = true + exerciseCardCollectionView.bottomAnchor + .constraint(equalTo: view.bottomAnchor, constant: -15).isActive = true + + view.addSubview(nextButton) + nextButton.leadingAnchor + .constraint(equalTo: safeArea.leadingAnchor, constant: ConstraintsGuideLine.value).isActive = true + nextButton.trailingAnchor + .constraint(equalTo: safeArea.trailingAnchor, constant: -ConstraintsGuideLine.value).isActive = true + nextButton.bottomAnchor + .constraint(equalTo: safeArea.bottomAnchor, constant: -28).isActive = true + } + + enum Const { + static let CellInset: CGFloat = 5 + } +} diff --git a/iOS/Projects/Shared/DesignSystem/Sources/ConstraintsGuideLine.swift b/iOS/Projects/Shared/DesignSystem/Sources/ConstraintsGuideLine.swift new file mode 100644 index 00000000..f9e1f63d --- /dev/null +++ b/iOS/Projects/Shared/DesignSystem/Sources/ConstraintsGuideLine.swift @@ -0,0 +1,13 @@ +// +// ConstraintsGuideLine.swift +// DesignSystem +// +// Created by MaraMincho on 11/18/23. +// Copyright © 2023 kr.codesquad.boostcamp8. All rights reserved. +// + +import Foundation + +public enum ConstraintsGuideLine { + public static let value: CGFloat = 23 +} From 7b7783f6d5558a4afdaf6b9ab3d0d63f6026bc1f Mon Sep 17 00:00:00 2001 From: MaraMincho <103064352+MaraMincho@users.noreply.github.com> Date: Sat, 18 Nov 2023 00:17:52 +0900 Subject: [PATCH 2/8] =?UTF-8?q?chore:=20sceneDelegate=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/Projects/App/Sources/Application/SceneDelegate.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/iOS/Projects/App/Sources/Application/SceneDelegate.swift b/iOS/Projects/App/Sources/Application/SceneDelegate.swift index 1b0fd5c8..105399f1 100644 --- a/iOS/Projects/App/Sources/Application/SceneDelegate.swift +++ b/iOS/Projects/App/Sources/Application/SceneDelegate.swift @@ -16,7 +16,9 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate { guard let windowScene = scene as? UIWindowScene else { return } let navigationController = UINavigationController() window = UIWindow(windowScene: windowScene) - window?.rootViewController = ExerciseEnvironmentSetupViewController() + window?.rootViewController = navigationController + let coordinator = AppCoordinator(navigationController: navigationController) + coordinator.start() window?.makeKeyAndVisible() } } From 12973f1121e7e2ca3f8a75f1ae06799638ec9b69 Mon Sep 17 00:00:00 2001 From: MaraMincho <103064352+MaraMincho@users.noreply.github.com> Date: Sat, 18 Nov 2023 00:37:10 +0900 Subject: [PATCH 3/8] =?UTF-8?q?chor:=20CardCell=EC=97=90=20Rounded?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=EA=B3=BC=20DropShadow=20=ED=95=A8=EC=88=98?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/ExerciseSelectScene/View/ExerciseCardCell.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift index abcb6885..2854b538 100644 --- a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift @@ -16,7 +16,7 @@ class ExerciseCardCell: UICollectionViewCell { override init(frame: CGRect) { super.init(frame: frame) - shadowDecorate() + makeShaodwAndRounded() backgroundColor = .white setupConstraints() } @@ -75,7 +75,7 @@ private extension ExerciseCardCell { exerciseIcon.bottomAnchor.constraint(equalTo: exerciseIconDescriptionLagel.topAnchor, constant: -15).isActive = true } - func shadowDecorate() { + func makeShaodwAndRounded() { let radius: CGFloat = 10 contentView.layer.cornerRadius = radius contentView.layer.borderWidth = 1 From 14c7f08ae949ee91e0770dfde5fe2e788f567b6f Mon Sep 17 00:00:00 2001 From: MaraMincho <103064352+MaraMincho@users.noreply.github.com> Date: Sat, 18 Nov 2023 00:41:42 +0900 Subject: [PATCH 4/8] =?UTF-8?q?chor:=20SceneDelegate=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/Projects/App/Sources/Application/SceneDelegate.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/iOS/Projects/App/Sources/Application/SceneDelegate.swift b/iOS/Projects/App/Sources/Application/SceneDelegate.swift index 105399f1..f925bca4 100644 --- a/iOS/Projects/App/Sources/Application/SceneDelegate.swift +++ b/iOS/Projects/App/Sources/Application/SceneDelegate.swift @@ -6,7 +6,6 @@ // Copyright © 2023 kr.codesquad.boostcamp8. All rights reserved. // -import RecordFeature import UIKit final class SceneDelegate: UIResponder, UIWindowSceneDelegate { From 6eef30b7a5cc407b4fc79070cc527da1323877bd Mon Sep 17 00:00:00 2001 From: MaraMincho <103064352+MaraMincho@users.noreply.github.com> Date: Sat, 18 Nov 2023 12:42:03 +0900 Subject: [PATCH 5/8] =?UTF-8?q?chor:=20=ED=94=BC=EB=93=9C=EB=B0=B1=20?= =?UTF-8?q?=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 오타 및 함수명 변경 --- .../View/ExerciseCardCell.swift | 24 +++++++++---------- ...erciseEnvironmentSetupViewController.swift | 15 ++++-------- .../View/ExerciseSelectViewController.swift | 19 +++++---------- 3 files changed, 22 insertions(+), 36 deletions(-) diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift index 2854b538..bb73e16c 100644 --- a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift @@ -16,7 +16,7 @@ class ExerciseCardCell: UICollectionViewCell { override init(frame: CGRect) { super.init(frame: frame) - makeShaodwAndRounded() + makeShadowAndRounded() backgroundColor = .white setupConstraints() } @@ -31,7 +31,7 @@ class ExerciseCardCell: UICollectionViewCell { } } - private let exerciseIconDescriptionLagel: UILabel = { + private let exerciseIconDescriptionLabel: UILabel = { let label = UILabel() label.font = UIFont.preferredFont(forTextStyle: .title3) label.textAlignment = .center @@ -60,22 +60,22 @@ class ExerciseCardCell: UICollectionViewCell { private extension ExerciseCardCell { func setupConstraints() { - contentView.addSubview(exerciseIconDescriptionLagel) - exerciseIconDescriptionLagel.bottomAnchor + contentView.addSubview(exerciseIconDescriptionLabel) + exerciseIconDescriptionLabel.bottomAnchor .constraint(equalTo: contentView.bottomAnchor, constant: -12).isActive = true - exerciseIconDescriptionLagel.leadingAnchor + exerciseIconDescriptionLabel.leadingAnchor .constraint(equalTo: contentView.leadingAnchor, constant: 0).isActive = true - exerciseIconDescriptionLagel.trailingAnchor + exerciseIconDescriptionLabel.trailingAnchor .constraint(equalTo: contentView.trailingAnchor, constant: 0).isActive = true contentView.addSubview(exerciseIcon) exerciseIcon.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 5).isActive = true exerciseIcon.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -5).isActive = true exerciseIcon.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 5).isActive = true - exerciseIcon.bottomAnchor.constraint(equalTo: exerciseIconDescriptionLagel.topAnchor, constant: -15).isActive = true + exerciseIcon.bottomAnchor.constraint(equalTo: exerciseIconDescriptionLabel.topAnchor, constant: -15).isActive = true } - func makeShaodwAndRounded() { + func makeShadowAndRounded() { let radius: CGFloat = 10 contentView.layer.cornerRadius = radius contentView.layer.borderWidth = 1 @@ -94,15 +94,15 @@ private extension ExerciseCardCell { func makeSelectUI() { exerciseIcon.tintColor = DesignSystemColor.main03 exerciseIcon.makeShadow() - exerciseIconDescriptionLagel.textColor = DesignSystemColor.main03 - exerciseIconDescriptionLagel.font = .preferredFont(forTextStyle: .title3, with: .traitBold) + exerciseIconDescriptionLabel.textColor = DesignSystemColor.main03 + exerciseIconDescriptionLabel.font = .preferredFont(forTextStyle: .title3, with: .traitBold) } func makeDeslectUI() { exerciseIcon.tintColor = DesignSystemColor.primaryText exerciseIcon.disableShadow() - exerciseIconDescriptionLagel.textColor = DesignSystemColor.primaryText - exerciseIconDescriptionLagel.font = .preferredFont(forTextStyle: .title3) + exerciseIconDescriptionLabel.textColor = DesignSystemColor.primaryText + exerciseIconDescriptionLabel.font = .preferredFont(forTextStyle: .title3) } } diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift index b279acc3..88359dad 100644 --- a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift @@ -12,13 +12,6 @@ import UIKit // MARK: - ExerciseEnvironmentSetupViewController public final class ExerciseEnvironmentSetupViewController: UIViewController { - public init() { - super.init(nibName: nil, bundle: nil) - } - - public required init?(coder: NSCoder) { - super.init(coder: coder) - } override public func viewDidLoad() { super.viewDidLoad() @@ -40,7 +33,7 @@ public final class ExerciseEnvironmentSetupViewController: UIViewController { private let exerciseSelectView = ExerciseSelectViewController() private let pageControl: GWPageControl = { - let pageControl = GWPageControl(count: Const.countOfPage) + let pageControl = GWPageControl(count: Constant.countOfPage) pageControl.translatesAutoresizingMaskIntoConstraints = false return pageControl @@ -53,7 +46,7 @@ public final class ExerciseEnvironmentSetupViewController: UIViewController { private extension ExerciseEnvironmentSetupViewController { func setup() { view.backgroundColor = .systemBackground - setupConstraints() + setupViewHierarchyAndConstraints() exerciseCardCollectionView = exerciseSelectView.exerciseCardCollectionView configureDataSource() @@ -75,7 +68,7 @@ private extension ExerciseEnvironmentSetupViewController { dataSource.apply(snapshot) } - func setupConstraints() { + func setupViewHierarchyAndConstraints() { let safeArea = view.safeAreaLayoutGuide view.addSubview(pageControl) @@ -92,7 +85,7 @@ private extension ExerciseEnvironmentSetupViewController { contentNAV.view.bottomAnchor.constraint(equalTo: safeArea.bottomAnchor).isActive = true } - enum Const { + enum Constant { static let countOfPage = 2 } } diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift index efaf8798..26f6f38a 100644 --- a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift @@ -11,10 +11,7 @@ import UIKit // MARK: - ExerciseSelectViewController -final class ExerciseSelectViewController: UIViewController { - override init(nibName _: String?, bundle _: Bundle?) { - super.init(nibName: nil, bundle: nil) - } +final class ExerciseSelectViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() @@ -22,10 +19,6 @@ final class ExerciseSelectViewController: UIViewController { navigationController?.setNavigationBarHidden(true, animated: false) } - required init?(coder: NSCoder) { - super.init(coder: coder) - } - private let exerciseSelectDescriptionLabel: UILabel = { let label = UILabel() label.font = .preferredFont(forTextStyle: .title1, with: .traitBold) @@ -59,10 +52,10 @@ private extension ExerciseSelectViewController { let item = NSCollectionLayoutItem(layoutSize: itemSize) item.contentInsets = .init( - top: Const.CellInset, - leading: Const.CellInset, - bottom: Const.CellInset, - trailing: Const.CellInset + top: Const.cellInsets, + leading: Const.cellInsets, + bottom: Const.cellInsets, + trailing: Const.cellInsets ) let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), @@ -104,6 +97,6 @@ private extension ExerciseSelectViewController { } enum Const { - static let CellInset: CGFloat = 5 + static let cellInsets: CGFloat = 5 } } From 401efaa233b2f30b126198d0c3d9427c4c25833c Mon Sep 17 00:00:00 2001 From: MaraMincho <103064352+MaraMincho@users.noreply.github.com> Date: Sat, 18 Nov 2023 13:06:26 +0900 Subject: [PATCH 6/8] =?UTF-8?q?chore:=20=EB=8B=A4=ED=81=AC=EB=AA=A8?= =?UTF-8?q?=EB=93=9C=20=EB=8C=80=EC=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/Projects/App/Sources/Application/SceneDelegate.swift | 6 ++++-- .../Sources/ExerciseSelectScene/View/ExerciseCardCell.swift | 2 +- .../View/ExerciseEnvironmentSetupViewController.swift | 1 - .../View/ExerciseSelectViewController.swift | 3 +-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/iOS/Projects/App/Sources/Application/SceneDelegate.swift b/iOS/Projects/App/Sources/Application/SceneDelegate.swift index f925bca4..c7be4d3f 100644 --- a/iOS/Projects/App/Sources/Application/SceneDelegate.swift +++ b/iOS/Projects/App/Sources/Application/SceneDelegate.swift @@ -6,6 +6,7 @@ // Copyright © 2023 kr.codesquad.boostcamp8. All rights reserved. // +import RecordFeature import UIKit final class SceneDelegate: UIResponder, UIWindowSceneDelegate { @@ -16,8 +17,9 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate { let navigationController = UINavigationController() window = UIWindow(windowScene: windowScene) window?.rootViewController = navigationController - let coordinator = AppCoordinator(navigationController: navigationController) - coordinator.start() +// let coordinator = AppCoordinator(navigationController: navigationController) +// coordinator.start() + window?.rootViewController = ExerciseEnvironmentSetupViewController() window?.makeKeyAndVisible() } } diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift index bb73e16c..4d32278a 100644 --- a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift @@ -17,7 +17,7 @@ class ExerciseCardCell: UICollectionViewCell { override init(frame: CGRect) { super.init(frame: frame) makeShadowAndRounded() - backgroundColor = .white + backgroundColor = DesignSystemColor.primaryBackGround setupConstraints() } diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift index 88359dad..2ce6f86e 100644 --- a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift @@ -12,7 +12,6 @@ import UIKit // MARK: - ExerciseEnvironmentSetupViewController public final class ExerciseEnvironmentSetupViewController: UIViewController { - override public func viewDidLoad() { super.viewDidLoad() setup() diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift index 26f6f38a..0e55ccf4 100644 --- a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift @@ -11,8 +11,7 @@ import UIKit // MARK: - ExerciseSelectViewController -final class ExerciseSelectViewController: UIViewController { - +final class ExerciseSelectViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() setupConstraints() From bdb409788497cb492ce6dfeac0ebd01b162591a5 Mon Sep 17 00:00:00 2001 From: MaraMincho <103064352+MaraMincho@users.noreply.github.com> Date: Sat, 18 Nov 2023 14:15:04 +0900 Subject: [PATCH 7/8] =?UTF-8?q?chor:=20=ED=94=BC=EB=93=9C=EB=B0=B1=20?= =?UTF-8?q?=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Application/SceneDelegate.swift | 5 +- ...seCardCell.swift => WorkoutCardCell.swift} | 50 ++++++++++--------- ...rkoutEnvironmentSetupViewController.swift} | 20 ++++---- ...wift => WorkoutSelectViewController.swift} | 34 ++++++------- 4 files changed, 55 insertions(+), 54 deletions(-) rename iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/{ExerciseCardCell.swift => WorkoutCardCell.swift} (62%) rename iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/{ExerciseEnvironmentSetupViewController.swift => WorkoutEnvironmentSetupViewController.swift} (76%) rename iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/{ExerciseSelectViewController.swift => WorkoutSelectViewController.swift} (74%) diff --git a/iOS/Projects/App/Sources/Application/SceneDelegate.swift b/iOS/Projects/App/Sources/Application/SceneDelegate.swift index c7be4d3f..105399f1 100644 --- a/iOS/Projects/App/Sources/Application/SceneDelegate.swift +++ b/iOS/Projects/App/Sources/Application/SceneDelegate.swift @@ -17,9 +17,8 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate { let navigationController = UINavigationController() window = UIWindow(windowScene: windowScene) window?.rootViewController = navigationController -// let coordinator = AppCoordinator(navigationController: navigationController) -// coordinator.start() - window?.rootViewController = ExerciseEnvironmentSetupViewController() + let coordinator = AppCoordinator(navigationController: navigationController) + coordinator.start() window?.makeKeyAndVisible() } } diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutCardCell.swift similarity index 62% rename from iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift rename to iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutCardCell.swift index 4d32278a..8196eb54 100644 --- a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseCardCell.swift +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutCardCell.swift @@ -1,5 +1,5 @@ // -// ExerciseCardCell.swift +// WorkoutCardCell.swift // RecordFeature // // Created by MaraMincho on 11/16/23. @@ -9,10 +9,10 @@ import DesignSystem import UIKit -// MARK: - ExerciseCardCell +// MARK: - WorkoutCardCell -class ExerciseCardCell: UICollectionViewCell { - static let identifier = "ExerciseCardCell" +class WorkoutCardCell: UICollectionViewCell { + static let identifier = "WorkoutCardCell" override init(frame: CGRect) { super.init(frame: frame) @@ -31,7 +31,7 @@ class ExerciseCardCell: UICollectionViewCell { } } - private let exerciseIconDescriptionLabel: UILabel = { + private let workoutIconDescriptionLabel: UILabel = { let label = UILabel() label.font = UIFont.preferredFont(forTextStyle: .title3) label.textAlignment = .center @@ -42,7 +42,7 @@ class ExerciseCardCell: UICollectionViewCell { return label }() - private let exerciseIcon: UIImageView = { + private let workoutIcon: UIImageView = { let config = UIImage.SymbolConfiguration(font: .systemFont(ofSize: 120)) let icon = UIImage(systemName: "figure.run", withConfiguration: config) let imageView = UIImageView(image: icon) @@ -58,21 +58,21 @@ class ExerciseCardCell: UICollectionViewCell { } } -private extension ExerciseCardCell { +private extension WorkoutCardCell { func setupConstraints() { - contentView.addSubview(exerciseIconDescriptionLabel) - exerciseIconDescriptionLabel.bottomAnchor + contentView.addSubview(workoutIconDescriptionLabel) + workoutIconDescriptionLabel.bottomAnchor .constraint(equalTo: contentView.bottomAnchor, constant: -12).isActive = true - exerciseIconDescriptionLabel.leadingAnchor + workoutIconDescriptionLabel.leadingAnchor .constraint(equalTo: contentView.leadingAnchor, constant: 0).isActive = true - exerciseIconDescriptionLabel.trailingAnchor + workoutIconDescriptionLabel.trailingAnchor .constraint(equalTo: contentView.trailingAnchor, constant: 0).isActive = true - contentView.addSubview(exerciseIcon) - exerciseIcon.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 5).isActive = true - exerciseIcon.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -5).isActive = true - exerciseIcon.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 5).isActive = true - exerciseIcon.bottomAnchor.constraint(equalTo: exerciseIconDescriptionLabel.topAnchor, constant: -15).isActive = true + contentView.addSubview(workoutIcon) + workoutIcon.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 5).isActive = true + workoutIcon.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -5).isActive = true + workoutIcon.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 5).isActive = true + workoutIcon.bottomAnchor.constraint(equalTo: workoutIconDescriptionLabel.topAnchor, constant: -15).isActive = true } func makeShadowAndRounded() { @@ -92,17 +92,19 @@ private extension ExerciseCardCell { } func makeSelectUI() { - exerciseIcon.tintColor = DesignSystemColor.main03 - exerciseIcon.makeShadow() - exerciseIconDescriptionLabel.textColor = DesignSystemColor.main03 - exerciseIconDescriptionLabel.font = .preferredFont(forTextStyle: .title3, with: .traitBold) + workoutIcon.tintColor = DesignSystemColor.main03 + workoutIcon.makeShadow() + + workoutIconDescriptionLabel.textColor = DesignSystemColor.main03 + workoutIconDescriptionLabel.font = .preferredFont(forTextStyle: .title3, with: .traitBold) } func makeDeslectUI() { - exerciseIcon.tintColor = DesignSystemColor.primaryText - exerciseIcon.disableShadow() - exerciseIconDescriptionLabel.textColor = DesignSystemColor.primaryText - exerciseIconDescriptionLabel.font = .preferredFont(forTextStyle: .title3) + workoutIcon.tintColor = DesignSystemColor.primaryText + workoutIcon.disableShadow() + + workoutIconDescriptionLabel.textColor = DesignSystemColor.primaryText + workoutIconDescriptionLabel.font = .preferredFont(forTextStyle: .title3) } } diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutEnvironmentSetupViewController.swift similarity index 76% rename from iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift rename to iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutEnvironmentSetupViewController.swift index 2ce6f86e..b1b55dc7 100644 --- a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseEnvironmentSetupViewController.swift +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutEnvironmentSetupViewController.swift @@ -1,5 +1,5 @@ // -// ExerciseEnvironmentSetupViewController.swift +// WorkoutEnvironmentSetupViewController.swift // RecordFeature // // Created by MaraMincho on 11/15/23. @@ -9,9 +9,9 @@ import DesignSystem import UIKit -// MARK: - ExerciseEnvironmentSetupViewController +// MARK: - WorkoutEnvironmentSetupViewController -public final class ExerciseEnvironmentSetupViewController: UIViewController { +public final class WorkoutEnvironmentSetupViewController: UIViewController { override public func viewDidLoad() { super.viewDidLoad() setup() @@ -24,12 +24,12 @@ public final class ExerciseEnvironmentSetupViewController: UIViewController { } lazy var contentNAV: UINavigationController = { - let nav = UINavigationController(rootViewController: exerciseSelectView) + let nav = UINavigationController(rootViewController: workoutSelectView) return nav }() - private let exerciseSelectView = ExerciseSelectViewController() + private let workoutSelectView = WorkoutSelectViewController() private let pageControl: GWPageControl = { let pageControl = GWPageControl(count: Constant.countOfPage) @@ -39,21 +39,21 @@ public final class ExerciseEnvironmentSetupViewController: UIViewController { }() var dataSource: UICollectionViewDiffableDataSource! - var exerciseCardCollectionView: UICollectionView! + var workoutCardCollectionView: UICollectionView! } -private extension ExerciseEnvironmentSetupViewController { +private extension WorkoutEnvironmentSetupViewController { func setup() { view.backgroundColor = .systemBackground setupViewHierarchyAndConstraints() - exerciseCardCollectionView = exerciseSelectView.exerciseCardCollectionView + workoutCardCollectionView = workoutSelectView.workoutCardCollectionView configureDataSource() } func configureDataSource() { - dataSource = .init(collectionView: exerciseCardCollectionView, cellProvider: { collectionView, indexPath, _ in - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: ExerciseCardCell.identifier, for: indexPath) + dataSource = .init(collectionView: workoutCardCollectionView, cellProvider: { collectionView, indexPath, _ in + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: WorkoutCardCell.identifier, for: indexPath) return cell }) } diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutSelectViewController.swift similarity index 74% rename from iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift rename to iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutSelectViewController.swift index 0e55ccf4..a0aaf22a 100644 --- a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/ExerciseSelectViewController.swift +++ b/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutSelectViewController.swift @@ -1,5 +1,5 @@ // -// ExerciseSelectViewController.swift +// WorkoutSelectViewController.swift // RecordFeature // // Created by MaraMincho on 11/16/23. @@ -9,16 +9,16 @@ import DesignSystem import UIKit -// MARK: - ExerciseSelectViewController +// MARK: - WorkoutSelectViewController -final class ExerciseSelectViewController: UIViewController { +final class WorkoutSelectViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() setupConstraints() navigationController?.setNavigationBarHidden(true, animated: false) } - private let exerciseSelectDescriptionLabel: UILabel = { + private let workoutSelectDescriptionLabel: UILabel = { let label = UILabel() label.font = .preferredFont(forTextStyle: .title1, with: .traitBold) label.textAlignment = .left @@ -28,9 +28,9 @@ final class ExerciseSelectViewController: UIViewController { return label }() - lazy var exerciseCardCollectionView: UICollectionView = { + lazy var workoutCardCollectionView: UICollectionView = { let collectionView = UICollectionView(frame: .zero, collectionViewLayout: makeCollectionViewLayout()) - collectionView.register(ExerciseCardCell.self, forCellWithReuseIdentifier: ExerciseCardCell.identifier) + collectionView.register(WorkoutCardCell.self, forCellWithReuseIdentifier: WorkoutCardCell.identifier) collectionView.translatesAutoresizingMaskIntoConstraints = false return collectionView @@ -45,7 +45,7 @@ final class ExerciseSelectViewController: UIViewController { }() } -private extension ExerciseSelectViewController { +private extension WorkoutSelectViewController { func makeCollectionViewLayout() -> UICollectionViewLayout { let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.5), heightDimension: .fractionalHeight(1)) @@ -69,21 +69,21 @@ private extension ExerciseSelectViewController { func setupConstraints() { let safeArea = view.safeAreaLayoutGuide - view.addSubview(exerciseSelectDescriptionLabel) - exerciseSelectDescriptionLabel.topAnchor.constraint(equalTo: safeArea.topAnchor).isActive = true - exerciseSelectDescriptionLabel.leadingAnchor + view.addSubview(workoutSelectDescriptionLabel) + workoutSelectDescriptionLabel.topAnchor.constraint(equalTo: safeArea.topAnchor).isActive = true + workoutSelectDescriptionLabel.leadingAnchor .constraint(equalTo: safeArea.leadingAnchor, constant: ConstraintsGuideLine.value).isActive = true - exerciseSelectDescriptionLabel.trailingAnchor + workoutSelectDescriptionLabel.trailingAnchor .constraint(equalTo: safeArea.trailingAnchor, constant: -ConstraintsGuideLine.value).isActive = true - view.addSubview(exerciseCardCollectionView) - exerciseCardCollectionView.topAnchor - .constraint(equalTo: exerciseSelectDescriptionLabel.bottomAnchor, constant: 12).isActive = true - exerciseCardCollectionView.leadingAnchor + view.addSubview(workoutCardCollectionView) + workoutCardCollectionView.topAnchor + .constraint(equalTo: workoutSelectDescriptionLabel.bottomAnchor, constant: 12).isActive = true + workoutCardCollectionView.leadingAnchor .constraint(equalTo: safeArea.leadingAnchor, constant: ConstraintsGuideLine.value).isActive = true - exerciseCardCollectionView.trailingAnchor + workoutCardCollectionView.trailingAnchor .constraint(equalTo: safeArea.trailingAnchor, constant: -ConstraintsGuideLine.value).isActive = true - exerciseCardCollectionView.bottomAnchor + workoutCardCollectionView.bottomAnchor .constraint(equalTo: view.bottomAnchor, constant: -15).isActive = true view.addSubview(nextButton) From cf6f0b56d5aee9df28ca0a38fad3281a5d304fbd Mon Sep 17 00:00:00 2001 From: MaraMincho <103064352+MaraMincho@users.noreply.github.com> Date: Sat, 18 Nov 2023 14:17:58 +0900 Subject: [PATCH 8/8] =?UTF-8?q?chor:=20=EB=94=94=EB=A0=89=ED=86=A0?= =?UTF-8?q?=EB=A6=AC=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/WorkoutCardCell.swift | 0 .../View/WorkoutEnvironmentSetupViewController.swift | 0 .../View/WorkoutSelectViewController.swift | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename iOS/Projects/Features/Record/Sources/{ExerciseSelectScene => WorkoutSelectScene}/View/WorkoutCardCell.swift (100%) rename iOS/Projects/Features/Record/Sources/{ExerciseSelectScene => WorkoutSelectScene}/View/WorkoutEnvironmentSetupViewController.swift (100%) rename iOS/Projects/Features/Record/Sources/{ExerciseSelectScene => WorkoutSelectScene}/View/WorkoutSelectViewController.swift (100%) diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutCardCell.swift b/iOS/Projects/Features/Record/Sources/WorkoutSelectScene/View/WorkoutCardCell.swift similarity index 100% rename from iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutCardCell.swift rename to iOS/Projects/Features/Record/Sources/WorkoutSelectScene/View/WorkoutCardCell.swift diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutEnvironmentSetupViewController.swift b/iOS/Projects/Features/Record/Sources/WorkoutSelectScene/View/WorkoutEnvironmentSetupViewController.swift similarity index 100% rename from iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutEnvironmentSetupViewController.swift rename to iOS/Projects/Features/Record/Sources/WorkoutSelectScene/View/WorkoutEnvironmentSetupViewController.swift diff --git a/iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutSelectViewController.swift b/iOS/Projects/Features/Record/Sources/WorkoutSelectScene/View/WorkoutSelectViewController.swift similarity index 100% rename from iOS/Projects/Features/Record/Sources/ExerciseSelectScene/View/WorkoutSelectViewController.swift rename to iOS/Projects/Features/Record/Sources/WorkoutSelectScene/View/WorkoutSelectViewController.swift