코드 스니핏(Code Snippet) Snippet은 작은 조각이란 뜻으로 보통 프로그래밍 개발 시 미리 작성해 놓은 다양한 단축 구문을 모아놓은 템플릿이라고 할 수 있습니다. 이미 맥에도 유료나 무료의 다양한 Code Snippet 툴들이 존재합니다. 하지만 오늘 알아볼 Xcode의 Snippet은 기본 제공되며 체계적으로 코드를 저장한다면 강력한 개발 도구가 될 수 있을 것 같습니다. ▼ 단축키는 Command + Shift + L 입니다. 보통 스토리보드나 XIB에서 해당 단축키를 누르면 이미지 라이브러리가 노출됩니다. 일반 코드를 보고 있다가 단축키를 누르면 Snippet 라이브러리가 노출됩니다. ▼ 만약 다음과 같이 av라고 검색하면 API 버전을 체크하는 구문을 검색할 수 있습니다. 오른쪽 하..
오늘은 아이폰의 기본 중에 기본인 컬렉션 뷰를 사용하는 방법을 알아보겠습니다. 사실 예전에는 테이블 뷰를 많이 사용했습니다만, 현재는 테이블 뷰 보다는 컬렉션 뷰를 더 많이 사용하죠. 하지만 그냥 일반적인 리스트 화면을 만들때는 컬렉션 뷰 보다는 테이블 뷰가 간편할 때가 많습니다. 그 이유는 테이블 뷰를 사용하면 ColleciontView와 달리 FlowLayout 델리게이터 없이 편리하게 리스트를 구현할 수 있기 때문이죠. 오늘은 처음 컬렉션 뷰를 사용해서 아주 기본적인 레이아웃 설정을 하는 방법을 알아보겠습니다. 디자인 설정 ▼ 스토리보드에 UICollectionView를 드래그해서 올리고 오토레이아웃을 좌우상하단에 걸어줍니다. 그리고 delegate, dataSource를 뷰 컨트롤러에 연결해주면 ..
안드로이드나 iOS 개발은 사실 UI의 비중이 큽니다. 웹 프론트엔드 개발 보다 다양한 기술을 포함하긴 하지만 일단 화면을 잘 그릴 수 있어야 합니다. 때문에 안드로이드 앱 개발의 핵심 요소는 인터페이스 디자인과 생성이라고도 할 수 있습니다. 안드로이드의 화면 구성은 뷰와 뷰 그룹 그리고 레이아웃으로 이루어집니다. 뷰와 뷰 그룹 안드로이드 화면 인터페이스의 모든 컴포넌트는 View(android.view.View) 클래스의 서브 클래스입니다. 안드로이드는 TextView, Button, CheckBox 와 같은 여러가지 View의 서브 클래스를 제공합니다. 이런 뷰들을 위젯(Widget) 또는 컴포넌트(Component)라고 합니다. 또한 뷰를 서브클래싱 해서 새로운 위젯을 만들 수도 있으며 기존의 컴포..
안드로이드 앱 프로세스 안드로이드 앱은 프로세스로 실행되며 액티비티나 서비스 및 브로드캐스트 수신자 형태의 여러 컴포넌트로 구성됩니다. 모바일이라는 제한적인 환경에서 리소스를 효율적으로 관리하기 위해서는 특히 앱이 실행되는 프로새스와 앱을 구성하는 모든 컴포넌트의 생명주기를 잘 알고 관리해야 하며 앱과 액티비티 생명주기를 반드시 이해해야만 효율적인 앱을 만들 수 있고 앱이 실행하는 동안 다양한 상태와 이벤트에 맞춰서 프로그래밍할 수 있습니다. 안드로이드 우선순위 안드로이드 앱은 안드로이드 운영체제의 별개의 프로세스에서 독립적으로 실행됩니다. 때문에 만약 독립적인 안드로이드 앱이 메모리 한계에 다다를 경우 안드로이드 시스템은 메모리 확보를 위해서 해당 프로세스를 강제로 종료하는 방법을 취합니다. 메모리 확..
안드로이드 뷰 바인딩 이전 버전의 안드로이드 스튜디오에서는 코드에서 레이아웃 뷰를 사용하기 위해 findViewById() 함수 또는 코틀린 확장 플러그인을 사용했었습니다. 하지만 더 이상 추천하는 방법이 아니고 이제는 뷰 바인딩을 사용해서 레이아웃을 관리하는 형태로 변경되었습니다. 한 번 바인딩하게 되면 편리하고 다양하게 사용이 가능하니 뷰 바인딩을 사용하는 법과 findViewById 와 비교해서 무엇이 달라졌는지 확인해보겠습니다. ▼ 안드로이드 뷰 바인딩은 Android Studio 3.6 Canary 11 이상에서 동작합니다. 안드로이드 스튜디오 3.5 이전에는 뷰 바인딩을 사용할 수 없었고 아래와 같이 findViewById를 통해 컴포넌트들을 로드해서 사용했습니다. 뷰 바인딩 추가하기 ▼ 뷰 ..
안드로이드 앱은 다양한 요소가 결합되어 만들어집니다. 그중에 UI에 관련된 액티비티, 프래그먼트 등이 있고 인텐트와 액티비티를 이용해 독립적으로 실행 가능한 모듈을 생성해 재사용성을 높일 수 있다. 또한 콘텐츠 제공자를 구현해 앱 간 데이터 공유도 가능하다. 서비스와 브로드캐스트 수신자를 통해서 백그라운드 작업을 할 수 있으며 매니페스트 파일을 통해서 앱 구성을 정의할 수 있고 앱 리소스와 매니페스트 설정을 통해서 앱 컨텍스트를 만들어 낼 수 있다. 안드로이드 액티비티 안드로이드 앱은 액티비티라는 컴포넌트가 하나 이상 반드시 결합되어 생성됩니다. 액티비티란 안드로이드 앱을 구성하는 기본 단위이며 앱의 기능을 갖는 단일의 독립 실행 모듈입니다. 액티비티는 안드로이드 Activity 클래스의 서브 클래스로 ..
Objective-C로 아이폰 앱을 만들 때는 #pragma mark - 주석 내용을 포함해서 주석을 나타내던 것이 Swift로 넘어오면서 MARK로 변경되었습니다. 기존의 #pragma라는 부분을 더 이상 쓰지 않아도 됩니다. 또한 TODO, FIXME와 같은 구문도 추가할 수 있습니다. 다른 언어 C++, C에서는 보통 전처리 구문으로 인식하는 #pragma는 define이나 include와 같이 사용됩니다. 하지만 Xcode에서는 이를 전처리 구문으로 쓰기보다는 메서드의 구역을 나눌 때 보통 사용합니다. 스위프트 같은 경우에는 extension이라는 문법이 추가돼서 메서드의 구분을 줄 때 extension을 사용하기도 합니다. 영역 구분관련 주석의 종류 // MARK : 설명 // TODO : 할 ..
지난 시간에는 네비게이션 컨트롤러를 만들기 위해서 설정을 하고 디자인을 해봤습니다. 오늘은 코드를 작성해서 네비게이션 그래프를 잘 동작하도록 만들어보겠습니다. 안드로이드는 오랫동안 이어져온 v4, v7, v8, v17과 같은 서포트 라이브러리를 통해서 하위 호환을 지원했었는데 이런 오래된 구조를 재 정립하고자 Android extension library (Androidx) 기반의 패키지 구조를 만들게 되었으며 이것들은 모두 젯팩의 구성요소입니다. 다시 말해 서포트 라이브러리와 코틀린 지원 도구 및 여러 라이브러리가 포함된 통합 지원 라이브러리라고 할 수 있습니다. 젯팩 컴포넌트 구성 Architecture - 뷰를 포함한 UI 구성요소의 라이프 사이클 관리 및 LiveData와 뷰 모델, Room 데이..
저번 강좌에서 안드로이드 Jetpack 네비게이션 컨트롤러를 만들고 환경을 구성했었는데요. 이어 이번 시간에는 네비게이션 컨트롤러를 만들기 위한 디자인 작업을 해보도록 하겠습니다. 다음과 같은 구성으로 디자인이 됩니다. 사실 디자인이라고 보기는 어렵고 그냥 화면 구성이죠. 3개의 프레그먼트(Fragment)를 만들고 첫 번째 페이지는 메인 프레그먼트로 다음 페이지로 이동하는 기능만 있습니다. 두 번째 페이지는 다음 페이지로 이동하거나 뒤로 이동하는 기능이 있습니다. 다음 페이지로 이동할 때는 번들을 통해서 특정 값을 전달하는 내용도 포함됩니다. 세 번째 페이지는 다시 메인 프레그먼트 페이지로 이동하는 기능만 있으며 두 번째 페이지에서 전달받은 값으로 버튼의 텍스트를 변경합니다. 프레그먼트 생성 ▼ 새로운..
Google I/O 2018에서 발표한 안드로이드 Jecpack의 내비게이션 컨트롤러를 사용하는 방법을 알아보겠습니다. iOS 개발의 네비게이션 컨트롤러와 비슷하며 프래그먼트를 사용해서 오히려 iOS 보다 더욱 편리하게 이동이 가능해보입니다. iOS의 경우 특정 뷰 컨트롤러에 네비게이션 컨트롤러를 만들고 RootViewController로 설정해줘야 해서 객체가 하나 늘어나는 반면 안드로이드의 Jetpack 네비게이션의 경우 아주 간단히 프레그먼트들을 연결해서 사용할 수 있습니다. Navigation Components는 Jetpack의 Architecture에 속하는 라이브러리 중 하나이며, 오늘은 간단히 여러 프레그먼트의 네비게이션을 연결하고 이동하기 위한 Jetpack 설정에 대해서 알아보겠습니다...