일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- swift documentation
- SWIFT
- Xcode
- tableView
- 클린 코드
- ribs
- MVVM
- clean architecture
- map
- RxCocoa
- Human interface guide
- Protocol
- rxswift
- collectionview
- swiftUI
- UICollectionView
- 리팩토링
- Refactoring
- 애니메이션
- Clean Code
- Observable
- ios
- uiscrollview
- UITextView
- 리펙토링
- combine
- uitableview
- HIG
- 리펙터링
- 스위프트
- Today
- Total
목록분류 전체보기 (1635)
김종권의 iOS 앱 개발 알아가기
reduce 연산자reduce 연산자는 배열과 같은 Collection type들을 하나씩 누적하며 하나의 값으로 만드는 연산자reduce(into:_:)와 reduce(_:_:) 두가지가 존재reduce(_:_:)와 reduce(into:_:)reduce(_:_:)연산자배열과 같은 Collection Type을 순회하면서 하나의 값으로 만들어주는 연산자첫번째 인수에는 순회할때 축적되어야 하는 초기값두번째 인수에는 클로저를 주입하는데, 클로저의 첫번째 값은 순회할때마다 추적되고 있는 값이며 두번째 값은 순회하는 값// exlet arr = [1, 2, 3, 4, 5]let val2 = arr.reduce(0) { result, element in result + element}let val1 = a..
1. List 형태 UI - @State를 활용하여 로딩 상태, 로드 상태, 실패 상태 띄우기2. List 형태 UI - pull to refresh, 페이지네이션 구현 방법 (List, refreshable, pagination, @Sendable)3. List 형태 UI - 검색된 결과 UI에 보여지게 하는 방법 (검색창, searchable)1, 2번 글 복습)SwiftUI에서는 @State 프로퍼티를 사용하면 손쉽게 상태 변경이 가능단순히 @State 프로퍼티만 변경해도 알아서 바인딩되어 뷰도 변경pull to refresh는 List의 메소드인 refreshable를 사용하면 되고, pagination은 onAppear을 통해서 쉽게 구현이 가능전체 코드: https://github.com/JK..
1. List 형태 UI - @State를 활용하여 로딩 상태, 로드 상태, 실패 상태 띄우기 2. List 형태 UI - pull to refresh, 페이지네이션 구현 방법 (List, refreshable, pagination, @Sendable) 3. List 형태 UI - 검색된 결과 UI에 보여지게 하는 방법 (searchable) 복습) 1번 글까지 한 것 @State로 선언된 프로퍼티를 활용하면 매우 쉽게 상태 표현이 가능 뷰 코드에서 이 프로퍼티에 관한 switch문을 활용하여 상태에 따라 뷰를 다르게 보여주는 코드를 준비해 놓고, 프로퍼티만 변경되면 자동으로 바인딩되어 뷰가 변경됨 코드: https://github.com/JK0369/ExListSwiftUI.git struct Con..
1. List 형태 UI - @State를 활용하여 로딩 상태, 로드 상태, 실패 상태 띄우기 2. List 형태 UI - pull to refresh, 페이지네이션 구현 방법 (List, refreshable, pagination, @Sendable) 3. List 형태 UI - 검색된 결과 UI에 보여지게 하는 방법 (searchable) 상태 처리 핵심 개념 - @State List형태의 UI를 구현하면 항상 로딩, 성공, 실패에 따라 UI를 다르게 보여주어야 하는데 이 때 SwiftUI의 @State를 활용하면 매우 쉽고 빠르게 구현이 가능 enum으로 로딩, 성공, 실패에 관한 정의를 하고 이 enum 타입의 프로퍼티를 @State로 선언하면 쉽게 상태 관리가 가능 목표) @State로 3가지 ..
기초) DI (Dependency Injection)이란? DI란, 특정 기능을 사용하려고 할 때, 특정 기능에 대한 구현체를 사용하는쪽에서 주입해주어서 사용하는쪽에 구현체를 위임하는 것 (SOLID원칙 중 의존성 역전, DIP 원칙에 해당) 느슨한 결합도 testable한 코드 ex) 사용하는쪽에서 구현체를 결정하는 DI 형태 코드에서 운동과 관련된 일을 하는 Workoutable이라는 기능이 필요할 때, 프로토콜로 선언 class ViewController: UIViewController { var workout: Workoutable init(workout: Workoutable) { self.workout = workout super.init(nibName: nil, bundle: nil) } r..
UIView를 비교하기 UIView의 인스턴스를 `==`로 비교가 가능 주의) UIView의 프로퍼티인 tag를 사용하는 경우도 있는데, tag를 사용하면 어떤 뷰인지 tag값을 일일이 확인해야 하므로 UIView인스턴스 그대로 비교하는 것을 지향할 것 class ViewController: UIViewController { let view1 = UIView() let view2 = UIView() let view3 = UIView() override func viewDidLoad() { super.viewDidLoad() printSomeView(view: view1) } func printSomeView(view: UIView) { if view1 == view { print("this is view..
사전지식) scale factor 개념scale factor란 pixcel을 표현할 때 더 높은 픽셀 밀도를 표현하기 위한 값@1x는 1배의 픽셀 밀도@2x는 2배의 픽셀 밀도@3x는 3배의 픽셀 밀도ex) Assets.xcassets 파일의 한 이미지 파일UIImage의 size 주의사항UIImage 인스턴스에서 size 프로퍼티를 사용할 수 있는데, 여기서의 size는 위에서 1x, 2x, 3x 중에 어떤 사이즈가 출력될까?let iamge = UIImage(named: "myImage")print(image.size) // CGSize(width: 200, height: 200)정답은 1x기준의 해상도 값이 출력됨이미지의 실제 해상도는 1x의 해상도가 200*200이라면, 2x는 400*400, 3..
sizeToFit() 개념 subview들을 감싸는 알맞은 크기로 view를 리사이징하는 하는 것 알맞은 크기: 뷰가 가지고 있는 subview들의 콘텐츠 사이즈를 딱 채운 크기 (UILabel같은 경우 text를 감싼 크기이고, UIImageView에서는 image를 감싼 크기를 의미) 여기서의 알맞은 크기는 아래에서 알아볼 sizeThatFits에서 리턴되는 값을 사용함 주의 사항) 뷰가 기본적으로 가지고 있는 사이즈로 sizeToFit()되게 하고 싶지 않다면 이 메서드를 오버라이드 하면 안되고 아래에서 볼 sizeThatFits를 사용할 것 sizeThatFits 개념 위에서 알아본 알맞은 크기 sizeThatFits를 사용하면 뷰가 가지고 있는 subview들의 콘텐츠 사이즈를 딱 채운 크기를 ..