블로그 이미지
Sunny's

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

'Alertview'에 해당되는 글 1

  1. 2012.04.14 [UIAlertView] UIAlertView Customize (완전히 개조하기 ^^)1
2012. 4. 14. 00:16 IPhone


아이폰에서 기본적으로 제공하는 AlertView가 아패 그림과 같이 표현되기를 바라는 분이 있다. 

이랬던 UIAlertView가 ...


이렇게 바뀌었습니다아~~~

무슨 집 고쳐주는 프로그램 같지만... 하여간 UIAlertView를 Customize 하는 방법이다.

바탕 이미지과 버튼 이미지를 바꾸고, '이용권이 필요합니다' 글자는 바탕이 흰색톤인데다가 초기 기본값이 음영 처리가 되어 있어서 너무 이상하게 보여서 검은색으로 수정 했다.

사실 알고보면 별거 없긴 한데... 기본적으로 생각해 볼 수 있는 부분은 UIView를 AlertView 처럼 구성하는것도 하나의 방법이 될 수 있겠지만... Modal 처리,  버튼 갯수에 대한 처리라든지, delegate 처리 등등... 한마디로 귀찮다. ㅠ.ㅠ

여기서는 UIAlertView를 상속 받아 -(void) show; 함수만 재정의 했다.

먼저 MyAlertView.h

#import <UIKit/UIKit.h>


@interface MyAlertView : UIAlertView

-(void) show;

@end


ㅋㅋ 썰렁하다.


이제 MyAlertView.m


#import "MyAlertView.h"


@implementation MyAlertView


- (id)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        // Initialization code

    }

    return self;

}


/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect

{

    // Drawing code

}

*/


-(void) show {

    [super show];

    

    for (UIView* view in self.subviews) {

        if ([view isKindOfClass:[UIImageView class]]) {  // SubView UIImageView이면 -> 바탕

            UIImage *bg = [UIImage imageNamed:@"popup_myabg.png"];

            ((UIImageView*)view).image = [bgresizableImageWithCapInsets:UIEdgeInsetsMake(49,8,8,8)];

        }

        else if ([view isKindOfClass:[UIButton class]]) { // Button type 이면 

            [(UIButton*)view setBackgroundImage:[UIImage imageNamed:@"pop_btn_blank.png"]forState:UIControlStateNormal];

        }

        else if ([view isKindOfClass:[UILabel class]]) {  // UILabel이면.

            UILabel* l = (UILabel*)view;

            if ([l.text isEqualToString:self.title]) {  // Label text title 같으면 흰색 

                l.textColor = [UIColor whiteColor];

            }

            else {   // 아니면 검은 

                l.textColor = [UIColor blackColor];

            }

                

            l.shadowColor = [UIColor clearColor];

        }

    }

}


@end


끝... 만약 위 예제처럼 고정 이미지가 아니고 이미지를 바꾸고 싶다면...

-(void) showWithBGImage:(UIImage*) withButtonImage:(UIImage) 등등등  이런식으로 만들던지, 아니면 변수를 따로 둬서 지정하게 하던지 방법은 여러가지 있겠다...

사용할때는... 똑같이 쓰면 된다.  Class명만 바꿔서... ^^


MyAlertView *alert = [[MyAlertView allocinitWithTitle:@"알림" message:@"이용권이 필요합니다." delegate:selfcancelButtonTitle:@"닫기" otherButtonTitles:@"자세히보기"nil];

[alert show];


posted by Sunny's
prev 1 next