2015년 1월 12일 월요일

iOS altertView가 아닌 커스텀 팝업 view 만들기

스토리 보드를 처음으로 사용하다 보니 삽질을 하고 있다.
popover는  iPad에서만 되는 것으로 보인다.

iPhone app은 모든 viewController가 전체 화면으로 구현 해야 하는 것 같다.

storyboard에 어떻게 view 만을 정의 하고 그 것을 현재 viewController에 view에 추가 하느냐?

결론은 안되더라

현재 알바로 의뢰 받아 작업중인 앱에 디자인 가이드에서는 표준 alertView가 아닌
팝업 창이 디자인 되어 있으며

이 팝업 창이 뜰때 기존에 보이던 viewController의 전체 view는 dark색이 65% alpha 값으로
가려져야 하는게 미션이다.

구현 방법은 정답은 아닐수 잇으며 여러 삽질에 삽질 끝에 구현한 방법이다.


스토리 보드에 추가 하려는 viewController의 디자인을 마무리 한다.

 스토리 보드에 새로운 viewController를 추가 한 다음 어떠한 방법으로도 iphone에서는
pop을 할수 없음을 깨달았다. 그러므로 바로 포기하고 새파일을 만든다.
오래된 방법인 xib를 추가한다.

디자인을 한다.
포인트는 View를 추가해서 투명도 65%에 검정 뷰를 하나 추가 한다.

소스를 추가 해서 NotiView라는 클래스 파일과 헤더 파일을 작성 한다.

xib를 초기화 하는 init 코드가 필요 하다.
- (id) initWithCoder:(NSCoder *)aDecoder {
    if(self = [super initWithCoder:aDecoder]) {
        [[NSBundle mainBundle] loadNibNamed:@"NotiView" owner:self options:nil];
        [self addSubview:view];
    }
    return self;

}


닫기 버튼을 구현 하였다면 버튼을 IBAction을 연결 하고 다 음과 같은 코드로
뷰를 보이지 않게 할 수 있다.
#pragma -IB Action -

- (IBAction)CloseButtonClick:(id)sender {
    [self setHidden:YES];

}



스토리 보드로 돌아 와서 추가하려는 viewController에 view를 추가 하고 가장 하위 바닥에
viwe를 넣는다.
그리고 그 view의 클래스 파일을 NotiView로 연결 한다.


Hidden을 YES로 설정 하고 NotiView 를 IBOutlet으로 연결 하여 코드에서 Hidden을 NO
로 하여 팝업 창이 나타나는 효과를 내준다.



댓글 3개:

whiterock :

UIAlertController 를 살펴 보셨는지요?

박경환 :

혹시 전체소스 받아볼수 있을까요..?

박경환 :
작성자가 댓글을 삭제했습니다.