iOS개발하기 #7. 화면구조, Cocoa Touch Objects (2)

오늘의 주제

  • iOS Application의 화면구조
  • View Controller
  • 화면에 보이지 않는 Object 종류 알아보기

일곱 번째 시간입니다.
지난번에는 Object에 대하여 조금 알아보았습니다~
오늘은 iOS App의 화면구조와 아직 배우지 못한 몇몇 객체들에 대해 알아봅시다...ㅎㅎ
자 이제 본론으로 고고 ^^

iOS Application의 화면구조

우리가 iOS를 사용할 때 보이는 화면구조에 대해서 조금 먼저 알아볼 필요가 있겠습니다.
일단 최고로 상위에 있는 녀석이 UIWindow입니다.

지난 번에 설명드렸듯이 iOS는 하나의 윈도우창으로 이루어져 있습니다. 즉 하나의 화면 안에서 모든 것들이 이루어지는것이라는 말이죠. 즉, 컴퓨터로 생각해 보면 하나의 모니터가 있고, 그 모니터 안에 여러개의 창을 띄워놓고 작업하지요?
그것과 같습니다.

한 화면 안에서 여러개의 창을 띄워놓을 수 있습니다.
그 하나하나의 창을 우리는 View로 표현 할 수 있습니다.
헷갈리시나요?
일단 아래의 그림을 봅시다.

하나의 UIWindow안에 View가 여러개 존재하여 보여질 수 있습니다.
View가 각자의 영역을 가지고 보여질 수도 있고, 곂쳐져 보여질 수도 있습니다.
이래도 솔직히 감이 안옵니다 ㅎㅎ

또 아래의 그림으로 가봅시다.
실질적인 애플리케이션의 화면입니다.
화면 최상단에는 Status Bar, 즉 상태바가 있지요.
상태바를 보여줄지 안보여줄지는 개발자의 선택입니다.
일단 이 애플리케이션에는 상태바가 보이네요.
상태바도 하나의 뷰로 생각할 수 있습니다.
우리는 상태바를 보이게 할지 안보이게 할지, 또 상태바의 스타일은 어떤식으로 표현할지 등을 정할 수 있습니다. 
화면에 보면 일단 메인뷰(UIView)가 존재하고 메인뷰 크기만큼의  이미지뷰(UIImageView)가 존재합니다. 이미지뷰로 배경화면을 깔아 놓았고 그 위에 버튼들로 구성된 화면입니다.
버튼(UIButton)도 View의 종류중에 하나입니다. 화면에 보이는 거의 모든것이 View에서 상속받은 것인데요, 상속이라는 것은 뭐 일단을 설명하지 않겠습니다.ㅎㅎ
지금 보다시피 지금 이 화면(UIWindow)에는 하나의 뷰(UIView)위에 이미지뷰(UIImageView)하나가 얹어져 있고, 버튼(UIButton) 5개로 이루어진 윈도우입니다.
위에 설명이 잘 이해가 안가시면... 지난 번 포스팅을 한 번 더 보고 오시는것은 어떨까요?ㅎ

 

아래 화면을 보시면 하나의 윈도우 위에 상태바가 존재하고 메인 뷰 위에 배경을 씌운 이미지 뷰 하나, 그위에 여러 View들로 이루어져 있습니다.
사용자의 선택을 받기 위한 버튼들, 제목표시를 위한 라벨, 입력받기 위한 텍스트필드와 텍스트뷰가 존재합니다. 지난 번에 설명해 드린 것을 참고하시면 어떤 역할을 하는지 대충 감이 오시겠죠?ㅎ

이렇게 화면에 많은 뷰들로 구성이 되어있는데 이 많은 뷰들을 어떻게 관리를 해 줄 것인가??
그런 생각이 드실거예요. 뷰들이 화면에 어떤 모양으로 보여지게 될지는 뷰 자체적으로 결정을 합니다. 하지만 사용자의 입력을 받거나 사용자의 행동에 따라 화면을 어떻게 바꿔줄지 또는 어떤 동작을 하는지는 Controller라는 녀석이 결정을 하게 됩니다.
헷갈리기 시작하시는 모습이 눈에 선합니다 ㅎㅎ
컨트롤러라는 녀석들은 화면에 보이질 않는 추상적인 녀석들이니까요..^^
그럼 거기에 대해서 조금 더 알아볼까요?

View Controller

이제 컨트롤러 중에서 가장 많이 보게 될 View Controller에 대하여 알아봅니다.
일단 iOS의 동작이 어떤 순서로 이르어 지는지 먼저 살펴봅시다.

iOS는  MVC모델을 기반으로 합니다.
Model - View - Contorller 의 준말입니다.뭐 무슨말인지는 나중에 이해하게 되실거예요~
Model은 데이터를 저장하는 곳, View는 화면에 보이는 것, Controller는 View와 Model을 관리하는 객체라고 보시면 됩니다.
무슨말인지 잘 감이 안잡히시죠? 괜찮습니다~
어쨋든 Controller라는 녀석이 대부분의 모든것을 주관한다라고 생각해 두세요.
그리고 View Controller는 화면에서 일어나는 것들의 처리를 맡아서 처리한다고 생각하시면 되겠지요?
즉, 컨트롤러들은 일처리를 열심히 하는 일꾼이고, 뷰들은 컨트롤러가 쏴주는 명령과 데이터로 화면에 보여주는 아바타 꼭두각시들입니다. ㅎㅎ
정리가 좀 되실라나요?

화면에 보이지 않는 Object 종류 알아보기

그럼 이제까지 화면에 보이는 녀석들을 좀 봤으니 화면에 보이지 않는 녀석들과 컨트롤러 들에 대하여 한 번 알아보도록해요~
 

  • 이름 : Tap Gesture Recognizer
  • 설명 : 화면에 직접적으로 보이지는 않지만 앱 내부에서 열심히 동작하는 녀석들 중에 하나가 Recognizer 녀석들입니다. Recognize하면 알아차리다 라는 뜻이죠? 말 그대로 Tap, 즉 우리가 터치하는 것들을 알아차리고 프로그램에 전달하는 녀석입니다. 이녀석이 사용자가 어디를 탭했다 또는 몇 손가락으로 터치를 했다 라고 전달해 주면 앱이 그에 알맞는 동작을 할 수 있게되는거죠^^ 이녀석은 Recognizer중에 화면을 터치하는 것을 감지해 주는 녀석입니다.
  • 클래스 : UITapGestureRecognizer

  • 이름 : Pinch Gesture Recognizer
  • 설명 : Pinch 하면 집게죠 ㅎ 즉, 손가락을 집게처럼 오므리거나 벌리는 동작을 말합니다. 화면을 확대 축소 할때 주로 쓰이는 동작이죠? 그 동작을 사용자가 하면 시스템에 알려주는 역할을 합니다.
  • 클래스 : UIPinchGestureRecognizer

  • 이름 : Rotation Gesture Recognizer
  • 설명 : 손가락으로 동그랗게 돌리는 것을 인식하여 시스템에 전달해 주는 역할을 합니다.
  • 클래스 : UIRotationGestureRecognizer

  • 이름 : Swipe Gesture Recognizer
  • 설명 : Swipe하면 쓸어내다 이런 뜻이죠. 화면을 쓸어내듯이 미는 동작을 감지합니다. 밀어서 잠금해제 뭐 이런 동작이요 ㅎ
  • 클래스 : UISwipeGestureRecognizer

  • 이름 : Pan Gesture Recognizer
  • 설명 : 쉽게말해서 드래그 하는 동작을 잡아냅니다 ㅎ
  • 클래스 : UIPanGestureRecognizer

  • 이름 : Long Press Gesture Recognizer
  • 설명 : 말그대로 길게 누르고 있는 동작을 인식하여 시스템에 알려줍니다!
  • 클래스 : UILongPressGestureRecognizer

  • 이름 : Object
  • 설명 : 이녀석이 우리가 말하는 객체의 원형이라고 볼 수 있겠네요. 인터페이스 빌더에서 사용할 수 없는 커스텀 객체를 구성 할 수 있습니다.
  • 클래스 : NSObject

  • 이름 : External Object
  • 설명 : 문서 외부에서 끌어오는 객체를 위한 Placeholder, 즉 자리를 차지하게 해주는 인터페이스 빌더의 요소입니다.
    클래스 : 

  • 이름 : View Controller
  • 설명 : 드디어 뷰컨트롤러네요 ㅎㅎ 이녀석이 뷰에서 일어나는 일들을 감지하고 어떤 동작을 하고 어떤 변화를 줄지 결정하고 수행하는 역할을 하는 녀석입니다. 아까도 말씀드렸죠? 뷰는 꼭두각시 아바타일 뿐, 요녀석이 조종사입니다 ㅎㅎ
  • 클래스 : UIViewController

  • 이름 : Table View Controller
  • 설명 : iOS보면 목록들을 쭈욱 나열할 수 있는 테이블을 볼 수 있습니다. 사실 테이블이라고 하면 잘 감이 안오시겠지만, 아이폰 설정에 들어가면 설정 메뉴 목록이 섹션별로 나뉘어서 쭈욱 목록이 나오는 것이 테이블입니다. 그 테이블 화면에 나올 것들과 테이블 열(Row)를 눌렀을 때 어디로 이동하게 될지 정해주는 역할을 해요~
  • 클래스 : UITableViewController

  • 이름 : Navigation Controller
  • 설명 : iOS화면 상단에 보면 제목과 뒤로가기버튼, 메뉴 버튼 등이 존재하는 바가 존재하지요? 그것을 네비게이션 바 라고 지난번에 설명을 드렸는데, 그녀석이 뒤로가기 버튼이나 메뉴 버튼을 눌렀을 때 어떤 동작을 취할지 명령을 내리는 컨트롤러 입니다. 아이폰 설정화면 상단에 보면 네비게이션 바가 있지요^^
  • 클래스 : UINavigationController

  • 이름 : Tab Bar Controller
  • 설명 : 탭바를 통제하는 녀석입니다. 그 유명한 카카오톡 화면 아래에 보면 메뉴들을 보여주는 탭바가 존재하지요? 그 탭바를 눌렀을 때 어떻게 동작을 하게될지 결정하는 녀석입니다.
  • 클래스 : UITabBarController

  • 이름 : Page View Controller
  • 설명 : iPad에서만 동작하는 녀석입니다. 말그대로 페이지처럼 동작하는 뷰들을 관리합니다.
  • 클래스 : UIPageViewController

  • 이름 : Search Bar and Search Display Controller
  • 설명 : 아이폰에서 검색할 때 쓰이는 검색바와 그 검색 결과창에 어떤 것을 검색해서 표현해 줄지 결정하고 명령하는 녀석입니다.
  • 클래스 : UISearchDisplayController

  • 이름 : GLKit View Controller
  • 설명 : 지난 번에 설명드렸던 GLKView를 관리하는 녀석입니다. 3D 사용을 위한 Open GL ES를 사용하는 뷰에 대한 조종을 합니다.
  • 클래스 : GLKViewController

이렇게 해서 IB의 Library에서 볼 수 있는 객체들에 대해 알아보았는데요, 사실 객체의 종류는 수도 없이 많습니다. IB에서 볼 수 있는 객체들은 일부에 불과해요..^^
화면에 보이지 않는 객체들은 수도 없이 많습니다.
하지만 걱정하지 마세요~
저와 함께 차근차근 신나게 알아보도록 해요~
일단 지난번과 이번에 본 것들은 아~ 이런것들이 있구나 하는 정도로 알아두시고 (물론 다 기억하시면 시야가 넓어지는 좋은 일이 생기지요..^^) 이후에 진행되는 내용들에서 잘 기억이 나지 않거나 이해가 가지 않는 부분이 생기면 돌아와서 한 번쯤 돌아보시는 것도 좋을 것 같아요.

오늘은 iOS화면구성과 iOS 동작에 대한 내용 아주 초큼, 그리고 화면에 보이지 않는 객체들을 일부분 살펴보았습니다.

혹시나 올바르지 못한 내용을 발견한 고수분들은 의견주세요^^

다음에는 무엇을 해볼까요?ㅎ
이 블로그의 주인은 여러분들입니다. 여러분들이 해보고 싶은 것들을 댓글로 말씀해 주시면 준비해 보도록 하겠습니다^*^

이론만 하기는 너무 힘드시죠?ㅎ
다음 번에는 한 번 실전에 들어가 보도록 할까 합니다~
고된 여행을 떠날 준비가 되셨나요?ㅎ

다음에 뵙도록 해요^~^
 

by yagom

p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기 

댓글 남기기

Close