이때 화면 하단에는 현재 몇 번째 페이지를 보여주고 있는지 흰색 도트로 표시가 되어 있다.
이 흰색 도트는 페이지가 좌/우로 변경될 때마다 함께 이동하며 항상 현재가 몇 번째 페이지인지를 확인할 수 있게 해준다.
이 기능이 바로 Page control 기능이다.
이번엔 Scroll View에 Page control을 추가해 기능을 구현해본다.
SingView Application Template으로 PageControl이라는 이름의 Project를 생성한다.
왼쪽 project 네비게이터에서 PageControlViewController.xib를 선택하고 Inspector 메뉴의 아래쪽에 있는 Objects 리스트에서 Scroll View를 클릭후 드래그하여 에디트화면상의 View 위에 올려놓고, 그 위에 Page Control을 드래그하여 올린다.
PageControlViewController.m 파일에는 위에서 property 선언해준 scrollView, pageControl 객체를 synthesize해준다.
다시 project 네비게이터에서 PageControlViewController.xib를 열고 File's Owner를 선택 후 위에서 IBOulet으로 선언해준 scrollView와 pageControl 항목을 각각 연결해 준다.
마지막으로 Object 항목의 Scroll View를 선택하여 아래와 같이 delegate를 File's Owner로 연결해 준다.
이 연결을 하지 않을 경우 최종 결과물에서 페이지 전환은 되나 page control의 흰색 도트가 움직이지 않는 결과를 보게 된다.
여기까지 기본적인 준비는 다 되었고, 실제로 화면에 표시할 이미지를 준비해서 project에 포함시킨다.
아래와 같이 car1, car2, car3, car4.jpg 이름으로 아이폰 배경화면 4개를 준비해 project에 추가해 보았다.
아래와 같이 PageControlViewController.m 파일의 viewDidLoad
메소드에 방금 추가한 이미지 파일을 imageView로 생성하여
addSubView로 scrollView를 붙여준다.
아이폰 시뮬레이터 화면의 해상도를 320 x 480 픽셀로하여 준비된 4장의 총 크기는 (320 * 4) x 480 이다.
여기에 화면 상단의 Status Bar가 차지하는 height 20 픽셀을 빼도록 한다. 따라서 1280 x 460 이 되었다.
20 픽셀을 빼지 않고 height를 480으로 생성할 경우 상하 스크롤까지 되기 때문에 보기에 그다지 좋지가 않다.
여기에 Page control의 총 페이지 수(준비한 이미지가 4개 이므로 4페이지)와 실행초기의 현재 페이지 위치(0부터 시작)를 설정해주는 코드를 아래와 같이 추가한다.
마지막으로 scroll view가 스크롤이 된 직후 불려지는 scrollViewDidScroll: 메소드를 추가하여 실제 pageControl의 page표시를 갱신하는 코드를 추가한다.
아래 코드와 같이 좌우로 현재 Page의 50%를 넘어가는 만큼 스크롤이 발생할 경우 좌측 또는 우측 페이지로 전환이 되도록 구현한 후 pageControl의 현재 페이지를 새로 변경된 페이지로 갱신하면 화면상의 흰색 도트가 함께 이동이 된다.
이제 실행을 해보자.
원하는 결과는 페이지 단위로 딱딱 끊어지며 화면 전환이 이루어져야 하는데 이건 뭐... 그냥 일반 스크롤뷰의 움직임에 pageControl만 추가가 된 느낌이다.
이를 수정해보자.
PageControlViewController.xib 파일을 열고 Scroll View object를 선택한 후 오른쪽 Attribute Inspector에서 Scroll View의 Scrollers 속성을 다음과 같이 수정한다.
- Shows Horizontal Scrollers 와 Shows Vertical Scrollers 속성을 해제한다. (스크롤바가 없는 것이 더 깔끔하다)
- Scrolling Enabled 와 Paging Enabled 속성을 선택한다.
'Dev Story > iOS Programming' 카테고리의 다른 글
iOS Programming : Page Control 에 IBAction 이벤트 추가하기 (0) | 2012.03.14 |
---|---|
iOS Programming : 간단히 Scroll View를 구현해 보자 (0) | 2012.03.12 |
iOS Programming : Empty Application + Interface Builder로 NavigationController 생성하기 (0) | 2012.03.07 |
iOS Programming : Navigation Bar의 Back button title 변경하기 (1) | 2012.03.06 |
iOS Programming : Empty Application Template 으로 Navigation controller 기본 구현하기 (2) | 2012.03.06 |