λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

iOS/TIL

(8)
22.07.21 γ…£ ViewController Transition(ν™”λ©΄μ „ν™˜) & Optional Binding(μ˜΅μ…”λ„ 바인딩) & μΈμŠ€ν„΄μŠ€ ν”„λ‘œνΌν‹° vs νƒ€μž… ν”„λ‘œνΌν‹° ViewController Transition - Present - Dismiss (a.k.a Modal) Present - Dismiss λŠ” μΈν„°νŽ˜μ΄μŠ€ λΉŒλ” μƒμ—μ„œλŠ” Modal 이라고 λΆˆλ¦¬λŠ” ν™”λ©΄μ „ν™˜ λ°©μ‹μž…λ‹ˆλ‹€. λ”°λΌμ„œ μ•„λž˜μ—μ„œ μœ„, μœ„μ—μ„œ μ•„λž˜λ‘œ ν™”λ©΄μ „ν™˜μ΄ μΌμ–΄λ‚œλ‹€κ³  μ˜ˆμΈ‘ν•΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. μš°μ„  κ·Έ μ€‘μ—μ„œ Presentλ₯Ό κ΅¬ν˜„ν•  수 μžˆλŠ” μ½”λ“œλ₯Ό μ•Œμ•„λ΄…μ‹œλ‹€. μš°μ„  κ°€μž₯ μ€‘μš”ν•œ 지점은 μœ„ μ½”λ“œμ—μ„œ 주석을 단 1번, 2번, 3λ²ˆμž…λ‹ˆλ‹€. 2.5번과 같은 뢀뢄은 ν•„μš”μ— 따라 μΆ”κ°€ν•˜λ©΄ λ˜μ§€λ§Œ, ν™”λ©΄μ „ν™˜μ„ κ΅¬ν˜„ν•  λ•Œμ—λŠ” λ°˜λ“œμ‹œ 1번, 2번, 3λ²ˆμ„ 적어주어야 ν•©λ‹ˆλ‹€. μœ„ μ½”λ“œμ—μ„œλŠ” present λ°©μ‹μ˜ styleλ₯Ό fullscreen으둜 ν–ˆκΈ° λ•Œλ¬Έμ—, μ „ν™˜λœ ν™”λ©΄μ—”λŠ” 화면을 닫을 수 μžˆλŠ” λ²„νŠΌμ΄ μ—†μœΌλ―€λ‘œ bar ..
22.07.20 γ…£ UICollectionViewController & Struct ꡬ쑰체 ν™œμš© UICollectionViewController UICollectionViewController λŠ” μœ„μ™€ 같은 ν˜•νƒœμ˜ 씬을 λ§Œλ“€ λ•Œ μ‚¬μš©λ˜λŠ” Controller μž…λ‹ˆλ‹€. μœ„μ™€ 같은 ν˜•νƒœμ˜UICollectionViewControllerλ₯Ό λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ” UICollectionViewFlowLayout 의 κ°œλ…μ΄ μ‚¬μš©λ©λ‹ˆλ‹€. - itemSize layout.itemSize = CGSize(width: width/2, height: width/2) μœ„μ™€ 같이 기본적인 μ•„μ΄ν…œμ˜ μ‚¬μ΄μ¦ˆλ₯Ό μ΄ˆκΈ°ν™”ν•  λ•Œ μ‚¬μš©λ˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€. - minimumLineSpacing minimumLineSpacing λž€ cell 의 크기가 λ‹€μ–‘ν•  λ•Œ μ΅œμ†Œν•œ 이 μ •λ„λŠ” λ–¨μ–΄μ Έ μžˆμ–΄μ•Ό ν•œλ‹€λŠ” κ°œλ…μž…λ‹ˆλ‹€. - minimumInteritemSp..
22.07.18 - 19 γ…£ Enum CaseIterable & Table View Enum CaseIterable Enum을 ν™œμš©ν•΄ μ—΄κ±°ν˜• νƒ€μž… ν”„λ‘œνΌν‹°μΈ allCasesλ₯Ό ν™œμš©ν•˜μ—¬ λ°°μ—΄μ²˜λŸΌ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 λ‹¨μˆœ 배열을 μ‚¬μš©ν•  λ•Œλ³΄λ‹€ μ½”λ“œλ₯Ό 훨씬 더 직관적이고 효율적으둜 ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€. Table View λ‹€μŒμ€ Table View Controller 에 κΌ­ μž‘μ„±ν•΄μ•Ό ν•˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€. μš°μ„  Table View λŠ” Section / Row / Cell 둜 μ΄λ£¨μ–΄μ ΈμžˆκΈ° λ•Œλ¬Έμ—, 각각이 λͺ‡ 개의 Sectionμ΄λ‚˜ Row둜 이루어져 μžˆλŠ”μ§€ μ •ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€. λ”°λΌμ„œ μœ„ μ½”λ“œμ˜ 경우 ν•˜λ‚˜μ˜ Section μ•ˆμ— λ°°μ—΄ λ‚΄ μ›μ†Œμ˜ 개수만큼 Rowκ°€ μžˆλŠ” κ΅¬μ„±μž…λ‹ˆλ‹€. - TableViewCell Reuse Mechanism (μž¬μ‚¬μš© λ©”μ»€λ‹ˆμ¦˜) μž¬μ‚¬μš© λ©”μ»€λ‹ˆμ¦˜μ΄λž€, Table Vi..
22.07.13 γ…£ Class & Struct Class - ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œ Class λ₯Ό κ°„λ‹¨νžˆ λΉ„μœ ν•˜μžλ©΄ μ‹νŒμ΄λΌκ³  ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ‹νŒμ—λŠ” λ°₯을 λ‹΄λŠ” κ³³, ꡭ을 λ‹΄λŠ” κ³³, λ°˜μ°¬μ„ λ‹΄λŠ” 곳이 μžˆλŠ” κ²ƒμ²˜λŸΌ, Class 에도 ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œλ₯Ό 담을 수 μžˆλŠ” 곡간이 μžˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ ν”„λ‘œνΌν‹°λž€ 클래슀 내뢀에 μ„ μ–Έλœ λ³€μˆ˜λ₯Ό μ˜λ―Έν•˜κ³  λ©”μ„œλ“œλž€ ν•¨μˆ˜λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 그리고 이런 클래슀λ₯Ό μ‚¬μš©ν•΄μ„œ μ½”λ”©ν•˜λŠ” 것을 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λΌκ³  ν•©λ‹ˆλ‹€. iOS UIKit FrameworkλŠ” λŒ€λΆ€λΆ„ 클래슀둜 κ΅¬ν˜„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. - μΈμŠ€ν„΄μŠ€ 그러면 이 클래슀λ₯Ό ν˜ΈμΆœν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν• κΉŒμš”? 클래슀λ₯Ό ν˜ΈμΆœν•˜κΈ° μœ„ν•΄μ„œλŠ” 객체가 ν•„μš”ν•œλ°, μ΄λ•Œ 이 객체λ₯Ό μΈμŠ€ν„΄μŠ€λΌκ³  ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λ©΄ μΈμŠ€ν„΄μŠ€λ₯Ό 톡해 ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œμ— 접근이 κ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€. - 상속 이..
22.07.12 γ…£μ—΄κ±°ν˜• & ν•¨μˆ˜μ™€ λ°˜ν™˜κ°’ & Raw String μ—΄κ±°ν˜• μ—΄κ±°ν˜•μ΄λž€ μ‰½κ²Œ 말해, λ¬Έμžμ—΄κ³Ό μ •μˆ˜κ°’ λ“± μž…λ ₯λ°›μ•„μ•Ό ν•  정보λ₯Ό 직접 μž…λ ₯ν•˜μ§€ μ•Šκ³  선택할 수 있게 ν•΄μ£ΌλŠ” ν˜•νƒœμž…λ‹ˆλ‹€. μ—΄κ±°ν˜•μ˜ νŠΉμ§• 쀑 κΈ°μ–΅ν•΄μ•Ό ν•˜λŠ” 것은, μ—΄κ±°ν˜•μ€ λ°°μ—΄κ³Ό μ§‘ν•©μ²˜λŸΌ μ •λ³΄μ˜ μ‚­μ œλ‚˜ 변경이 λΆˆκ°€λŠ₯ν•˜λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ ꡬ문 자체λ₯Ό μˆ˜μ •ν•˜μ§€ μ•ŠλŠ” 이상, μŠ€μ½”ν”„ λ°–μ—μ„œ μΌ€μ΄μŠ€λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ‚­μ œν•˜λŠ” 것은 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€. 이처럼 μ—΄κ±°ν˜•μ€ Switch ꡬ문과 ν•¨κ»˜ 쓰이기도 ν•©λ‹ˆλ‹€. μ“°μž„μƒˆλŠ” if-else ꡬ문과 λΉ„μŠ·ν•˜μ§€λ§Œ μ’€ 더 쉽고 μ§κ΄€μ μœΌλ‘œ ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Switch κ΅¬λ©΄μ—μ„œ μ—΄κ±°ν˜• 값을 맀칭할 λ•Œμ—λŠ” λ°˜λ“œμ‹œ μ—΄κ±°ν˜•μ˜ λͺ¨λ“  경우λ₯Ό 포함해야 ν•©λ‹ˆλ‹€. ν•˜λ‚˜λΌλ„ λΉ μ Έμžˆλ‹€λ©΄, 컴파일이 λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. λ”°λΌμ„œ μ—΄κ±°ν˜•μ˜ λͺ¨λ“  값을 ν¬ν•¨ν•˜κΈ° μ–΄λ ΅λ‹€λ©΄, default둜 처리λ₯Ό ν•΄μ£Όμ–΄μ•Όλ§Œ..
22.07.06 γ…£μ•±μ˜ 생λͺ…μ£ΌκΈ° & AppDelegate vs SceneDelegate & 닀크 λͺ¨λ“œ & UIWindow μ•±μ˜ 생λͺ…μ£ΌκΈ° μ•±μ˜ 생λͺ…μ£ΌκΈ°λ₯Ό μ•Œμ•„λ³΄κΈ° 전에, 생λͺ…μ£ΌκΈ°μ˜ μ •ν™•ν•œ μ •μ˜λ₯Ό μ•Œμ•„λ³΄λ € ν•©λ‹ˆλ‹€. μ•±μ˜ 생λͺ…μ£ΌκΈ°λž€ μ•±μ˜ 졜초 μ‹€ν–‰λΆ€ν„° μ™„μ „νžˆ μ’…λ£Œλ  λ•ŒκΉŒμ§€ 앱이 κ°€μ§€λŠ” μƒνƒœμ™€ κ·Έ μƒνƒœλ“€ μ‚¬μ΄μ˜ 전이λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. μ•±μ˜ 생λͺ…μ£ΌκΈ°λŠ” 총 4κ°€μ§€λ‘œ λΆ„λ₯˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 1) Not Running: 앱이 μ‹œμž‘λ˜κΈ° μ „ μƒνƒœ 2) Foreground : 앱이 화면에 μ˜¬λΌμ™€ μžˆλŠ” μƒνƒœ - Active : 앱이 ν™”λ©΄μ—μ„œ μ‹€ν–‰ 쀑인 μƒνƒœ - Inactive: 앱이 ν™”λ©΄μ—μ„œ μ‹€ν–‰ μ€‘μ΄λ‚˜ μ–΄λ–€ μ‹ ν˜Έλ„ 받지 μ•ŠλŠ” μƒνƒœ (ex. 미리 μ•Œλ¦Όμ΄ λ– μ„œ 앱이 μ‹€μ§ˆμ μœΌλ‘œ 이벀트λ₯Ό 받지 λͺ»ν•˜λŠ” μƒνƒœ) 3) Background: 앱이 화면에 보이지 μ•ŠλŠ” μƒνƒœ (ex. Apple Music 화면이 보이지 μ•Šμ•„λ„ μŒμ•…μ΄ μ‹€ν–‰λ˜λŠ” 경우) 4) Suspen..
22.07.05 γ…£ UIKit Framework Storyboard vs SwiftUI 2019λ…„ SwiftUIκ°€ λ°œν‘œλ˜κΈ° μ „κΉŒμ§€λŠ” Storyboard κ°€ μœ μΌν•œ ν™”λ©΄ ꡬ성 λ°©λ²•μ΄μ—ˆμŠ΅λ‹ˆλ‹€. 그러기 λ•Œλ¬Έμ—, SwiftUI 와 λΉ„κ΅ν–ˆμ„ λ•Œ λ ˆνΌλŸ°μŠ€κ°€ μ ˆλŒ€μ μœΌλ‘œ λ§ŽμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ Storyboard λŠ” 아이폰과 μ•„μ΄νŒ¨λ“œμ˜ ν™”λ©΄ κ΅¬μ„±μ—λ§Œ μ ν•©ν•˜κΈ° λ•Œλ¬Έμ—, SwiftUI 와 λΉ„κ΅ν–ˆμ„ λ•Œ μ—¬λŸ¬ ν”Œλž«νΌμ— λŒ€ν•œ λŒ€μ‘μ΄ μ•½ν•˜λ‹€λŠ” 단점이 μžˆμŠ΅λ‹ˆλ‹€. 이에 λΉ„ν•΄, SwiftUI λŠ” μ—¬λŸ¬ ν”Œλž«νΌμ— λŒ€μ‘ν•  수 μžˆλ‹€λŠ” 강점을 κ°€μ§‘λ‹ˆλ‹€. λ‹€λ§Œ, SwiftUI λŠ” iOS 13 μ΄μƒμ—μ„œλ§Œ 지원이 κ°€λŠ₯ν•˜λ‹€λŠ” 단점을 가지고 μžˆμŠ΅λ‹ˆλ‹€. μ΄μ „κΉŒμ§€λŠ” 아이폰과 μ•„μ΄νŒ¨λ“œλŠ” UIKit 그리고 Mac 은 appKit μ—μ„œ κ°œλ°œμ„ ν–ˆλ‹€λ©΄, ν˜„μž¬λŠ” Mac Catalyst 와 apple Silicon M..
22.07.04γ…£ μ•±μ˜ ꡬ쑰와 λ™μž‘ 원리 & iOS 의 νŠΉμ§• & Xcode μ£Όμš” κΈ°λŠ₯ μ•±μ˜ ꡬ쑰와 λ™μž‘μ›λ¦¬ 앱은 크게 ν™”λ©΄(Scene), κΈ°λŠ₯(Logic), 데이터(Data) 둜 이루어져 μžˆμŠ΅λ‹ˆλ‹€. 'ν™”λ©΄'은 말 κ·ΈλŒ€λ‘œ μ‚¬μš©μžκ°€ 앱을 μ‚¬μš©ν•  λ•Œ 보게 λ˜λŠ” 화면을 μ˜λ―Έν•©λ‹ˆλ‹€. 'κΈ°λŠ₯'은 μ΄λΌλŠ” μ•±μ—μ„œ μ‚¬μš©μžμ˜ μœ„μΉ˜λ₯Ό κΈ°μ€€μœΌλ‘œ 배달이 κ°€λŠ₯ν•œ μŒμ‹μ μ„ νŒλ‹¨ν•˜λŠ” κ²ƒμ²˜λŸΌ μ‚¬μš©μžμ—κ²ŒλŠ” 보이지 μ•Šμ§€λ§Œ 앱을 λ™μž‘ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ°˜λ“œμ‹œ ν•„μš”ν•œ 뢀뢄을 μ˜λ―Έν•©λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ '데이터'λŠ” 앱을 μ‚¬μš©ν•˜λ©΄μ„œ μ €μž₯λ˜λŠ” 데이터λ₯Ό μ˜λ―Έν•˜λŠ”λ°, λ°μ΄ν„°μ˜ μ €μž₯ λ°©μ‹μ—λŠ” 혼자 μ‚¬μš©ν•˜λŠ” 일기 μ•±κ³Ό 같이 μ•± 내뢀에 데이터λ₯Ό μ €μž₯ν•˜λŠ” 방식과 μΈμŠ€νƒ€κ·Έλž¨κ³Ό μœ νŠœλΈŒμ™€ 같이 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ„€νŠΈμ›Œν¬ 연결이 λ°˜λ“œμ‹œ ν•„μš”ν•œ 방식이 μžˆμŠ΅λ‹ˆλ‹€. iOS 의 νŠΉμ§• iOSλŠ” 4κ°€μ§€μ˜ λ…νŠΉν•˜λ©΄μ„œλ„ μ£Όμš”ν•œ νŠΉμ§•μ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€. 1...