일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ios
- UICollectionView
- Refactoring
- MVVM
- rxswift
- SWIFT
- collectionview
- uiscrollview
- 리펙터링
- 리팩토링
- clean architecture
- uitableview
- ribs
- tableView
- swift documentation
- 애니메이션
- swiftUI
- HIG
- combine
- 리펙토링
- Human interface guide
- Protocol
- UITextView
- RxCocoa
- 클린 코드
- Clean Code
- Xcode
- 스위프트
- Observable
- map
- Today
- Total
목록SWIFT (948)
김종권의 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번 글까지 한 것 @State로 선언된 프로퍼티를 활용하면 매우 쉽게 상태 표현이 가능 뷰 코드에서 이 프로퍼티에 관한 switch문을 활용하여 상태에 따라 뷰를 다르게 보여주는 코드를 준비해 놓고, 프로퍼티만 변경되면 자동으로 바인딩되어 뷰가 변경됨 코드: https://github.com/JK0369/ExListSwiftUI.git struct Con..
기초) 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..
사전지식) 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들의 콘텐츠 사이즈를 딱 채운 크기를 ..
이미지 prefetch, 이미지 다운로드 SDWebImage를 사용하여 쉽게 prefetch, 이미지 다운로드가 가능 prefetch를 해놓으면 이미지를 memory, disk 캐싱해놓는데 큰 이미지나 즉각적으로 화면에 보여져야하는 이미지들은 prefetch해놓는것이 중요 SDWebImage의 캐싱 구현 코드 분석은 이전 포스팅 글 참고 이미지 prefetch 이미지를 관리할 때는 보통 로컬이 아닌 서버로부터 url을 받아서 이 url로 이미지를 띄워주는데, 이 때 url을 가지고 이미지를 바로 여러장을 띄워주려고 할때 시간이 오래 걸리는 문제가 존재 prefetch를 사용하면 SDWebImage에서 memory, disk 캐싱하여 효율적으로 이미지 표출이 가능 ImageManager라는 이름으로 pre..
safe area 경고 표출 보통 아래처럼 keyWindow로 구하면 warning 문구가 표출 // 'keyWindow' was deprecated in iOS 13.0: Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes let window = UIApplication.shared.keyWindow let safeAreaInsets = window?.safeAreaInsets iOS 13부터 Scene이라는 개념이 생겼는데, 이 scene에 접근해서 window를 가져와야함 safeAreaInset 구하는 방법 connectedScen..