Skip to content

Latest commit

Β 

History

History
55 lines (39 loc) Β· 2.34 KB

codebase-3way.md

File metadata and controls

55 lines (39 loc) Β· 2.34 KB

μ˜€ν† λ ˆμ΄μ•„μ›ƒμ„ μ½”λ“œλ‘œ μž‘μ„±ν•˜λŠ” 방법은 무엇인가? (3가지)

μ•Œμ•„μ•Όν•  것

μŠ€ν† λ¦¬λ³΄λ“œλ‘œ μ˜€ν† λ₯Ό μž‘μ„λ•ŒλŠ” translatesAutoresizingMaskIntoConstraints 속성이 μžλ™μœΌλ‘œ false둜 λ°˜μ˜λœλ‹€. ν•˜μ§€λ§Œ μ½”λ“œλ‘œ μ§€λ•ŒλŠ” 그렇지 μ•ŠκΈ° λ•Œλ¬Έμ— 직접 translatesAutoresizingMaskIntoConstraints = falseλ₯Ό ν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€(SnapKitμ‚¬μš©μ‹œμ—λŠ” μžλ™μœΌλ‘œ λ˜λŠ”κ±Έλ‘œ μ•Œκ³ μžˆμŒ).

Answer

  1. NSLayoutConstaint

    속성값듀이 μ’€ 길지고 μ§κ΄€μ μΈνŽΈμ΄λ‚˜ μ½”λ“œκ°€ κΈΈμ–΄μ§€κ²Œ 되면 가독성이 λ–¨μ–΄μ§€λŠ” νŽΈμ΄λ‹€.

    NSLayoutConstraint(item: alertView,
                attribute: .leading,
                relatedBy: .equal,
                toItem: messageLabel,
                attribute: .leading,
                multiplier: 1.0,
                constant: 8).isActive = true

  1. NSLayoutAnchor - 제일 많이 μ“°μ΄λŠ” 것 κ°™λ‹€.

    μ‚¬μš©μ„±μ„ μœ„ν•΄ SnapKit 라이브러리λ₯Ό ν•¨κ»˜ ν™œμš©ν•˜λŠ”νŽΈμ΄λ‹€.

    μ›λž˜λŠ” NSLayoutConstaintλ₯Ό μ‚¬μš©ν•˜μ—¬ μ˜€ν† λ ˆμ΄μ•„μ›ƒμ„ μž‘μ„±ν–ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ•žμ„œ κΈ°μˆ ν–ˆλ“― 가독성 μΈ‘λ©΄μ—μ„œ 단점이 μžˆμ—ˆκΈ°λ•Œλ¬Έμ— μƒˆλ‘­κ²Œ Appleμ—μ„œ λ‚΄μ€€ 방식이닀. μ½”λ“œκ°€ λ§ˆμ°¬κ°€μ§€λ‘œ κΈΈμ–΄μ§€κΈ΄ν•˜λ‚˜ κ·Έλž˜λ„ 보닀 가독성이 μ’‹μ•„μ‘Œλ‹€.

    NSLayoutConstraint.activate([
        button.centerXAnchor.constraint(equalTo: view.centerXAnchor),
        ...
        ])

  1. Visual Format Language(VFL)

    이건 처음 λ“£λŠ” 건데 κ°„λ‹¨ν•˜κ²Œ λ§ν•˜λ©΄ 기호 및 λ¬Έμžμ—΄λ‘œ λ ˆμ΄μ•„μ›ƒ 관계λ₯Ό μ‹œκ°μ μΈ ν‘œν˜„μœΌλ‘œ ν‘œμ‹œν•˜λŠ” 거라고 ν•œλ‹€. λ·°λŠ” λŒ€κ΄„ν˜Έλ‘œ ν‘œμ‹œλ˜κ³  λ·°κ°„μ˜ 연결은 ν•˜μ΄ν”ˆ(λ˜λŠ” 뷰듀을 λ–¨μ–΄λœ¨λ¦¬λŠ” μˆ«μžμ— μ˜ν•΄ λ‘κ°œμ˜ λΆ„λ¦¬λœ ν•˜μ΄ν”ˆ)을 μ‚¬μš©ν•œλ‹€. NSLayoutConstraintλ₯Ό μ΄μš©ν•΄μ„œ μƒμ„±ν•œλ‹€.

    μ‚¬μš©μ΄ μ΅μˆ™ν•΄μ§€λ©΄ νŽΈλ¦¬ν•˜λ‹€κ³  ν•˜λŠ”λ° μ‚¬μš©μ„ μœ„ν•΄ VFLλ§Œμ˜λ¬Έλ²•μ„ μ΅ν˜€μ•Όν•˜κΈ° λ•Œλ¬Έμ— ν˜‘μ—…μ‹œμ— λ„μž…ν•˜κΈ°μ— 단점 μ‘΄μž¬ν•˜λŠ” 것 κ°™λ‹€.

    let views = ["myView": myView]
    let formatString = "|-[myView]-|"
    let constraints = NSLayoutConstraint.constraintsWithVisualFormat(formatString, 
        options: .AlignAllTop, 
        metrics: nil, 
        views: views)
    
    NSLayoutConstraint.activateConstraints(constraints)