일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- contentInset
- human interface guidelines
- mvvm
- Mock
- UIResponder
- 부트캠프
- Failed to register bundle identifier
- Info.plist
- 스타트업주니어로살아남기
- NumberFormatter
- View Life Cycle
- 독서후기
- SWIFT
- 야곰아카데미
- 독후감
- 책후기
- 아이폰
- Codegen
- Structures and Classes
- SWIFTUI
- @available
- xcode
- Modality
- 스위프트
- IOS
- viewcontroller
- Navigation
- roundingMode
- delegation
- NotificationCenter
- Today
- Total
목록Software Engineering/TIL (17)
호댕의 iOS 개발
View Drawing Cycle 필요에 의해 발생하며, 뷰가 처음 그려지거나 레이아웃이 변하게 되면 그리게 된다. 참고로 CumtomView의 경우 다른 뷰 위에 뷰를 얹는 것을 의미하는 것이 아니다. 실질적으로 draw(rect:) 메서드를 override하여 graphic context 위에 그리는 것을 의미한다. 그러면 언제 View의 컨텐츠 변경을 위해 업데이트 트리거가 동작하는 것일까? 1. View를 부분적으로 가린 다른 View의 이동 및 제거 2. Hidden으로 되어있던 View의 노출 3. 화면을 스크롤할 때 4. 명시적으로 setNeedsDisplay 같은 메서드를 호출할 때 그렇다면 View와 Layout을 업데이트해주는 메서드에 대해 좀 더 자세하게 알아보자. setNeedsDi..
어제에 이어 미처 포스팅하지 못했던 TWL을 업로드한다. 이 주는 주로 프로젝트를 진행하며 새롭게 알게 된 내용들이 많았다. 그럼 어떤 내용들이 있었는지 살펴보자. UIRefreshController Apple Developer Documentation developer.apple.com 대부분의 앱들을 보면 화면 가장 상단에서 화면 아래로 드래그를 했다가 손을 떼면 다시 데이터가 리로드되면서 리로드가 되는 표시가 나온다. @objc private func handleRefrashControl() { reloadData() let scrollView = view as? UIScrollView DispatchQueue.main.async { scrollView?.refreshControl?.endRefre..
TWL을 블로그에 포스팅 하는 것이 늦어져서 지금에서야 미리 작성해놓았던 TWL을 포스팅한다... 늦지 않게 꼬박꼬박 포스팅해야겠다. 항상 꾸준하게!!! 그럼 이때는 뭘 배웠는지 정리해보자!! 슬기로운 Reuse Identifier 사용 방법 TableView나 CollectionView에서 Cell을 Register할 때나 dequeueReusableCell을 할 때 항상 reusable Identifier를 사용하게 된다. 이는 물론 String으로 작성해줄 수 있지만 이렇게 할 경우 기억하기도 쉽지 않고 하드코딩을 하게 된다. 따라서 이를 방지하기 위해 이렇게 작성해줄 수 있다. protocol ReusableView: NSObject { static var reuseIdentifier: Strin..
FileManager ⌨️ 알아두면 좋을 단축키 cmd + shift + . → 숨김 파일 보기 cmd + shift + g → 폴더 찾기 폴더 생성 → touch 파일명.확장자 / echo “내용" > 파일명.확장자명 📦 사용한 메서드 정리 디렉토리의 주소를 찾는 경우 urls(for: in:) : FileManager의 인스턴스 메서드 directory: 찾을 path directory를 작성한다. 다양한 SearchPathDirectory를 가지고 있다. domainMask: 찾을 file system의 도메인을 작성한다. userDomainMask: 사용자의 홈 디렉토리 localDomainMask: 기기에서 모든 사람이 item을 설치할 수 있는 곳 networkDomainMask: 네트워크에서..
이번 주는 컬렉션 뷰, URLSession에 대해 중점적으로 공부했다. 테이블 뷰도 배울 때 어렵다고 생각했었는데 컬렉션 뷰가 테이블 뷰보다 복잡한 것 같다. 그래도 컬렉션 뷰는 테이블 뷰와 닮은 점도 많고 공통된 메서드도 많아 공부하다 보면 잘 알게 되겠지? ViewController와 TableViewController를 사용하는 것의 차이 일단 UITableVIewController를 사용하면 커스텀을 하여 사용하기가 어려워진다. 즉, 화면에 TableView만 있다면 TableViewController를 사용하는 것이 좋지만, TableView 이외에 다른 복합적인 view가 있는 경우 UIViewController를 사용하는 것이 낫다. 하지만 항상 기획이 변경될 수 있는 만큼 UIViewCon..
이번 주는 약간 체력의 부족함을 느낀 한 주였다. 유난히 다른 주보단 피곤했던 것 같다. 그래도 이번 주도 많은 것들을 새롭게 배울 수 있었던 한 주였다. 동시성 프로그래밍 복습 아직 동시성 프로그래밍이 완전히 머리 속에 정립되지 않은 것 같아 복습 중이다. 여러가지 작업을 시분할로 나눠서 번갈아가며 처리하는 것이 바로 동시성 프로그래밍이다. 동시성 프로그래밍은 소프트웨어에서의 멀티 스레딩을 이용한 기술로, 여러 개의 스레드를 이용하여 여러 작업을 동시에 처리하게 된다. 코어: CPU의 핵심으로 CPU에서 실제로 일을 처리하게 된다. 코어는 한 번에 한 가지 일만 처리할 수 있다. 스레드: 프로세스(프로그램) 내부에서의 작업 단위가 되는 가상의 작업 단위를 의미한다. 여기서 스레드는 작업을 처리하는 친구..
이번 주는 프레임워크와 라이브러리, POP를 중점으로 학습했다. 또한 프로젝트에서 동시성 프로그래밍을 녹여보기 위해 노력했다. 아직 동시성 프로그래밍은 다른 사람에게 설명해줄 정도로 명확하게 알지는 못하는 것 같아 추가적인 학습의 필요성을 느꼈다. 그럼 이번 주는 뭘 배웠을까? 프레임워크와 라이브러리 구분을 할 수 있는 기준점: 이게 없어도 iOS 앱을 만들 수 있는가? (필수적인가) 프레임워크: 없으면 만들 수 없다 -> 기반이 되는 코드의 묶음 (ex: UIKit, Foundation) 라이브러리: 없어도 만들 수 있다 -> 모듈화된 기능으로 가져와서 쓸 수 있다. 그렇다면 RXSwift는 프레임워크일까? 아니면 라이브러리일까? ‘RxSwift is a library for composing asyn..
저번 주와 이번 주 프로젝트를 진행하고 활동학습을 하며 정말 많은 내용을 배울 수 있었다. 일단 Accessibility와 동시성 프로그래밍에 대해 배웠고, 이외에도 팀원들과 함께 프로젝트를 진행하며 평소 코드를 작성하며 생각하지 못했던 부분까지 고민해볼 수 있었다. 그럼 이번 주는 뭘 배웠는지 정리해보도록 하자. Accessibility 새롭게 알게 된 내용 VoiceOver로 나오는 언어는 맥북 언어에 따라 달라진다. (왜 시뮬레이터 언어를 따라가지 않는 것일까?) 이미지의 경우 isAccessbilityElement를 true로 설정해줘야 accessibility에 접근할 수 있다. Hit area is too small로 버튼이 너무 작다는 warning이 나오면 button에 Image Inse..