Home » iOS -4. 실습 예제

iOS -4. 실습 예제

4.1. UILabel

  • 화면에 텍스트를 출력해 주는 기능을 한다.

<UILabelEx/UILabelExample.h>

번호 설명
(1) UIViewController 상속
(2) UILabel 타입의 오브젝트 선언

<UILabelEx/UILabelExample.m>

번호 설명
(1) 현재 view의 배경 색 설정
(2) UILabel 오브젝트 생성. 생성하며 영역을 지정 해 준다. 여기서는 현재 view의 크기만큼을 지정
(3) 뷰를 만들 때 가로/세로 보기를 지원하기 위해서는 뷰를 구성하는 각 오브젝트들이 각각의 상황에 맞게 유기적으로 배열시켜준다.
(4) 텍스트 설정
(5) 정렬 설정
(6) 텍스트 색상 설정
(7) 폰트 및 폰트 사이즈 설정
(8) 현재 view에 UILabel을 붙여준다.

참고

UIViewController의 생명주기

메소드 설명
loadView 뷰 컨트롤러에 보여지는 컨트롤러들을 생성하거나 추가할 때
viewWillAppear 뷰 컨트롤러가 사용자에게 보여지기 직전에 호출
viewDidLoad viewWillAppear 다음에 호출
viewDidAppear viewDidLoad 다음에 호출
viewWillDisappear 해당 뷰 컨트롤러가 사라지기 직전에 호출
viewDidUnload viewWillDisappear 다음에 호출
viewDidDisappear viewDidUnload 다음에 호출

4.2. UIButton

  • 사용자와 애플리케이션 간의 의사소통을 목적으로 사용되며, UIButton을 활용하여 checkbox, radioButton으로 만들어 사용 할 수 있다.

<UIButtonEx/UIButtonExample.h>

<UIButtonEx/UIButtonExample.m>

번호 설명
(1) 오브젝트 생성 하며, 영역 설정(크기는 지정하지 않았으며 위치는 100, 50)
(2) 화면의 가운데 배치 시킴
(3) 버튼의 텍스트 색상 변경
(4) 버튼의 텍스트 변경 및 상태 설정
(5) 이벤트 등록
(6) 버튼 터치 시 실행 되는 메소드
(7) 버튼의 텍스트 변경

4.3. UITextField

  • 사용자로부터 텍스트를 입력 받을 수 있는 용도로 사용되며, 레이블과 같이 화면에 텍스트를 출력해 주기도 한다.

<UITextFieldEx/UITextFieldExample.h>

<UITextFieldEx/UITextFieldExample.m>

번호 설명
(1) 텍스트 필드의 배경 색상 설정
(2) 힌트가 되는 텍스트 설정

4.4. UISwitch

  • on / off 설정을 할 수 있는 기능을 한다. 일반적으로 어떠한 설정 값들을 허용하거나 허용하지 않는 용도로 사용 된다.

<UISwitchEx/UISwitchExample.h>

<UISwitchEx/UISwitchExample.m>

번호 설명
(1) 이벤트 등록
(2) switch가 on / off 될 때 실행 되는 메소드

4.5. UISlider

  • 지정 된 범위 내에 존재하는 값들을 세팅하기 위한 용도로 사용 된다.

<UISliderEx/UISliderExample.h>

<UISliderEx/UISliderExample.m>

번호 설명
(1) 값 변경에 따른 이벤트 등록
(2) 최대 값 설정
(3) 최소 값 설정
(4) 현재 값 설정
(5) 값 변경이 일어 날 때 호출 되는 메소드

4.6. UISegment

  • 버튼의 집합으로 생각 할 수 있으며, 다수의 아이템들 중에서 하나의 아이템을 선택하기 위한 용도로 사용 된다.

<UISegmentEx/UISegmentExample.h>

<UISegmentEx/UISegmentExample.m>

번호 설명
(1) 타이틀 배열 생성
(2) 오브젝트 생성 및 타이틀 설정
(3) 이벤트 등록
(4) 세그먼트가 눌려질 때 호출 되는 메소드
(5) 눌려진 세그먼트의 index 값을 가져와서 이벤트 처리(예제에서는 배경색을 바꿔준다.)

4.6. UIActivityIndicatorView

  • 프로그램의 화면이 전환 되는 동안 어떠한 데이터가 처리 될 때, 만약 처리 될 데이터의 양이 많으면 사용자가 보기에는 마치 멈춰 있는 것처럼 보여 사용자에게 혼란을 줄 수 있다.
  • 이러한 오해를 없애기 위해 프로그램이 정상 동작 중임을 알려주는 기능을 하는 것이 UIActivityIndicator이다.

<UIActivityIndicatorEx/UIActivityIndicaotrExample.h>

<UIActivityIndicatorEx/UIActivityIndicaotrExample.m>

번호 설명
(1) indicator의 색상 설정
(2) indicator 시작
(3) indicator 중지

4.7. UIProgressView

  • 작업의 진행률을 사용자에게 알려주는 기능을 한다.

<UIProgressEx/UIProgressExample.h>

<UIProgressEx/UIProgressExample.m>

번호 설명
(1) 오브젝트 생성 및 스타일 설정
(2) 진행률 설정
(3) increProgress 메소드를 0.1초 딜레이 시키고 호출한다.

4.8. UITextView

  • 여러 줄의 텍스트를 편집하기 적합한 컨트롤

<UITextViewEx/UITextViewExample.h>

<UITextViewEx/UITextViewExample.m>

번호 설명
(1) 편집 가능 여부 설정
(2) 텍스트 설정

4.9. UIAlert

  • 경고 / 알림 메시지 창을 띄워 주는 기능을 한다.

<UIAlertEx/UIAlertExample.h>

<UIAlertEx/UIAlertExample.m>

번호 설명
(1) 오브젝트 생성 및 타이틀, 메시지, 버튼 타이틀 등의 설정
(2) 메시지 창을 띄운다.

4.10. UIActionSheet

  • 사용자의 응답을 받기 위한 옵션 메뉴

<UIActionSheet/UIActionSheetExample.h>

<UIActionSheet/UIActionSheetExample.m>

번호 설명
(1) ActionSheet 오브젝트 생성 및 설정
(2) UIWindow 오브젝트 생성. UIWinodw는 View의 최상위에 있는 화면이다.
[mActionSheet showInView:self.view]로 바로 가능하지만
7에서는 에러가 있어서 최상위 UIWindow를 불러내 해결
(3) self.view가 UIWindow에 연결되어 있는지 판단
(4) 각 버튼이 눌려졌을 때 호출되는 메소드

4.11. UIImageView

  • 이미지를 표시하고 제어하는 기능을 한다.

  • 작업 전 image라는 이름의 디렉토리를 생성하고 이미지 파일을 넣어둔다.

<UIImageViewEx/UIImageViewExample.h>

<UIImageViewEx/UIImageViewExample.m>

번호 설명
(1) 오브젝트 생성. imageNamed에 이름을 지정하면 image 디렉토리에서 같은 이름의 이미지를 가져온다.

4.12. Animation

  • 대상에 대하여 회전, 움직임, 투명도 조절 등의 효과를 주는 기능이다.

<Animation/AnimationExample.h>

<Animation/AnimationExample.m>

번호 설명
(1) 애니메이션 시작 전 설정
(2) 애니메이션 동작 시간 설정
(3) 애니메이션 종류 설정
(4) 애니메이션 동작 설정 (예제에서는 투명도 조정)
(5) 애니메이션 시작

4.13. DatePicker

  • 날짜를 선택할 수 있는 기능

<DatePickerEx/DatePickerExample.h>

<DatePickerEx/DatePickerExample.m>

번호 설명
(1) 날짜가 변경 될 때 호출 될 메소드 설정
(2) date 형식 설정
(3) DatePicker의 현재 날짜를 가져온다.

4.14. MapView

  • 지도 기능을 사용 할 수 있는 컨트롤

  • BuildPhases – Link Binary With Libraries에 Mapkit.framework 추가

<MapViewEx/MapViewExample.h>

<MapViewEx/MapViewExample.m>

번호 설명
(1) 라이브러리의 헤더를 추가
(2) 위도, 경도의 값 지정을 위한 오브젝트
(3) 지도에 나타 낼 지역 설정을 위한 오브젝트
(4) MKCoordinateRegion 객체를 맵에 셋팅하여 표시

4.15. WebView

  • 웹 브라우져 기능을 하는 컨트롤

<WebViewEx/WebViewExample.h>

<WebViewEx/WebViewExample.m>

번호 설명
(1) URL 설정
(2) URL Request 오브젝트 생성
(3) WebView의 loadRequest를 이용하여 설정한 URL을 띄어준다.

4.16. NSUserDefaults

  • App 내에서 사용 되는 데이터들을 관리(저장 및 삭제)할 수 있는 기능

<NSUserDefaultEx/NSUserDefaultExample.h>

<NSUserDefaultEx/NSUserDefaultExample.m>

번호 설명
(1) 키패드 리턴 가능하도록 만들어 준다. 설정을 하지 않으면 엔터 키를 눌러도 키 패드가 사라지지 않는다.
(2) 값 저장을 위한 NSDefaults 오브젝트 생성
(3) 저장 되어 있는 데이터를 불러온다.
(4) 지정된 이름의 데이터를 지운다.
(5) 지정한 이름으로 데이터를 저장
(6) 저장한 NSUserDefaults를 적용(동기화)

4.17. Database

  • iOS도 데이터베이스를 사용할 수 있으며, sqlite3를 사용하고 있다.

  • 사전 작업으로 sqlite 라이브러리 추가 및 db 파일을 생성 해 준다. 순서는 아래와 같다.

Sqlite3 라이브러리 추가

Build Phases -> Link Binary With Libraries -> add -> libsqlite3.0.dylib 추가

DB 파일 생성 및 프로젝트 적용

터미널을 열어 아래와 같이 db 파일 및 테이블을 생성 해 준다.


그림 12 DB 파일 / 테이블 생성

프로젝트 오른쪽 버튼 클릭 -> Add Files to “IOSExample”… 클릭


그림 13 DB 파일 프로젝트 적용 (1)

생성 한 파일 선택 후 Add


그림 14 DB 파일 프로젝트 적용 (2)

파일이 프로젝트 내에 추가가 되었는지 확인


그림 15 DB 파일 프로젝트 적용 (3)

Source

<DatabaseEx/PersonData.h>

<DatabaseEx/PersonData.m>

<DatabaseEx/DatabaseExample.m>

번호 설명
(1) db파일 경로를 가져오는 메소드
(2) db 파일을 복사하여 프로젝트 안으로 넣어준다.
(3) db 파일 열기
(4) select문을 날려주며, compliedStatement로 결과를 받는다
(5) index 값을 통해 값을 가져온다.
(6) 사용 한 compliedStatement닫기
(7) 사용 한 db 닫기
(8) 지정 된 쿼리문을 날려준다

4.18. HttpRequest

  • 웹 서버와 데이터를 주고 받을 수 있도록 도와주는 기능을 한다.

<HttpRequestEx/HttpRequestExample.m>

번호 설명
(1) request 오브젝트 생성. url로 통신 할 주소 설정
(2) POST / GET 방식 설정
(3) 보낼 데이터를 request 오브젝트에 세팅
(4) 설정 한 서버와 통신. 결과 값을 리턴 받는다.
(5) error이 nil이면, 데이터 처리
(6) data를 NSString 형태로 가져온다.

4.19. CheckBox

<CheckBoxEx/CheckBoxExample.h>

<CheckBoxEx/CheckBoxExample.m>

번호 설명
(1) UIButton 오브젝트 선언. iOZ에서는 따로 체크박스 컨트롤로 제공하지 않으며, UIButton을 이용하여 구현하도록 되어 있다.
(2) 보통 상태일 때의 버튼 이미지 설정
(3) 선택 되었을 때의 버튼 이미지 설정
(4) 현재 상태를 미선택으로 설정
(5) 체크 박스가 slected일 경우
(6) 체크 박스 상태를 미선택으로 바꿔준다.

4.20. RadioButton

<RadioButtonEx/RadioButtonExample.h>

<RadioButtonEx/RadioButtonExample.m>

번호 설명
(1) 각 버튼의 태그 설정
(2) 각 버튼의 보통 / 선택 일 때의 이미지 설정
(3) 각 버튼이 눌려졌을 때 선택 / 미선택 설정

4.21. UITabBar

  • 탭으로 구분하여 화면을 표현할 수 있도록 View Controller를 제어할 수 있는 기능도 갖추고 있다.

<UITabBarEx/UITabBarExample.h>

<UITabBarEx/UITabBarExample.m>

번호 설명
(1) 탭에 들어갈 뷰를 넣어준다.
(2) 각 뷰의 타이틀 설정
(3) 각 탭의 아이콘 설정
(4) 탭이 바뀔 때 호출 된다.
(5) 탭이 바뀔 때 호출 된다. (shouldSelectViewcontroller가 먼저 불려지고 호출 됨)

4.22. TableView

  • 여러 개의 데이터를 화면에 표시할 수 있도록 해주는 기능을 한다.

<TableViewEx/TableViewExample.h>

<TableViewEx/TableViewExample.m>

<TableViewEx/DetailViewController.h>

<TableViewEx/DetailViewController.m>

번호 설명
(1) 리스트에 들어갈 텍스트 배열
(2) 리턴 할 섹션 개수
(3) 리턴 할 데이터 개수
(4) 리스트의 각 셀의 설정
(5) 셀의 재사용 설정
(6) 셀에 들어갈 텍스트 설정
(7) 셀이 선택 되었을 때 호출 되는 메소드
(8) 보여줄 뷰 오브젝트 생성
(9) 넘겨줄 데이터 가져오기
(10) 넘겨줄 데이터 설정
(11) 뷰 이동

4.23. Camera

  • iOS에서는 개발자가 기기에 장착된 카메라를 사용하여 사진 또는 동영상 촬영 과정을 간단히 처리할 수 있도록 이미지 피커 컨트롤러(UIImagePickerController)라는 이름의 클래스를 제공한다.

  • 카메라를 사용한 사진 촬영

  • 카메라를 사용한 동영상 촬영
  • 사진 라이브러리 리스트 출력 및 저장되어 있는 사진,동영상 파일에 접근
  • 사용자가 촬영된 이미지를 사용하기로 결정하는 순간에 델리게이트 함수를 호출하기 때문에 해당 델리게이트 함수에서 필요한 내용만 처리 해주면 된다.
  • 이미지 피커 컨트롤을 사용하여 사진 또는 동영상을 촬영하기 위해서는 다음과 같은 처리 과정이 필요하다.
  • 이미지 피커 컨트롤 생성
  • 이미지 피커에서 사용한 소스타입을 카메라로 설정
  • 생성된 이미지 피커 컨트롤을 화면에 삽입

<CameraEx/CameraExample.m>

번호 설명
(1) 이미지 피커 오브젝트 생성
(2) 소스 타입 설정
(3) 미디어 타입 설정
(4) 델리게이트 설정
(5) 이미지 피커 삽입

4.24. Touch

  • iOS에서는 기본적으로 두 개 이상의 터치 입력을 받아 들일 수 있다. 아래는 터치 이벤트의 종류이다.
    이벤트 설명
    touchesBegan 터치 입력이 시작 될 때 발생
    touchesMoved 터치되어 있는 상태에서 움직임이 일어나는 경우 발생
    touchesEnded 터치되어 있는 손가락을 떼는 시점에 발생
    touchesCancelled 터치가 취소되는 경우 발생

<TouchEventEx/TouchEventExample.m>

번호 설명
(1) 멀티 터치 사용 여부 설정
(2) 터치 했을 때 호출 되는 메소드
(3) 터치가 취소 된 경우 호출 되는 메소드
(4) 터치를 하고 떼었을 때 호출 되는 메소드
(5) 터치한 채 움직였을 때 호출 되는 이벤트
(6) 멀티 터치를 했을 때 각 터치 오브젝트들을 가져온다.
(7) 터치 오브젝트의 인덱스에 따른 분기문
(8) 화면의 좌표값 리턴

4.25. Gesture Recognizer

  • 터치 이벤트를 활용하면 충분히 Tap, Pinch, Rotation 등을 구현 할 수 있다.
  • 터치 이벤트가 발생할 때마다 터치의 개수와 각각의 포지션 변화를 분석해야만 한다.
  • 하지만 Gesture Recognizer 클래스를 사용하면 쉽게 Tap, Pinch, Rotation등을 구현할 수 있다.

제스쳐 클래스

클래스 설명
UITapGestureRecognizer 하나 또는 그 이상의 손가락으로 화면을 터치한 후에 손가락을 떼는 동작
UIPinchGestureRecognizer 두 개의 손가락 간격을 좁히고 넓히는 동작
UIRotationGestureRecognizer 두 개의 손가락을 사용하여 좌우로 비트는 동작
UISwipeGestureRecognizer 하나 또는 그 이상의 손가락으로 화면을 터치한 후 이이동 후에 손가락을 떼는 동작
UIPanGestureRecognizer 하나 또는 그 이상의 손가락으로 화면을 터치한 후 이동하는 동작
UILongPressGestureRecognizer 하나 또는 그 이상의 손가락으로 화면을 1초 이상 터치한 상태로 지속하는 동작

<GestureEx/GestureExample.m>

번호 설명
(1) 멀티 터치 허용
(2) 스와이프 허용
(3) Tap 제스쳐 인식
(4) 해당 뷰에 제스쳐 추가
(5) Swipe 제스쳐 인식
(6) Swipe 방향 설정
(7) 터치 개수 설정
(8) Pan 제스쳐 인식
(9) 최소 터치 개수 설정
(10) 터치 카운트 가져오기
(11) 터치 카운트 문자열 생성
(12) 좌표 문자열 생성
(13) 레이블에 출력