π THE SOPT 30th ν©λ μΈλ―Έλ 12μ‘° iOS ν νλ‘μ νΈ λ ν¬μ§ν°λ¦¬μ λλ€.
π Notion Page
π Team ENFP π¦π¦π¦
@yujinnee | @lee-euijin | @sssua-0928 |
---|---|---|
PostingView |
DetailView |
MainView |
π₯ μ§μ§ κΌ μ§ν΅μλ€!
π₯ μ€νμΌμμ΄μ μ€μμ€νΈ μ€νμΌ κ°μ΄λλ₯Ό μ°Έκ³ ν©λλ€.
π¬ π¬ π¬
-
μ½λ‘ (
:
)μ μΈ λμλ μ½λ‘ μ μ€λ₯Έμͺ½μλ§ κ³΅λ°±μ λ‘λλ€.let names: [String: String]?
-
λΉ μ€μ λ± ν μ€ μ λλ§.. λ무 λ§μ λΉ μ€μ μ§μν©λλ€.
-
MARK
ꡬ문 μμ μλμλ κ³΅λ°±μ΄ νμν©λλ€.// MARK: Layout override func layoutSubviews() { // doSomething() } // MARK: Actions override func menuButtonDidTap() { // doSomething() }
-
MARK
ꡬ문μ μμλ μλμ κ°μ΅λλ€.// MARK: - Properties // MARK: - Lifecycle override func viewDidLoad() { super.viewDidLoad() } // MARK: - Override Method UI + Layout override func configUI() { } override func setupAutoLayout() { } // MARK: - Custom Method // MARK: - @objc
-
Cell
νμΌμ// MARK: - Lifecycle
λμ μλμ κ°μ΅λλ€.// MARK: - Initializing override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) } required convenience init?(coder aDecoder: NSCoder) { self.init(style: .default, reuseIdentifier: nil) }
-
Delegate
λDatasource
λ₯Όextension
μΌλ‘ λΉΌμ€ κ²½μ° μμ λ§ν¬κ΅¬λ¬Έμ κΌ μ¨μ€μΌ ν©λλ€.// MARK: - UICollectionViewDelegate extension MainVC: UICollectionViewDelegate { ... }
-
λͺ¨λ μν¬νΈλ
μνλ²³ μ
μΌλ‘ μ λ ¬ν©λλ€. -
λ΄μ₯ νλ μμν¬λ₯Ό λ¨Όμ μν¬νΈνκ³ , λΉ μ€λ‘ ꡬλΆνμ¬ μλνν° νλ μμν¬λ₯Ό μν¬νΈν©λλ€.
import UIKit import SwiftyColor import SwiftyImage import Then import URLNavigator
-
Action
ν¨μμ λ€μ΄λ°μ 'μ£Όμ΄ + λμ¬ + λͺ©μ μ΄' ννλ₯Ό μ¬μ©ν©λλ€.- Tap(λλ λ€ λ) μΒ
.touchUpInside
μ λμνκ³ , - Press(λλ¦) λΒ
.touchDown
μ λμν©λλ€. - will~ μ νΉμ νμκ° μΌμ΄λκΈ° μ§μ μ΄κ³ ,Β did~ λ νΉμ νμκ° μΌμ΄λ μ§νμ λλ€.
- should~ λ μΌλ°μ μΌλ‘Β
Bool
μ λ°ννλ ν¨μμ μ¬μ©λ©λλ€.
func backButtonDidTap() { // ... } touchUpBackButton
- Tap(λλ λ€ λ) μΒ
-
κ°λ₯νλ€λ©΄ λ³μλ₯Ό μ μν λ ν¨κ» μ΄κΈ°ννλλ‘ ν©λλ€.
-
Then λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ©΄ μ΄κΈ°νμ ν¨κ» μμ±μ μ§μ ν μ μμ΅λλ€.
let label = UILabel().then { $0.textAlignment = .center $0.textColor = .black $0.text = "Hello, World!" }
var job: String = "iOS Programmer"
-
μμλ₯Ό μ μν λμλΒ
enum
λ₯Ό λ§λ€μ΄ λΉμ·ν μμλΌλ¦¬ λͺ¨μλ‘λλ€.μ¬μ¬μ©μ±κ³Ό μ μ§λ³΄μ μΈ‘λ©΄μμ ν° ν₯μμ κ°μ Έμ΅λλ€.Β
struct
Β λμ Βenum
μ μ¬μ©νλ μ΄μ λ, μμ±μκ° μ 곡λμ§ μλ μλ£νμ μ¬μ©νκΈ° μν΄μμ λλ€. -
CGFloatLiteralκ³ΌΒ SwiftyColorλ₯Ό μ¬μ©ν΄μ μ½λλ₯Ό λ¨μνμν΅λλ€.
final class ProfileViewController: UIViewController { private enum Metric { static let profileImageViewLeft = 10.f static let profileImageViewRight = 10.f static let nameLabelTopBottom = 8.f static let bioLabelTop = 6.f } private enum Font { static let nameLabel = UIFont.boldSystemFont(ofSize: 14) static let bioLabel = UIFont.boldSystemFont(ofSize: 12) } private enum Color { static let nameLabelText = 0x000000.color static let bioLabelText = 0x333333.color ~ 70% } }
-
λμ΄μ μμμ΄ λ°μνμ§ μλ ν΄λμ€λ νμΒ
final
Β ν€μλλ‘ μ μΈν©λλ€.final class MyViewController: UIViewController { // ... }
ViewController
,TableViewCell
,CollectionViewCell
VC
,TVC
,CVC
λ‘ μΆμ½ν΄μ μ¬μ©ν©λλ€.
π₯ μ°Έκ³ μλ£
π₯ λΏμλ€μ κΉ μ»¨λ²€μ μ΄ μμΈνκ² λ³΄κ³ μΆλ€λ©΄?
π¬ π¬ π¬
1. Issueλ₯Ό μμ±νλ€.
2. feature Branchλ₯Ό μμ±νλ€.
3. Add - Commit - Push - Pull Request μ κ³Όμ μ κ±°μΉλ€.
4. Pull Requestκ° μμ±λλ©΄ μμ±μ μ΄μΈμ λ€λ₯Έ νμμ΄ Code Reviewλ₯Ό νλ€.
5. Code Reviewκ° μλ£λλ©΄ Pull Request μμ±μκ° develop Branchλ‘ merge νλ€.
6. μ’
λ£λ Issueμ Pull Requestμ Labelκ³Ό Projectλ₯Ό κ΄λ¦¬νλ€.
- FEATΒ : μλ‘μ΄ κΈ°λ₯ ꡬν
- ADDΒ : Feat μ΄μΈμ λΆμμ μΈ μ½λ μΆκ°, λΌμ΄λΈλ¬λ¦¬ μΆκ°, μλ‘μ΄ Viewλ Activity μμ±
- CHOREΒ : κ·Έ μ΄μΈμ μ‘μΌ/ λ²μ μ½λ μμ , ν¨ν€μ§ ꡬ쑰 λ³κ²½, νμΌ μ΄λ, κ°λ
μ±μ΄λ λ³μλͺ
, reformat λ±
- FIXΒ : λ²κ·Έ, μ€λ₯ ν΄κ²°
- DELΒ : μΈλͺ¨μλ μ½λ λ° νμΌ μμ
- MODΒ : xml (μ€ν 리보λ) νμΌλ§ μμ ν κ²½μ°
- DOCSΒ : READMEλ WIKI λ±μ λ¬Έμ κ°μ
- REFACTORΒ : λ΄λΆ λ‘μ§μ λ³κ²½ νμ§ μκ³ κΈ°μ‘΄μ μ½λλ₯Ό κ°μ νλ 리ν©ν λ§ μ
`Prefix` κ° ν·κ°λ¦΄ λ μ°Έκ³ ν΄μ£ΌμΈμ!
[ADD] ν ν
μ΄λΈλ·° λμ΄ κ΄λ ¨ μ½λ μΆκ°(#1)
[FEAT] ν κΈ°λ₯ ꡬν**(#2)
[CHORE] ν μ
λ μ΄μμ μ½λ μμ (#2)
[MOVE] ν ν΄λ νμΌ μ΄λ(#2)
[FIX] ν μ
리λ‘λ λ²κ·Έ ν΄κ²°(#3)
[DEL] νμμλ μ£Όμ μμ (#2)
<prefix μλ¬Έμλ‘>/<μ΄μλ²νΈ>-<κ΄λ ¨μ€λͺ
>
β λμλ¬Έμ κΌ μ§μΌμ£ΌμΈμ!
feature/2-HomeLayout
feature/10-HomeService
- Template μ¬μ©
- λΌλ²¨ λ¬κΈ°
- νλ‘μ νΈ μΉΈλ°λ³΄λ μ²΄ν¬ νμ
- Template μ¬μ© (λ΄μ© κΌΌκΌΌνκ² μμ±)
- Code Review 24μκ° λ΄λ‘
- Approved κ±Έκ³ μ½λ¦¬ λ°μΌλ©΄ μκΈ°μμ μ΄ Click
π¬ π¬ π¬
π Melon-iOS
β
|ββ π Global
β |ββ π Base
β |ββ π Constant
β |ββ π Extension
β βββ π Protocol
β
βββ π Source
β |ββ π Model
β |ββ π Network
β βββ π Screen
| |ββ Component
β β
β |ββ TabbarController
β |ββ π Main
β | |ββ π VC
β | |ββ π Cell
β | βββ π Component
β |ββ π Album
β | |ββ π VC
β | |ββ π Cell
β | βββ π Component
β |ββ π Posting
β |ββ π VC
β |ββ π Cell
β βββ π Component
β
β
β
βββ π Resource
|
|ββ π Support
| |ββ AppDelegate.swift
| βββ SceneDelegate.swift
|
|ββ π Storyboard
| |ββ LaunchScreen.storyboard
| |ββ Main.storyboard
| |ββ Album.storyboard
| βββ Posting.storyboard
|
|ββ Assets.xcassets
βββ Info.plist