Danny의 iOS 컨닝페이퍼
반응형
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..

article thumbnail
[Swift/TIL #17] viewDidLayoutSubviews 간단 정리
프로젝트 2023. 4. 19. 01:33

[TIL #17] 2023 / 04 / 19 오토 레이아웃을 잡고 객체의 frame을 사용하려 하는데, 한번 애를 먹었던 기억이 있어, 오늘은 이렇게 Update Clycle의 viewDidLayoutSubviews를 한번 간단히 정리하고 넘어가려고 합니다. 일단 Life Cycle + Update Cycle를 그림으로 한번 보고 가시죠. 각 Cycle 마다, 역할이 조금씩 다릅니다. 각 시점마다 무슨일이 일어나는지 알고나면 프로젝트를 만들 때, 도움이 많이 되더라고요. viewDidLayoutSubviews 말 그대로 "UIVIew" 객체가 모든 서브뷰들의 레이아웃을 변경한 후에 호출되는 메서드입니다. 다른 메서드와 달리, 뷰와 서브뷰들의 레이아웃이 모두 정해진 후 호출되는 메서드입니다. 다른식으로 말..

article thumbnail
[Swift/TIL #16] Layer 그림자 설정 중, 보라색 경고 (dynamic shadows)
프로젝트 2023. 4. 18. 22:27

[TIL #16] 2023 / 04 / 18 버튼에 그림자 효과를 주고 싶어 Layer의 그림자 설정을 사용하고 있는데, 보라색 경고를 마주쳤습니다. 일단 코드부터 보시죠. func configButton() { button.layer.cornerRadius = button.bounds.width / 2 button.layer.shadowColor = UIColor.red.cgColor button.layer.shadowOffset = CGSize(width: 0, height: 1) button.layer.shadowOpacity = 0.9 button.layer.shadowRadius = 10 } 이와 같이 사용하니, 아래와 보라색 경고가 발생했습니다. The layer is using dynamic..

article thumbnail
[Swift/TIL #15] UIMenu를 사용해보자
프로젝트 2023. 4. 17. 20:48

[TIL #15] 2023 / 04 / 17 UIMunu는 iOS 13부터 추가된 기능입니다. 특정 오브젝트를 길게 누르거나, 특정 제스처에 나타나는 메뉴 커스터마이징 할 수 있습니다. 한번 UIMenu에 대해 간단히 알아봅시다. UIMenu 일단 UIMenu 생성자를 확인하고 들어가겠습니다. 이미 Zedd님 이 설명을 잘해두셨네요. 이렇게 UIMenu의 생성자가 있고, 안쪽 파라미터에서 children 제외한 나머진 생략이 가능합니다. 여기서 children은 UIMenuElement로 돼있습니다. children을 만들 때, 주의점으로는 UIMenuElement로 직접 객체를 만들어 사용하면 안 되고, 클래스 UIMenu, UIAction, UICommand로 객체 만들어 사용해줘야 합니다. 나머지..

article thumbnail
[Swift/TIL #14] UITabBarAppearance 적용하기
프로젝트 2023. 4. 14. 18:56

[TIL #14] 2023 / 04 / 14 이전에 커스텀 탭바 를 구현했었습니다. 그때는 몰랐지만 컬렉션뷰와 같은 스크롤 기능이 추가된다면, 기존의 TabBar의 영역이 그림자로 반투명하게 나타는 문제가 발생했습니다. 이유를 찾아보니 iOS 13부터는 Bar 설정할 땐, UITabBarAppearance를 통해 변경해줘야 하더라고요. 당연히 예전 API들도 같이 사용 가능하지만, 아쉽게도 여기엔 Bar의 반투명 영역에 대한 설정이 없습니다. 굳이, 사용하려면 TabBar의 Background 이지미를 설정한 뒤 Alpha를 0으로 바꾸면 될까요? 그런데 이런 비슷한 문제를 이전 UINavigationBar에서도 겪었는데요. UINavigationBarAppearance의 적용법과 UITabBarAppe..

article thumbnail
[Swift/TIL #13] CollectionView의 CompositionalLayout
프로젝트 2023. 4. 13. 18:11

[TIL #13] 2023 / 04 / 12 ~ 2023 / 04 / 13 저번에 공부한 FlowLayout 에 이어서, 오늘은 복잡한 레이아웃도 쉽게 구현할 수 있도록 도와주는 CompositionalLayout에 대해서 알아봅시다. 공식문서 예제 를 참고해서 만들었습니다. CompositionalLayout 기본 CompositionalLayout은 으로 구성돼 있습니다. 이 각각의 요소들로 조합하여, 원하는 레이아웃으로 구성할 수 있죠. 일단 CompositionalLayout의 레이아웃 생성 메서드들을 먼저 살펴봅시다. UICollectionViewCompositionalLayout(section:) UICollectionViewCompositionalLayout(section:, configur..

article thumbnail
[Swift/TIL #12] CollectionView와 FlowLayout
프로젝트 2023. 4. 11. 18:14

[TIL #12] 2023 / 04 / 11 분명히 이전에 CollectionView를 사용해 봤는데, 오랜만에 다시 만드려니까 헷갈리더라고요. 이번 기회에 다시 간단히 정리를 하려고 합니다. FlowLayout 흐름 있는 레이아웃? 간단하게 Grid형태의 레이아웃을 쉽게 구성할 수 있도록 도와는 클래스입니다. 일단 공식문서는 여기 있습니다 https://developer.apple.com/FlowLayout https://developer.apple.com/UICollectionviewFlowlayout FlowLayout의 Cell은 이런 순으로 배치됩니다. FlowLayout의 속성들을 알아봅시다. func createFlowLayout() -> UICollectionViewFlowLayout { ..

article thumbnail
[Swift/TIL #11] TextField와 DatePicker를 같이 사용해보자
프로젝트 2023. 4. 10. 18:41

[TIL #11] 2023 / 04 / 10 오늘은 TextField를 클릭하면 DatePicker가 나오게 만들어 볼 예정입니다. 버튼 동작을 위해 UIToolBar까지 추가해서 만들어 봅시다. 이전에 NavigationController 계층에 있는 ToolBar도 만들어봤습니다. [iOS/Swift] NavigationController의 ToolBar를 코드로 만들어 봅시다 이번엔 NavigationController 계층에 속해있는 ToolBar가 아닌 직접 객체를 만들어 사용해 보겠습니다. 설명은 주석이랑 사진으로 때우겠습니다. 시작 먼저 텍스트 필드를 생성해 줍시다. let textField: UITextField = { let field = UITextField() field.backgro..

반응형