본문 바로가기

개발/App Developer

사용자 인터페이스


* 인터페이스 빌더 중 Library 항목에 Image View

- Drawing 체크박스

  Opaque (불투명 항목) : 아이폰 OS에게 이 뷰 밑에 있는 것은 그릴 필요가 없고 컨트롤을 그릴 때 몇 가지 방법으로

                                    최적화를 해서 속도를 높일 수 있게 한다.

  Hidden (숨김) : 사용자는 그 컨트롤을 볼 수 없다.

  Clear COntext before Drawing : 실제 컨트롤을 그리기 전에 컨트롤러의 전체 영역을 모두 지운 뒤에 그리게 된다.

  Clip Subviews (하위뷰 자르기) : 부모 영역 안의 하위 뷰만 그린다. 체크하지 않는 것이 기본 값.

  Autoresize Subviews : 뷰의 크기가 변경되면 하위뷰의 크기도 변경되도록 설정하는 기능.

 

- Interaction 상호작용

  User Interaction Enabled : 사용자가 이 객체와 무엇인가를 할 수 있는 지 설정한다.

                                        체크하지 않으면 그 컨트롤은 어떤 액션 메서드도 유발할 수 없게 된다.

  Multiple Touch : 컨트롤이 멀티터치 이벤트를 받을 수 있을지를 결정한다.

 

* 인터페이스 빌더 중 Library 항목에서 TextField

- TextField

  Placeholder : 텍스트 필드 안에서 회색으로 표시할 텍스트를 설정

  Clear When Editing Begins : 텍스트를 입력하려고 테스트 필드를 선택했을 때 기존에 있던 값을 지우고 새롭게입력을 시작

  Text Input Traits

     Capitalize : 입력되는 순서에 따른 대문자 표시여부

     Auto-enable Return Key : 텍스트 필드에 한 글자 이상을 입력할 때까지 리턴 키는 비활성화 상태를 유지

     Secure : 텍스트 필드의 글자를 보여줄 것인지를 결정하는 옵션

 

* Done 을 누르면 키보드 사라지게 만들기

- 아이폰의 키보드는 물리적인 키보드가 아닌 소프트웨어 기반의 키보드이다.

  사용자가 Done 버튼을 누르면 "Did end on Exit" 이벤트가 생성된다. 그때 텍스트 필드가 제어를 포기하면 키보드가 사라진다.

- first responder 의 개념은 "사용자가 현재 상호작용 중인 컨트롤" 이 메서드에서 어떤 컨트롤이든 이 액션을 유발하면

  퍼스트 리스폰더 상태를 포기하게 만든다.

  텍스트 필드가 퍼스트 리스폰더임을 포기하면 키보드는 사라진다.

예제)

 .h 파일에 추가

-(IBAction)textFieldDoneEditing:(id)sender

 

.m 파일에 추가

-(IBAction)textFieldDoneEditing:(id)sender

{

     [seder resignFisrtResponder];

}

 

* 액션 메서드를 호출할 수 있는 모든 컨트롤들은 UIControl 의 하위 클래스이다.

 

* UISegmentedControl 의 selectedSegmentIndex 속성은 현재 선택된 세그먼트의 인덱스를 정수로 알려준다.

  분할 컨트롤의 첫번째 세그먼트인 Switches 의 인덱스 값은 0 이다.

 

* 액션 시트는 사용자에게 2개 이상의 항목에 대해 강제적인 선택을 받고자 할 때 사용된다.

- 액션 시트는 화면의 아래 쪽에서 나타나며 사용자의 선택을 받기 위한 여러 버튼들로 구성되낟.

  사용자는 버튼 중 하나를 선택하기 전까지는 더 이상 진행할 수 없다.

  사용자의 확인을 받는 용도로 사용된다.

- 액션 시트를 사용하기 위해서는 컨트롤러 클래스가 델리게이트를 사용하면서

  클래스가 UIActionSheetDelegate 프로토콜을 따르게 해야 한다.

 

예제)

 

UIActionSheet *actionSeet = [[UIActionSheet alloc]

          initWithTitle:@"Are you sure ?"                                          

          delegate:self  

          cancelButtonTitle:@"No Way!"

          destructiveButtonTitle:@"Yes, I'm Sure!"

          otherButtonTitles:nil];

[actionSheet showInView:self.view];

[actionSheet release];

 

- initWithTitle : 액션시트의 제목

- delegate : 액션시트의 델리게이트는 시트에 있는 버튼을 눌려졌을 때 알려주는 역할을 한다.

                 좀 더 구체적으로 actionSheet:didDismissWithButtonIndex: 메소드가 호출.

- cancelButtonTitle : 사용자가 더 이상 진행을 원치 않을 때 사용될 버튼의 제목을 설정.

- destructiveButtonTitle : 종료버튼에 사용될 제목

- [actionSheet showInView:self.view]; : 액션 시트 생성 후에 화면 상에 액션 시트를 출력하는 코드

 

결과화면)

 

 

* 경고창은 화면의 중앙에 나타나며 파란 색의 둥그스름한 사각형 모양을 하고 있다.

- 경고창도 액션 시트처럼 애플리케이션을 계속해서 진행하기 전에 사용자의 응답을 받는 용도로 사용된다.

- 액션시트와 다른 점은 경고창의 경우 중요한 무언가나 예외상황이 발생하였다는 것을 알리기 위해 사용되며

  보통 1개의 버튼으로 구성된다. 물론 여러 개의 버튼이 사용될 수도 있다.

- 경고창은 사용자의 선택을 받기 위한 것이 아니라 단순히 무언가를 알려주기 위한 것이므로,

  창이 닫힐 때 이벤트를 받아 무언가를 처리할 필요는 없다.

 

예졔)

 

-(void)actionSheet:(UIActionSheet*)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex

{

     if(buttonIndex != [actionSHeet cancelButtonIndex])

      {

         NSString *msg = nil;

        

         if(nameField.text.length > 0)

           msg = [[NSString alloc] initWithFormat:@"You can breathe easy, %@, everything went OK.", nameField.text];

         else

           msg = @"You can breathe easy, everything went OK.";

 

         UIAertView *alert = [[UIAlertView alloc]

              initWithTitle:@"Something was done"

              message:msg

              delegate:self

              cancelButtonTitle:@"Phew!"

              otherButtonTitles:nill];

[alert show];

[alert release];

[msg release];

       }

}

 

 

결과화면)

 

 

'개발 > App Developer' 카테고리의 다른 글

2010.08.11 - coredata 이해  (0) 2010.08.30
기본적인 상호작용  (0) 2010.08.30
자동회전과 자동크기 조절  (0) 2010.08.30
멀티뷰 애플리케이션  (0) 2010.08.30
탭바와 피커  (0) 2010.08.30