[IPhone 09.01]06. About of View

2010. 9. 1. 15:50IPhone/Basic

   아이폰은 전체적의 구성을 뷰라는 개념으로 구성되어 있고 그 뷰라는 게념은 포토샵이나 일러스트를 해본사람은 알겠지만 레이어와 같은 구조로 이루어져 있습니다.
뷰에는 뷰의 컨트롤러인 UIViewController가 있으며 일반적인 뷰를 제외하고도 Alert View와 Menu가 있습니다.

1.일반적인 View
생성할때에는 UIView *view;로 생성하고 [self.view addSubview:view];로 뷰를 추가해주면 된다.
삭제할때는 [view removeFromSuperview]; 삭제가 되며
목록을 얻을때 [상위뷰 subviews];
뷰의 순서를 바꾸는 방법 [상위뷰 exchangeSubviewAtIndex:n1 withSubviewAtIndex:n2];
뷰의 프레임의 위치와 크기를 조절하는방법은 각 좌표를 이용하는데 (60.60)의 위치에 가로 50 세로 50픽셀의 프레임을 만들고 싶을때 CGRectMake(60,60,50,50)하면 좌표값과 사이즈가 입력된것이다. 그래서 뷰의 초기 프레임 사이즈를 정의할때에는 다음과 같이 하며 추가로 그 뷰의 배경색도 변형하는 방법이다.

-(void)newView()
{
          UIView *view;
          view 
=[[UIView alloc]initWithFrame:CGRectMake(xpoint,ypoint,sizex,sizey)];
          view.backgroundColor=[UIColor redColor];
          [self.view addSubview:view];
}

  만약에 첫 생성이 아닌 뷰의 위치만 옮기고 싶다면 [view setVenter:CGPointMake(x,y)];로 나타내면 뷰의 중심점을 기준으로 x,y자표가 이동이 가능하게 된다.

UIViewController에는 몇가지 기본적인 위임 메소드가 있다.
-(void)viewDidLoad : 뷰가 메모리에 로드될 때 호출 된다.
-(void)viewDidAppear:(BOOL)animated :뷰가 화면에 나타나고나서 호출된다.
-(void)viewDidDisappear:(BOOL)animated :뷰가 화면에서 사라지가 나서 호출된다.
-(void)viewDidUnload: 뷰가 완전히 제거되고 나서 호출된다.

2.Alert View
  AlertView는 일반적으로 사용하는 경고창 알림창이다. 이 뷰는 모서리가 둥글게 처리된 파란색의 반투명창이고 흰색의 글자로만 쓰이는 뷰이며 기초의 형태를 사용자의 마음대로 설정하지는 못하는 단점을 가지고 있으나 유용으로 꼭 필요한 기능중 하나이다!!
이뷰는 UIAlertViewDelegate를 위임 받습니다.

 UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"헤드"
                                                           message: @"본문"
                                                            delegate:self
                                                cancelButtonTitle:@"취소버튼"
                                                otherButtonTitles:@"다른버튼",nil];
[alert show];
[alert release];

만약 버튼을 누르게 된다면 이값은 인덱스 값으로 메시지를 보내게 되며 상위를 0부터 순차적으로 1식 올라가게 되어 있습니다.
인덱스값은 -(void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)btnIdx 메소드로 메시지가 전송됩니다. 혹시 AlertView로 작업을 행하고 싶을 경우 저기에서 다음과 같이 해주면 됩니다.
  -(void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)btnIdx
{
           switch(btnIdx)
          {
                  case 0:
                       // 1번째버튼을 눌렀다
                      break;
                  case 1:
                       // 1번째버튼을 눌렀다
                      break;
                  case 2:
                       // 1번째버튼을 눌렀다
                      break;
          }
}
다음과 같이 스위치를 이용해 작성해주면 각각의 버튼 입력시 다르게 반응 하게 할 수 있습니다.

3. Menu
메뉴는 Alert과 비슷하지만 조금 다른점은 아래서 올라온다는 점이 되겠습니다. 이뷰는 UIActionSheetDelegate를 위임받습니다.

  UIActionSheet *menu =[[UIActionSheet alloc]initWithTitle:@"헤드"
                                                                      delegate:self
                                                          cancelButtonTitle:@"취소버튼"
                                                     destructiveButtonTile:@"빨산색버튼"
                                                           otherButtonTitles:@"다른버튼",nil];
[menu showInView:self];
[menu release];

메뉴또한 Alert와 같이 누른 버튼의 값이 보내어지며 값은 다음과 같이 메시지가 보내어 질수 있습니다.
  -(void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)btnIdx
{
           switch(btnIdx)
          {
                  case 0:
                       // 1번째버튼을 눌렀다
                      break;
                  case 1:
                       // 1번째버튼을 눌렀다
                      break;
                  case 2:
                       // 1번째버튼을 눌렀다
                      break;
          }
}