Danny의 iOS 컨닝페이퍼
반응형
article thumbnail
[Swift/ TIL #27] Reuse Identifier 간단하게 만드는 방법 (NSStringFromClass)
프로젝트 2023. 6. 9. 18:39

[TIL #27] 2023 / 06 / 09 이번건 글이 짧습니다. 다들 forCellReuseIdentifier를 사용할 때, 어떻게 identifier를 만들어 사용하는지는 모르겠지만, 엄청 간단하게 만드는 방법이 있어서 글을 써보려 합니다. 저는 보통 상수들을 따로 모아두는 곳에다 cell의 identifier를 저장하거나, cell 클래스에서 정적 메서드로 만들어주곤 했습니다. 이런 식으로 말이죠. struct Constants { struct ID { static let headerID = "Header_ID" static let footerID = "Footer_ID" static let categoryHeaderID = "Category_Header_ID" static let category..

article thumbnail
[Swift/ TIL #26] sort에 대해서 알아봅시다
프로젝트 2023. 6. 8. 01:31

[TIL #26] 2023 / 06 / 07 오늘은 정렬하는 방법에 대해서 간단히 알아보겠습니다. sort와 sorted 둘 다 정렬하는 메서드이지만 약간의 차이점이 있습니다. 각각 상황에 맞게 사용하면 됩니다. 바로 간단히 예시를 보면서 알아봅시다. sort 원본 배열을 정렬하여 변경합니다. 원본 배열 자체를 수정하는 것이므로 리턴값이 없습니다. // 1~10까지 랜덤 숫자 배열을 만들었습니다. var randomNum = Array(1...10).shuffled() print(randomNum) // [10, 3, 2, 7, 1, 4, 9, 5, 6, 8] // 원본 배열이 변경되도 상관없을 때 randomNum.sort() print(randomNum) // [1, 2, 3, 4, 5, 6, 7, ..

article thumbnail
[Swift/ TIL #25] DispatchGroup, DispatchSemaphore (추가로 async/await)
프로젝트 2023. 5. 31. 21:50

[TIL #25] 2023 / 05 / 30 오늘은 간단히 DispatchGroup, DispatchSemaphore의 사용법에 대해서 알아보려고 합니다. DispatchGroup 간단히 DispatchGroup에 대해 설명하면, 비동기 작업이 끝날 때까지 기다린 후, 작업 완료된 시점에서 처리를 할 수 있는 기능입니다. 기본 사용법을 간단히 알아봅시다. DispatchGroup은 enter와 leave로 한 쌍으로 구성이 돼있습니다. enter로 그룹의 작업을 추가하고 leave를 통해서 작업을 제거할 수 있습니다. 그러므로 사용할 땐, 항상 두 쌍으로 존재해야 됩니다. 아니면 에러가 발행하게 돼요. 만약, 여기서 더 이상 남아 있는 작업이 없다면, nofity의 completion handler를 ..

article thumbnail
[Swift/ TIL #24] FileManager를 통해 이미지 저장
프로젝트 2023. 5. 17. 23:59

[TIL #24] 2023 / 05 / 17 Data Base로 Realm을 사용하려 하는데, 이미지를 저장하는 과정에서 문제가 있었습니다. 이미지를 데이터 타입으로 변환 후, Realm에서 저장하여 사용해도 되지만 많은 이미지가 추가되면 처리 시간이 오래 걸려서 권장되지 않은 방법이라고 합니다. 또한, 저장할 수 있는 데이터의 크기는 16MB를 초과할 수 없다고 하네요. 그래서 일단 FileManager를 통해 이미지를 저장하고 각 이미지의 저장된 경로와 메타데이터를 통해 불러오는 방식을 구현해보려 합니다. (Realm에서는 이미지를 식별할 수 있는 이름만 저장하면 될 것 같습니다.) FileManager로 이미지 저장 공식문서와 다른 블로그에 설명이 잘 돼있기 때문에 FileManager에 대한 설명..

article thumbnail
[Swift/ TIL #23] Realm Cheat Sheet
프로젝트 2023. 5. 16. 22:50

[TIL #23] 2023 / 05 / 16 Realm 사용 시, 유용한 코드들을 정리하려고 합니다. Realm 모델 만드는 방법 기존에는 @objc Dynamic를 사용했는데, 이제는 @Persisted를 사용한다고 하네요. @Persisted은 Realm에서 만든 일종의 프로퍼티 래퍼(미리 어떤 행동을 할지 선언과 동시에 정하는 기능)입니다. // Object은 hashable로 동작합니다. class RealmModel: Object { // primaryKey 일종의 UUID라고 생각하면 됩니다. (ObjectId 대신 UUID를 사용해도 됩니다) // 중복 방지하고 CRUD에서 원하는 데이터에 접근하기 위해 사용합니다. @Persisted(primaryKey: true) var id: Objec..

article thumbnail
[Swift/ TIL #22] LocationManager 사용
프로젝트 2023. 5. 11. 18:45

[TIL #22] 2023 / 05 / 11 LocationManager에 대한 사용법을 간단히 정리하려고 합니다. info.plist 기본적으로 사용자 위치 정보를 받기 위해서는 먼저 plist를 설정해줘야 합니다. 간단히 어떤 것이 있나 알아봅시다. 아래 설정들은 모두 기본적으로 "앱이 사용자의 위치 정보에 대한 액세스를 요청하는 이유를 사용자에게 알리는 메시지입니다." [Privacy - Location Always and When In Use Usage Description] Background에서 실행되는 동안에만 적용 공식문서 [Privacy - Location Always Usage Description] Background 실행되는 동안에만 적용 iOS 11+ 이상부터는 대신, Locati..

article thumbnail
[Swift/TIL #21] 키보드가 화면을 가릴 때, Y축으로 뷰 이동 방법
프로젝트 2023. 5. 9. 15:39

[TIL #21] 2023 / 05 / 08 TextField 나 TextView 등 터치 이벤트로 키보드가 올라올 때, 키보드가 텍스트 필드를 가리는 현상이 발생할 때가 있습니다. 이런 이슈를 방지하는 방법을 간단히 알아봅시다. 방법 - 노티피케이션을 이용 NotificationCenter으로 키보드가 보이거나 가려질 때, 이벤트를 받아서 사용하는 방법입니다. (참고, 아래 메서드는 targets iOS 9.0 이상에서는 굳이 removeObserver를 해줄 필요가 없다고 하네요.) func setupKeyboardEvent() { NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIRes..

article thumbnail
[Swift/TIL #20] 이미지 메모리 최적화 방법들 (WWDC 18)
프로젝트 2023. 5. 2. 03:54

[TIL #20] 2023 / 05 / 01 앨범에서 이미지를 불러오는 작업을 하는데, 사진을 추가할 때마다 메모리 사용량이 기하급수적으로 증가하더라고요. 그래서 오늘은 간단히 이미지 관련, 메모리 최적화 방법에 대해서 알아보려고 합니다. WWDC 18(iOS Memory Deep Dive) 와 WWDC18(Image and Graphics Best Practices) 를 참고해 정리하였습니다. 메모리 사용량은 이미지의 파일의 크기로 계산되는 게 아닙니다. 메모리 사용량 ≠ 파일의 크기 바로 이미지의 크기(해상도)로 메모리가 계산이 됩니다. 계산 공식은 이와 같습니다. (Assets @1x 크기 기준) 메모리 사용량 ≈ 해상도(가로 pixels * 세로 pixels) * 4byte per pixel 대..

article thumbnail
[Swift/TIL #19] 현재 입력된 텍스트의 줄 수 구하기
프로젝트 2023. 4. 30. 18:24

[Swift/TIL #19] 2023 / 04 / 30 저번에는 글자 수에 따라, 동적으로 작용하는 셀을 만들어봤습니다. [Swift/TIL #18] UICollectionViewCompositionalLayout으로 Cell의 크기를 동적으로 만들어 보자 (더보기 버튼) 여기서 조금 더 조건을 추가하면, 텍스트가 3줄 이상일 때, 더 보기 버튼이 생성되도록 만들 수 있을 것 같습니다. 그러려면 먼저, 현재 텍스트의 줄 수를 알아야겠죠? 텍스트의 줄 수를 구하는 코드를 알아봅시다. 코드를 보면 (전체 텍스트 높이)와 (글자 폰트의 높이)로 글의 줄 수를 유추하는 것 같네요. extension UILabel { // https://stackoverflow.com/questions/28108745/how-t..

article thumbnail
[Swift/TIL #18] UICollectionViewCompositionalLayout으로 Cell의 크기를 동적으로 만들어 보자 (더보기 버튼)
프로젝트 2023. 4. 28. 18:29

[TIL #18] 2023 / 04 / 28 오늘은 CompositionalLayout에서 Cell의 크기를 동적으로 조절해 보려고 합니다. 기본 사용방법은 [Swift/TIL #13] CollectionView의 CompositionalLayout 를 참고하세요. 시작 이와 같이 더 보기 버튼이 있는 컬렉션뷰를 만들어 보려고 합니다. 일단 레이블의 numberOfLines는 3줄로 제한을 걸어두고, 더 보기를 버튼을 클릭하면 나머지 글 전부를 볼 수 있게 만들 예정입니다. 먼저 셀 코드를 확인해 봅시다. 레이블과 버튼이 있는 Cell을 만들어 줬습니다. 그리고 버튼이 동작 시 델리게이트로 넘겨줘서 Label을 바꿔줄 예정입니다. protocol DynamicCustomCellDelegate: AnyOb..

반응형