문득 5월의 마지막 날까지 날을 새며 테스트 했던 www 가 생각났어.
시간이 왜 이렇게 빠르지? ʕ •ᴥ•ʔ
WWW : World Wide Web 이 아니고, Word Wide Web 이야..
부족한 팀장과 함께 해준 팀원들에게 진심으로 고마웠던 프로젝트였어.
돌아보니, 앱을 개발한다는 건 정말 커뮤니케이션의 집합체라는 생각이 들어. 혼자서 개발하는 게 아니라면, 같이 작업하는 동안 예상치 못한 변수들이 정말 많이 생기더라고. 처음엔 그냥 혼자서 뚝딱 하고 뭔가를 만들어낼 줄 알았는데, 그게 완전 큰 착각이었다는 걸 깨달았어.
structure ▽
WWW
├── Model
│ ├── Network
│ │ ├── NetworkManager
│ │ ├── RemoteDictionary
│ │ ├── MyPage
│ │ └── InvitationData
│ │
│ └─ Firebase
│ ├─ SignInAppleHelper
│ ├─ AuthenticationManager
│ ├─ FirestoreManager
│ ├─ SignInGoogleHelper
│ ├─ User
│ └─ Utilities
│
│
├── View
│ ├── Cell
│ │ ├── TestFriendViewCell
│ │ ├── FriendCell
│ │ ├── DefaultTableViewCell
│ │ ├── WordbookCell
│ │ ├── PlayingListViewCell
│ │ ├── ExpandableTableViewCell
│ │ ├── InvitedFriendCell
│ │ ├── DictionaryTableViewCell
│ │ └── MyPageCollectionViewCell
│ │
│ ├── TestResultView
│ ├── TestView
│ ├── TestIntroView
│ ├── CarouselLayout
│ ├── PlayingListView
│ ├── CircleAnimateText
│ └── LaunchView
│
│
├── Controller
│ ├── TabBarController
│ ├── MyPageVC
│ ├── MyPageCollectionViewCell
│ ├── MyPageWordViewController
│ ├── MyPageModalViewController
│ ├── PlayingListViewController
│ ├── DictionaryVC
│ ├── SearchFriendsVC
│ ├── SignInVC
│ ├── SignUpVC
│ ├── InvitingVC
│ ├── MyInfoViewController
│ ├── WordbookCell
│ ├── AddWordBookVC
│ ├── RadioButton
│ ├── ProfileVC
│ ├── ProfileViewModel
│ ├── TestIntroViewController
│ ├── TestResultViewController
│ ├── TestViewController
│ └── EmptyCollectionViewCell
│
│
├── Component
│ ├── AppDelegate
│ ├── SceneDelegate
│ └── ViewController
│
│
├── Extension
│ ├── UIFont+Ext
│ ├── UIColor+Ext
│ ├── NotificationExtensions
│ ├── Formatter
│ ├── Numeric
│ ├── MyPage+Ext
│ └── CollectionView+Ext
└
Main의 CarouseView 코드 ▽
////
//// CarouselView.swift
//// compositionTest7
////
//// Created by 채나연 on 5/31/24.
////
//
//import UIKit
//import SnapKit
//
//
//class CarouselView: UICollectionReusableView {
//
// //레이블 설정
// private let label: UILabel = {
// let label = UILabel()
// label.textColor = .white // 텍스트 색상을 흰색으로 설정
// label.font = .systemFont(ofSize: 18, weight: .bold)
// return label
// }()
//
// // 상단 캐로셀 컬렉션 뷰 설정
// var testCollectionView: UICollectionView = {
// let layout = YZCenterFlowLayout()
//
// // 셀 크기 설정 (피그마 기준 194 * 244)
// layout.itemSize = CGSize(
// width: 194,
// height: 244
// )
//
// // 캐로셀 방향 설정
// layout.scrollDirection = .horizontal
//
// // 애니매이션 모드 설정
// layout.animationMode = YZCenterFlowLayoutAnimation.scale(sideItemScale: 0.6, sideItemAlpha: 0.6, sideItemShift: 0.0)
//
// // 셀 간격 설정
// layout.spacingMode = .fixed(spacing: 10)
//
// let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
// collectionView.backgroundColor = .systemBackground
// collectionView.register(CarouselCell.self, forCellWithReuseIdentifier: "CarouselCell")
//
// return collectionView
//
// }()
//
// // 초기화 메서드
// override init(frame: CGRect) {
// super.init(frame: frame)
//
// // 뷰의 배경색 (뒤에 있어서 안보임)
// backgroundColor = .blue
//
// // 테스트 컬렉션 뷰(파란색)를 현재 뷰의 서브뷰로 추가
// addSubview(testCollectionView)
//
// // 테스트 컬렉션 뷰의 제약 조건을 설정: 슈퍼 뷰(cyan 컬러)와 동일한 크기
// testCollectionView.snp.makeConstraints { make in
// make.edges.equalToSuperview()
// }
// // 테스트 컬렉션 뷰의 델리게이트, 데이터소스를 현재 클래스로 설정
// testCollectionView.delegate = self
// testCollectionView.dataSource = self
//
// // 테스트 컬렉션 뷰의 배경색을 청록색(cyan)으로 설정
// testCollectionView.backgroundColor = .cyan
// }
//
// // 코드 기반 초기화 메서드
// required init?(coder: NSCoder) {
// fatalError("init(coder:) has not been implemented")
// }
//
// // label의 text를 설정하고 testCollectionView의 데이터를 다시 로드
// func configure(with text: String) {
// label.text = text
// testCollectionView.reloadData()
// }
//}
//
//// CarouselView 클래스: UICollectionViewDataSource와 UICollectionViewDelegate 프로토콜 채택
//extension CarouselView: UICollectionViewDataSource, UICollectionViewDelegate {
//
// // 컬렉션 뷰에서 특정 indexPath에 해당하는 셀을 생성
// func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
//
// // 재사용 가능한 셀을 dequeue 받아오기
// guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CarouselCell", for: indexPath) as? CarouselCell else {
// return UICollectionViewCell()
// }
//
// // *** 여기에 추가할 셀의 구성 코드를 추가 ***
//
// // "Item \(indexPath.item)"의 형태로 셀의 텍스트를 설정
// cell.configure(with: "Item \(indexPath.item)")
// return cell
// }
//
// // 컬렉션 뷰의 지정된 섹션에 표시할 아이템의 개수를 반환
// func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// return 10 // 아이템 개수
// }
//}
https://github.com/ZooomBiedle/WordWideWeb
GitHub - ZooomBiedle/WordWideWeb: 단어로 연결된 세계: 따로 또 같이! 게임처럼 재미있게!
단어로 연결된 세계: 따로 또 같이! 게임처럼 재미있게! Contribute to ZooomBiedle/WordWideWeb development by creating an account on GitHub.
github.com
'iOS 앱 개발자 프로젝트' 카테고리의 다른 글
[iOS] UICollectionViewCell 안에 UICollectionView 넣기 (0) | 2024.06.02 |
---|---|
[iOS] UICollectionView에서 Section 나누기 (0) | 2024.06.02 |
[iOS] Rest API (0) | 2024.05.01 |
[iOS] viewIsAppearing (0) | 2024.04.27 |
[iOS] Framework와 Library 차이점 (Framework Vs. Library) (0) | 2024.04.14 |