친구가 무심코 던진 질문에 전혀 모르는 부분이라 공부를 해보았다. 공식문서, 블로그들, wwdc를 보며 알게 된 것들을 정리해보자. App Thinng App Thinng이란? 한 단어로 최적화. 애플은 앱의 크기를 최대한 줄이는 것을 권장하고 있습니다. 정책상 제한된 앱의 크기가 있을 정도. 현시점(2022.08) 앱의 크기는 4GB로, Wi-Fi 환경이 아닐 땐 앱 설치 가능 최대 용량이 200MB로 제한되어 있습니다. 효율적으로 앱의 크기를 줄이기 위해 애플은 운영체제, App Store를 통해 최적화 기술을 제공하는데, 이를 App Thinning이라 합니다. 앱 크기를 중요하게 생각하는 이유는 사용자에게 속도와 편리함을 제공하기 위함이다. 세계 각국 모든 사람들의 네트워크 환경, 사용하는 요금제..
뷰를 그리다가 viewDidLayoutSubviews()를 아무 생각 없이 쓰고 있는 자신을 발견했습니다. 강의를 통해 알게 된 메서드인데 정확하게 어떤 메서드인지, 어떻게 동작하는지 궁금해져 검색하다가 레이아웃에도 사이클이 존재한다는 것을 알게 되었습니다. 처음 알게 되어 공부를 하고 이해한 것을 바탕으로 정리를 해보려고 합니다. Layout Cycle에 대해서 알기 전에 Main run loop와 Update Cycle에 대한 이해가 필요합니다. Main run loop 그림은 사용자에 의해 발생한 이벤트가 반응하는 과정을 보여줍니다. 사용자가 화면을 터치했을 때 발생하는이벤트를 event queue에 저장됩니다. application 객체는 저장되어있는 이벤트를 하나씩 꺼내 해석하고 이에 맞는 co..
iOS 앱의 생명주기(LifeCycle)에 대해서 정리를 해보자. 앱의 현재 상태는 앱이 무엇을 할 수 있는지 할 수 없는지를 결정합니다. 따라서 앱의 상태가 바뀔 때마다 행동을 조정해줘야 합니다. UIKit은 SceneDelegate, AppDelegate 클래스를 통해 이벤트를 전달합니다. 앱의 상태에는 5가지가 있습니다. Not Running : 앱 실행 전이나 앱이 메모리에 올라가지 않은 상태 Inactive : 앱의 화면을 띄우기 전 준비상태 혹은 백그라운드로 가기 전 단계 Active : 앱이 실행되고 있는 상태. 앱이 화면을 점유하는 상태 Background Running : 앱이 화면에는 없지만 백그라운드에서 실행되고 있는 상태 Suspend : 앱이 실행되고 있지 않고 대기 중인 상태 1..
개발 중에 막혔던 부분을 해결해서 까먹지 않게 정리하자. 우선 버튼에 곡선 값을 줄 수 있는 cornerRadius라는 메소드가 있다. 이 메소드는 layer로 한 번 감싸주고 사용해야 한다. // let button = UIButton() // width : 200, height = 100 button.layer.cornerRadius = 50 이렇게 간단하게 했을 때는 잘 적용되다가, 이번에 프로젝트 진행 중에 모양이 코드대로 변하지 않는 상황을 마주했다. 분명 되긴 되는데 버튼 하나의 배경색을 바꿔보니 무엇이 문제인지 알았다. 왼쪽 것도 되긴 되었지만, 배경색과 같아서 티가 나지 않았던 것이다. 이런저런 방법을 찾다가 도저히 시원한 답변을 찾지 못하다가, 우연히 강의에서 깔끔한 해결 방법을 찾아냈다..
면접에서 자주 나오는 질문들을 하나씩 선택해서 공부해보면서 iOS를 좀 더 깊게 공부해볼까 한다. 첫 번째 주제는 Frame과 Bounds의 차이점이다. 일단 나는 앱 개발을 해보면서 Frame만 사용해보았다. 친숙한 Frame부터 정리를 해보자 Frame Frame 메소드를 애플 공식 개발자 홈페이지(https://developer.apple.com/documentation/uikit/uiview/1622621-frame)에서 보면 Apple Developer Documentation developer.apple.com '직사각형의 프레임을 슈퍼뷰(부모뷰, 상위뷰)의 좌표계에서 위치와 크기를 설명한다.'라고 설명되어있다. 말로 보면 조금 헷갈려서 바로 그려보았다. 크기는 같은 크기를 주고 좌표값만 다르..