일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swiftUI
- Protocol
- Xcode
- ios
- 리팩토링
- 애니메이션
- 리펙터링
- uiscrollview
- 리펙토링
- tableView
- 클린 코드
- Refactoring
- MVVM
- combine
- RxCocoa
- uitableview
- HIG
- collectionview
- SWIFT
- Observable
- Human interface guide
- clean architecture
- swift documentation
- UITextView
- ribs
- map
- 스위프트
- Clean Code
- UICollectionView
- rxswift
- Today
- Total
목록iOS 응용 (swift) (722)
김종권의 iOS 앱 개발 알아가기
value를 사용할때의 ownershipvalue를 사용하면 어떻게든 소유권 시스템을 갖음var array = [1,2,3] // array는 [1,2,3]에 관한 소유권을 갖음소유권 시스템값을 소비(consume)하거나 변경하거나(mutate) 빌리는(borrow) 것Consuming values 개념representation의 소유권을 한고셍서 다른 곳으로 이전한다는 의미value를 넘길때 consuming 파라미터를 사용하여 구현ex) 아래 코드에서 발생하는 consuming 이해하기array에 값을 assign할 때, 초기 값의 소유권을 array 변수로 이전함array입장에서 초기값의 소유권을 갖게되므로 "consuming" 함func makeArray() { var array = [1.0, ..
Multiline String Literal 개념문자열을 표시할 때 따옴표 3개로 표현하는 것label.text = """abcdef ab123456가나다라"""이 방법을 사용할 때 가끔 indent에 대해서 헷갈리는 경우가 있는데, indent는 끝 따옴표 """의 시작 지점이 0 indent라는 것을 알기ex) 아래 코드들 모두 화면에서는 동일하게 보임 label.text = """abcdef ab123456가나다라"""label.text = """abcdef ab123456가나다라"""label.text = """ abcdef ab 123456 가나다라 """만약 마지막 """ 따옴표를 기준으로 칸이 띄어져 있으면 그만큼 indent가..
UITableViewCell과 UICollectionViewCellUITableViewCell과 UICollectionViewCell은 각각 반복되는 여러 데이터를 화면에 보이는 지점만 렌더링하여(cellForRowAt, cellForItemAt) 효율적으로 뷰를 그릴 수 있는 인터페이스UITableViewCellUICollectionViewCell각 커스텀 셀을 구현할 때 비슷한 구조를 가지고 있음ex) tableViewCell 구현class CustomTableViewCell: UITableViewCell { let titleLabel = UILabel() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String..
iOS 17+에서 UIActivityViewController 접근성 버그버튼을 눌러서 UIActivityViewController를 띄우는 화면에서 접근성이 버튼에서 자동으로 UIActivityViewController으로 이동되지 않는 현상기본지식) fullScreen 모달 스타일로 UIViewController가 화면에 보여지게되면 접근성도 UIViewController로 자동으로 포커스가 이동되어야 하는데 iOS 17+ 에서 UIActivityViewController를 present로 띄우면 포커스가 자동으로 이동 안되는 경우가 존재코드)import UIKitclass ViewController: UIViewController { override func viewDidLoad() { ..
1. 클로저를 사용할 때 주의할 점 - Memory Leaks, Retain Cycle, nested closure 첫 번째2. 클로저를 사용할 때 주의할 점 - nested closure 두 번째3. 클로저를 사용할 때 주의할 점 - nested closure 세 번째nested closure에서 weak로 잡지 않는 경우closure가 두 번 생길 때 아래와 같은 경우가 존재ss.instance?.f1 클로저 안에 ss.instance?.f2가 있고, 모두 RxSwift에서 제공하는 연산자 subscribe(with: self)로 접근함으로써 self는 weak로 잡은 상태weak var instance: SomeClass?button.rx.tap .subscribe(with: self) { s..
네트워크 속도 제한 거는 방법 - Network Link ContionerNetwork Link Contioner를 사용하면 네트워크 대역폭, 딜리이 등 설정이 가능사용 방법iOS 17.4.1 기준으로, 맥북에 한번 이상 연결된 아이폰 준비 > 아이폰 설정 앱 > 개발자 > 네트워크 링크 컨디셔너주의1) 맥북에 한번이라도 연결시켜야 개발자 메뉴가 노출됨주의2) 아이폰 OS에 따라서 개발자 메뉴가 설정키면 바로 보이는것도 있고, 설정 > 개인정보 보호 및 보안 메뉴 안에 개발자 메뉴가 있는 경우도 있음설정 > 개발자)개발자 > 네트워크 링크 컨디셔너네트워크 링크 컨디셔너 화면)네트워크 링크 컨디셔너 사용 방법화면을 보면 프리셋으로 100% Loss부터 Wi-Fi 802.11ac까지 9개의 종류가 존재10..
CGImage와 UIImage 개념UIImage와 CGImage 모두 이미지에 관한 데이터를 갖고 있는 인터페이스UIImage 데이터가 있으면 CGImage 인스턴스로 변환도 가능private let image = UIImage(named: "tree")!let cgImage = image.cgImageUIImage는 cgImage를 wrapping한 형태이며, UI를 그릴때 더욱 고수준 레벨로 인터페이스를 제공하여 UI 작업에 집중할 수 있게 해놓은 것cgImage는 UI를 그리는 인터페이스 외에도 bits와 같은 저수준 레벨의 세부 데이터 접근을 위해서 있는 것가장 대표적인 예) size 값UIImage의 size 프로퍼티를 사용하면 디바이스의 scale 값을 고려하지 않은 값을 얻어옴x2 스케일을 ..
배경지식 1) UIImage의 size 의미UIImage에서 size값이 프로퍼티로 있는데, 이 size값은 디바이스의 스케일 (UIScreen.main.scale)값을 구분하지 않은 값임을 주의private let image = UIImage(named: "tree")!let size = image.size실제 사이즈는 다음과 같이 scale값을 곱해준 것let scale = UIScreen.main.scaleprint(image.size.width * scale, image.size.height * scale)svg 이미지 포멧인 경우에서 이미지 사이즈는?보통 Assets 폴더에 이미지를 넣는데, png로 넣으면 x1, x2, x3 다 넣을 수 있지만 svg형태로 벡터로 넣으면 scale하나로 지정s..