兼容iOs7的自定义alertView

来源:互联网 发布:网络开设赌场判决书 编辑:程序博客网 时间:2024/04/30 01:12

升级到ios7后,旧项目中使用的继承UIAlertView的自定义alertview无法正常显示了,无奈只好换思路去实现,改成从当前keywindow下创建要显示的alertview,并模仿了系统alertview

 

.h文件

 
复制代码
#import <UIKit/UIKit.h>typedef enum{    CustomAlertViewType_Msg_TwoBtn=1,//含有title,提示内容以及两个button.    CustomAlertViewType_Msg_OneBtn,//含有title,提示内容以及一个button.    CustomAlertViewType_ActivityIndiAndMsg_OneBtn, //含有title,UIActivityIndicatorView控件,提示内容以及一个button.    CustomAlertViewType_Msg_TextField_TwoBtn,    CustomAlertViewType_JalBreakBuy_Login,    CustomAlertViewType_RemindTime,    }CustomAlertViewType;@protocol CustomAlertViewDelegate;@interface CustomAlertView : UIView<UITextFieldDelegate>{    CustomAlertViewType _alertViewType;    id<CustomAlertViewDelegate> _customDelegate;        UILabel* titleLabel;    UILabel* contentLabel;        UIButton* leftBtn;    UIButton* rightBtn;    UIButton* centerBtn;        UIActivityIndicatorView *indicatorView;        UITextField* textField;        UIView* _alertView;    UIView* _bgView;}@property (nonatomic,assign) id<CustomAlertViewDelegate> customDelegate;@property (nonatomic,retain) UILabel* contentLabel;@property (nonatomic,assign) UITextField* textField;//含有title,提示内容以及两个button.- (id)initWithTitle:(NSString*)title  msg:(NSString*)msg rightBtnTitle:(NSString*)rightTitle leftBtnTitle:(NSString*)leftTitle delegate:(id<CustomAlertViewDelegate>) _delegate;- (id)initWithTitle:(NSString*)title  msg:(NSString*)msg rightBtnTitle:(NSString*)rightTitle leftBtnTitle:(NSString*)leftTitle delegate:(id<CustomAlertViewDelegate>) _delegate msgFontSize:(CGFloat)fontSize;//含有title,提示内容以及一个button.- (id)initWithTitle:(NSString*)title  msg:(NSString*)msg centerBtnTitle:(NSString*)centerTitle;//含有title,UIActivityIndicatorView控件,提示内容以及一个button.- (id)initProgressAlertViewWithTitle:(NSString*)title  msg:(NSString*)msg centerBtnTitle:(NSString*)centerTitle delegate:(id<CustomAlertViewDelegate>) _delegate;//含有title,textfield,提示内容以及两个button.- (id)initTextFieldWithTitle:(NSString*)title  msg:(NSString*)msg rightBtnTitle:(NSString*)rightTitle leftBtnTitle:(NSString*)leftTitle delegate:(id<CustomAlertViewDelegate>) _delegate;//含title,两个button,密码输入textfield,用户名等提示信息-(id)initLoginWithDelegate:(id<CustomAlertViewDelegate>)delegate userId:(NSString*)userid title:(NSString*)strTitle rightBtnTitle:(NSString*)strRbt;- (id)initRemindAlert;-(void) show;- (void) hideAlertView;-(void) setTitle:(NSString*) title;@end@protocol CustomAlertViewDelegate <NSObject>@optional- (void) leftBtnPressedWithinalertView:(CustomAlertView*)alert;- (void) rightBtnPressedWithinalertView:(CustomAlertView*)alert;- (void) centerBtnPressedWithinalertView:(CustomAlertView*)alert;@end
复制代码

 

 

.m文件

复制代码
#import "CustomAlertView.h"#import "UIScreen+Frame.h"#import "CustomAlertView.h"#define MAX_CATEGORY_NAME_LENGTH 9#define kTagViewTextFieldJalBreakPassW (1001)@implementation CustomAlertView@synthesize customDelegate = _customDelegate;@synthesize contentLabel;@synthesize textField;//含有title,提示内容以及两个button.- (id)initWithTitle:(NSString*)title  msg:(NSString*)msg rightBtnTitle:(NSString*)rightTitle leftBtnTitle:(NSString*)leftTitle  delegate:(id<CustomAlertViewDelegate>) _delegate{    if ((self = [super initWithFrame:[[UIScreen mainScreen] LandscapeBounds]]))    {        // Initialization code        _alertViewType=CustomAlertViewType_Msg_TwoBtn;        self.customDelegate=_delegate;                [self setBackgroundColor:[UIColor clearColor]];        _bgView = [[UIView alloc] initWithFrame:self.frame];        [_bgView setBackgroundColor:[UIColor blackColor]];        [self addSubview:_bgView];        [_bgView release];                CGRect alertRect = [self getAlertBounds];        _alertView = [[UIView alloc] initWithFrame:alertRect];                UIImageView *alertBg = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, alertRect.size.width, alertRect.size.height)];        alertBg.image = [UIImage imageNamed:@"AlertView_background.png"];        [_alertView addSubview:alertBg];        [alertBg release];                titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(10, 10, 280, 20)];        titleLabel.textColor = [UIColor whiteColor];        titleLabel.backgroundColor = [UIColor clearColor];        titleLabel.font = [UIFont boldSystemFontOfSize:17.0];        titleLabel.text =title;        titleLabel.textAlignment=UITextAlignmentCenter;        [_alertView addSubview:titleLabel];        [titleLabel release];                contentLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 40, 260, 40)];        contentLabel.textColor = [UIColor whiteColor];        contentLabel.backgroundColor = [UIColor clearColor];        contentLabel.font = [UIFont systemFontOfSize:15.0];        contentLabel.text =msg;        contentLabel.textAlignment=UITextAlignmentCenter;        contentLabel.lineBreakMode = UILineBreakModeWordWrap;        contentLabel.numberOfLines = 0;        [_alertView addSubview:contentLabel];        [contentLabel release];                UIImage* unselectedImg=[UIImage imageNamed:@"button_unselected.png"];        UIImage* selectedImg=[UIImage imageNamed:@"button_selected.png"];        rightBtn=[UIButton buttonWithType:UIButtonTypeCustom];        [rightBtn setBackgroundImage:selectedImg forState:UIControlStateNormal];        [rightBtn setTitle:rightTitle forState:UIControlStateNormal];        rightBtn.frame=CGRectMake(155, 85, selectedImg.size.width, selectedImg.size.height);        [_alertView addSubview:rightBtn];        [rightBtn addTarget:self action:@selector(rightBtnPressed:) forControlEvents:UIControlEventTouchUpInside];                leftBtn=[UIButton buttonWithType:UIButtonTypeCustom];        [leftBtn setBackgroundImage:unselectedImg forState:UIControlStateNormal];        [leftBtn setTitle:leftTitle forState:UIControlStateNormal];        [leftBtn addTarget:self action:@selector(leftBtnPressed:) forControlEvents:UIControlEventTouchUpInside];        leftBtn.frame=CGRectMake(20, 85, unselectedImg.size.width, unselectedImg.size.height);        [_alertView addSubview:leftBtn];                [self addSubview:_alertView];        [_alertView release];        [self showBackground];        [self showAlertAnmation];    }    return self;}//可修改字体- (id)initWithTitle:(NSString*)title                msg:(NSString*)msg      rightBtnTitle:(NSString*)rightTitle       leftBtnTitle:(NSString*)leftTitle           delegate:(id<CustomAlertViewDelegate>) _delegate        msgFontSize:(CGFloat)fontSize{    if ((self = [super initWithFrame:[[UIScreen mainScreen] LandscapeBounds]]))    {        // Initialization code        _alertViewType=CustomAlertViewType_Msg_TwoBtn;        self.customDelegate=_delegate;                [self setBackgroundColor:[UIColor clearColor]];        _bgView = [[UIView alloc] initWithFrame:self.frame];        [_bgView setBackgroundColor:[UIColor blackColor]];        [self addSubview:_bgView];        [_bgView release];                CGRect alertRect = [self getAlertBounds];        _alertView = [[UIView alloc] initWithFrame:alertRect];                UIImageView *alertBg = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, alertRect.size.width, alertRect.size.height)];        alertBg.image = [UIImage imageNamed:@"AlertView_background.png"];        [_alertView addSubview:alertBg];        [alertBg release];        titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(10, 10, 280, 20)];        titleLabel.textColor = [UIColor whiteColor];        titleLabel.backgroundColor = [UIColor clearColor];        titleLabel.font = [UIFont boldSystemFontOfSize:17.0];        titleLabel.text =title;        titleLabel.textAlignment=UITextAlignmentCenter;        [_alertView addSubview:titleLabel];        [titleLabel release];                contentLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 30, 260, 40)];        contentLabel.textColor = [UIColor whiteColor];        contentLabel.backgroundColor = [UIColor clearColor];        contentLabel.font = [UIFont systemFontOfSize:fontSize];        contentLabel.text =msg;        contentLabel.textAlignment=UITextAlignmentCenter;        contentLabel.lineBreakMode = UILineBreakModeWordWrap;        contentLabel.numberOfLines = 0;        [_alertView addSubview:contentLabel];        [contentLabel release];                UIImage* unselectedImg=[UIImage imageNamed:@"button_unselected.png"];        UIImage* selectedImg=[UIImage imageNamed:@"button_selected.png"];        rightBtn=[UIButton buttonWithType:UIButtonTypeCustom];        [rightBtn setBackgroundImage:selectedImg forState:UIControlStateNormal];        [rightBtn setTitle:rightTitle forState:UIControlStateNormal];        rightBtn.frame=CGRectMake(155, 85, selectedImg.size.width, selectedImg.size.height);        [_alertView addSubview:rightBtn];        [rightBtn addTarget:self action:@selector(rightBtnPressed:) forControlEvents:UIControlEventTouchUpInside];                leftBtn=[UIButton buttonWithType:UIButtonTypeCustom];        [leftBtn setBackgroundImage:unselectedImg forState:UIControlStateNormal];        [leftBtn setTitle:leftTitle forState:UIControlStateNormal];        [leftBtn addTarget:self action:@selector(leftBtnPressed:) forControlEvents:UIControlEventTouchUpInside];        leftBtn.frame=CGRectMake(20, 85, unselectedImg.size.width, unselectedImg.size.height);        [_alertView addSubview:leftBtn];                [self addSubview:_alertView];        [_alertView release];        [self showBackground];        [self showAlertAnmation];    }    return self;}- (id)initWithTitle:(NSString*)title  msg:(NSString*)msg centerBtnTitle:(NSString*)centerTitle{    self = [super initWithFrame:[[UIScreen mainScreen] LandscapeBounds]];    if(self)    {        _alertViewType=CustomAlertViewType_Msg_OneBtn;        [self setBackgroundColor:[UIColor clearColor]];        _bgView = [[UIView alloc] initWithFrame:self.frame];        [_bgView setBackgroundColor:[UIColor blackColor]];        [self addSubview:_bgView];        [_bgView release];        CGRect alertRect = [self getAlertBounds];        _alertView = [[UIView alloc] initWithFrame:alertRect];        UIImageView *alertBg = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, alertRect.size.width, alertRect.size.height)];        alertBg.image = [UIImage imageNamed:@"AlertView_background.png"];        [_alertView addSubview:alertBg];        [alertBg release];                titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(0, 10, 300, 20)];        titleLabel.textColor = [UIColor whiteColor];        titleLabel.backgroundColor = [UIColor clearColor];        titleLabel.font = [UIFont boldSystemFontOfSize:17.0];        titleLabel.text =title;        titleLabel.textAlignment=UITextAlignmentCenter;        [_alertView addSubview:titleLabel];        [titleLabel release];                contentLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 45, 260, 20)];        contentLabel.textColor = [UIColor whiteColor];        contentLabel.backgroundColor = [UIColor clearColor];        contentLabel.font = [UIFont systemFontOfSize:15.0];        contentLabel.text =msg;        contentLabel.textAlignment=UITextAlignmentCenter;        [_alertView addSubview:contentLabel];        [contentLabel release];                UIImage* selectedImg=[UIImage imageNamed:@"bigbuttonbkimg.png"];        centerBtn=[UIButton buttonWithType:UIButtonTypeCustom];        [centerBtn setBackgroundImage:selectedImg forState:UIControlStateNormal];        [centerBtn setTitle:centerTitle forState:UIControlStateNormal];        centerBtn.frame=CGRectMake(27, 85, 249, 43);        [_alertView addSubview:centerBtn];        [centerBtn addTarget:self action:@selector(centerBtnPressed:) forControlEvents:UIControlEventTouchUpInside];        [self addSubview:_alertView];        [_alertView release];        [self showBackground];        [self showAlertAnmation];    }    return self;}//含有title,UIActivityIndicatorView控件,提示内容以及一个button.- (id)initProgressAlertViewWithTitle:(NSString*)title  msg:(NSString*)msg centerBtnTitle:(NSString*)centerTitle  delegate:(id<CustomAlertViewDelegate>) _delegate{    if ((self = [super initWithFrame:[[UIScreen mainScreen] LandscapeBounds]]))    {        // Initialization code        _alertViewType=CustomAlertViewType_ActivityIndiAndMsg_OneBtn;        self.customDelegate=_delegate;                [self setBackgroundColor:[UIColor clearColor]];        _bgView = [[UIView alloc] initWithFrame:self.frame];        [_bgView setBackgroundColor:[UIColor blackColor]];        [self addSubview:_bgView];        [_bgView release];                CGRect alertRect = [self getAlertBounds];        _alertView = [[UIView alloc] initWithFrame:alertRect];                UIImageView *alertBg = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, alertRect.size.width, alertRect.size.height)];        alertBg.image = [UIImage imageNamed:@"AlertView_background.png"];        [_alertView addSubview:alertBg];        [alertBg release];        titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(0, 10, 300, 20)];        titleLabel.textColor = [UIColor whiteColor];        titleLabel.backgroundColor = [UIColor clearColor];        titleLabel.font = [UIFont boldSystemFontOfSize:17.0];        titleLabel.text =title;        titleLabel.textAlignment=UITextAlignmentCenter;        [_alertView addSubview:titleLabel];        [titleLabel release];                indicatorView= [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(80.0, 45.0, 30.0, 30.0)];        indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;        indicatorView.hidesWhenStopped=NO;        [_alertView addSubview:indicatorView];        [indicatorView release];        [indicatorView startAnimating];                contentLabel = [[UILabel alloc] initWithFrame:CGRectMake(120.0, 50.0, 150.0, 20.0)];        contentLabel.textColor = [UIColor whiteColor];        contentLabel.backgroundColor = [UIColor clearColor];        contentLabel.font = [UIFont boldSystemFontOfSize:15.0];        contentLabel.text =msg;        contentLabel.textAlignment=UITextAlignmentLeft;        [_alertView addSubview:contentLabel];        [contentLabel release];                UIImage* selectedImg=[UIImage imageNamed:@"button_selected.png"];        centerBtn=[UIButton buttonWithType:UIButtonTypeCustom];        [centerBtn setBackgroundImage:selectedImg forState:UIControlStateNormal];        [centerBtn setTitle:centerTitle forState:UIControlStateNormal];        centerBtn.frame=CGRectMake(27, 85, 249, 43);        [_alertView addSubview:centerBtn];        [centerBtn addTarget:self action:@selector(centerBtnPressed:) forControlEvents:UIControlEventTouchUpInside];                [self addSubview:_alertView];        [_alertView release];        [self showBackground];        [self showAlertAnmation];    }    return self;}//含有title,textfield,提示内容以及两个button.- (id)initTextFieldWithTitle:(NSString*)title  msg:(NSString*)msg rightBtnTitle:(NSString*)rightTitle leftBtnTitle:(NSString*)leftTitle delegate:(id<CustomAlertViewDelegate>) _delegate{    if ((self = [super initWithFrame:[[UIScreen mainScreen] LandscapeBounds]]))    {        // Initialization code        _alertViewType=CustomAlertViewType_Msg_TextField_TwoBtn;        self.customDelegate=_delegate;                [self setBackgroundColor:[UIColor clearColor]];        _bgView = [[UIView alloc] initWithFrame:self.frame];        [_bgView setBackgroundColor:[UIColor blackColor]];        [self addSubview:_bgView];        [_bgView release];                CGRect alertRect = [self getAlertBounds];        _alertView = [[UIView alloc] initWithFrame:alertRect];                UIImageView *alertBg = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, alertRect.size.width, alertRect.size.height)];        alertBg.image = [UIImage imageNamed:@"AlertView_background.png"];        [_alertView addSubview:alertBg];        [alertBg release];        titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(0, 15, 300, 20)];        titleLabel.textColor = [UIColor whiteColor];        titleLabel.backgroundColor = [UIColor clearColor];        titleLabel.font = [UIFont boldSystemFontOfSize:17.0];        titleLabel.text =title;        titleLabel.textAlignment=UITextAlignmentCenter;        [_alertView addSubview:titleLabel];        [titleLabel release];                contentLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 33.0, 300.0, 12.0)];        contentLabel.textColor = [UIColor clearColor];        contentLabel.backgroundColor = [UIColor clearColor];        contentLabel.font = [UIFont boldSystemFontOfSize:8.0];        contentLabel.textAlignment=UITextAlignmentCenter;        [_alertView addSubview:contentLabel];        [contentLabel release];                textField = [[[UITextField alloc] initWithFrame:CGRectMake(21, 45, 260, 30)] autorelease];        textField.borderStyle = UITextBorderStyleRoundedRect;        textField.clearButtonMode = UITextFieldViewModeWhileEditing;        textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;        textField.placeholder = msg;        [textField addTarget:self action:@selector(textFieldChanged) forControlEvents:UIControlEventEditingChanged];        [_alertView addSubview:textField];        [textField release];                UIImage* unselectedImg=[UIImage imageNamed:@"button_unselected.png"];        UIImage* selectedImg=[UIImage imageNamed:@"button_selected.png"];        rightBtn=[UIButton buttonWithType:UIButtonTypeCustom];        [rightBtn setBackgroundImage:selectedImg forState:UIControlStateNormal];        [rightBtn setTitle:rightTitle forState:UIControlStateNormal];        rightBtn.frame=CGRectMake(155, 85, selectedImg.size.width, selectedImg.size.height);        [_alertView addSubview:rightBtn];        [rightBtn addTarget:self action:@selector(rightBtnPressed:) forControlEvents:UIControlEventTouchUpInside];                leftBtn=[UIButton buttonWithType:UIButtonTypeCustom];        [leftBtn setBackgroundImage:unselectedImg forState:UIControlStateNormal];        [leftBtn setTitle:leftTitle forState:UIControlStateNormal];        [leftBtn addTarget:self action:@selector(leftBtnPressed:) forControlEvents:UIControlEventTouchUpInside];        leftBtn.frame=CGRectMake(20, 85, unselectedImg.size.width, unselectedImg.size.height);        [_alertView addSubview:leftBtn];                [self addSubview:_alertView];        [_alertView release];        [self showBackground];        [self showAlertAnmation];    }    return self;}-(id)initLoginWithDelegate:(id<CustomAlertViewDelegate>)delegate userId:(NSString*)userid title:(NSString*)strTitle rightBtnTitle:(NSString*)strRbt{    if ((self = [super initWithFrame:[[UIScreen mainScreen] LandscapeBounds]]))    {                _alertViewType = CustomAlertViewType_JalBreakBuy_Login;        self.customDelegate = delegate;                [self setBackgroundColor:[UIColor clearColor]];        _bgView = [[UIView alloc] initWithFrame:self.frame];        [_bgView setBackgroundColor:[UIColor blackColor]];        [self addSubview:_bgView];        [_bgView release];                CGRect alertRect = [self getAlertBounds];        _alertView = [[UIView alloc] initWithFrame:alertRect];                UIImageView *alertBg = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, alertRect.size.width, alertRect.size.height)];        alertBg.image = [UIImage imageNamed:@"AlertView_background.png"];        [_alertView addSubview:alertBg];        [alertBg release];                titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(10, 20, 280, 20)];        titleLabel.textColor = [UIColor whiteColor];        titleLabel.backgroundColor = [UIColor clearColor];        titleLabel.font = [UIFont boldSystemFontOfSize:17.0];        titleLabel.text = strTitle;        titleLabel.textAlignment=UITextAlignmentCenter;        [_alertView addSubview:titleLabel];        [titleLabel release];                CGFloat xLabel1 = 20;        CGFloat xLabel2 = 120;        CGFloat yLevel1 = 50;        CGFloat yLevel2 = 100;                                UILabel* label = nil;        label = [[UILabel alloc]initWithFrame:CGRectMake(xLabel1, yLevel1, 100, 40)];        label.backgroundColor = [UIColor clearColor];        label.text = @"账号:";        label.textColor = [UIColor whiteColor];        label.font = [UIFont boldSystemFontOfSize:17.0];        label.textAlignment = UITextAlignmentCenter;        [_alertView addSubview:label];        [label release];                label = [[UILabel alloc]initWithFrame:CGRectMake(xLabel2, yLevel1,140, 40)];        label.backgroundColor = [UIColor clearColor];        label.text = userid;        label.textColor = [UIColor whiteColor];        label.font = [UIFont boldSystemFontOfSize:17.0];        label.textAlignment = UITextAlignmentLeft;        [_alertView addSubview:label];        [label release];                label = [[UILabel alloc]initWithFrame:CGRectMake(xLabel1, yLevel2, 100, 40)];        label.backgroundColor = [UIColor clearColor];        label.text = @"密码:";        label.textColor = [UIColor whiteColor];        label.font = [UIFont boldSystemFontOfSize:17.0];        label.textAlignment = UITextAlignmentCenter;        [_alertView addSubview:label];        [label release];                textField = [[[UITextField alloc]initWithFrame:CGRectMake(xLabel2, yLevel2, 140, 40)] autorelease];        textField.delegate = self;        textField.textColor = kColorLoginInput;        textField.tag= kTagViewTextFieldJalBreakPassW;        textField.borderStyle = UITextBorderStyleRoundedRect;        textField.secureTextEntry = YES;        textField.returnKeyType = UIReturnKeyDone;        textField.autocorrectionType = UITextAutocorrectionTypeNo;        textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;        textField.font = [UIFont systemFontOfSize:17];        textField.clearButtonMode = UITextFieldViewModeWhileEditing;        textField.leftViewMode = UITextFieldViewModeAlways;        textField.keyboardType = UIKeyboardTypeASCIICapable ;        [_alertView addSubview:textField];        [textField release];                UIImage* unselectedImg=[UIImage imageNamed:@"button_unselected.png"];        UIImage* selectedImg=[UIImage imageNamed:@"button_selected.png"];                        rightBtn=[UIButton buttonWithType:UIButtonTypeCustom];        [rightBtn setBackgroundImage:selectedImg forState:UIControlStateNormal];        [rightBtn setTitle:strRbt forState:UIControlStateNormal];        rightBtn.frame=CGRectMake(155, 155, selectedImg.size.width, selectedImg.size.height);        [_alertView addSubview:rightBtn];        [rightBtn addTarget:self action:@selector(rightBtnPressed:) forControlEvents:UIControlEventTouchUpInside];                leftBtn=[UIButton buttonWithType:UIButtonTypeCustom];        [leftBtn setBackgroundImage:unselectedImg forState:UIControlStateNormal];        [leftBtn setTitle:@"取消" forState:UIControlStateNormal];        [leftBtn addTarget:self action:@selector(leftBtnPressed:) forControlEvents:UIControlEventTouchUpInside];        leftBtn.frame=CGRectMake(20, 155, unselectedImg.size.width, unselectedImg.size.height);        [_alertView addSubview:leftBtn];                [self addSubview:_alertView];        [_alertView release];        [self showBackground];        [self showAlertAnmation];            }        return self;    }-(void) show{    UIWindow* window = [[UIApplication sharedApplication] keyWindow];    NSArray* windowViews = [window subviews];    if(windowViews && [windowViews count]>0){        UIView* subView = [windowViews objectAtIndex:[windowViews count]-1];        for(UIView* aSubView in subView.subviews)        {            [aSubView.layer removeAllAnimations];                                }        [subView addSubview:self];    }}- (void)showBackground{    _bgView.alpha = 0;    [UIView beginAnimations:@"fadeIn" context:nil];    [UIView setAnimationDuration:0.35];    _bgView.alpha = 0.6;    [UIView commitAnimations];}-(void) showAlertAnmation{    CAKeyframeAnimation * animation;    animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];    animation.duration = 0.30;    animation.removedOnCompletion = YES;    animation.fillMode = kCAFillModeForwards;    NSMutableArray *values = [NSMutableArray array];    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.9, 0.9, 1.0)]];    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.1, 1.1, 1.0)]];    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)]];    animation.values = values;    [_alertView.layer addAnimation:animation forKey:nil];}-(void) hideAlertAnmation{    [UIView beginAnimations:@"fadeIn" context:nil];    [UIView setAnimationDuration:0.35];    _bgView.alpha = 0.0;    [UIView commitAnimations];}-(CGRect)getAlertBounds{    CGRect retRect;        if (_alertViewType == CustomAlertViewType_JalBreakBuy_Login)    {                retRect= CGRectMake((self.frame.size.width-300)/2, (self.frame.size.height-200)/2, 300, 220);            }    else    {        UIImage* image=[UIImage imageNamed:@"AlertView_background.png"];        CGSize imageSize = image.size;        retRect= CGRectMake((self.frame.size.width-imageSize.width)/2, (self.frame.size.height-imageSize.height)/2, imageSize.width, imageSize.height);            }        return retRect;}- (void) hideAlertView{    _alertView.hidden = YES;    [self hideAlertAnmation];    [self performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.2];}-(void) removeFromSuperview{    [super removeFromSuperview];}- (void) leftBtnPressed:(id)sender{    if (_customDelegate && [_customDelegate respondsToSelector:@selector(leftBtnPressedWithinalertView:)])    {        [_customDelegate leftBtnPressedWithinalertView:self];    }    else    {        [self hideAlertView];    }}- (void) rightBtnPressed:(id)sender{    if (_customDelegate && [_customDelegate respondsToSelector:@selector(rightBtnPressedWithinalertView:)])    {        [_customDelegate rightBtnPressedWithinalertView:self];    }    else    {        [self hideAlertView];    }}- (void) centerBtnPressed:(id)sender{    if (_customDelegate && [_customDelegate respondsToSelector:@selector(centerBtnPressedWithinalertView:)])    {        [_customDelegate centerBtnPressedWithinalertView:self];    }    else    {        [self hideAlertView];    }}-(void) setTitle:(NSString*) title{    titleLabel.text = title;}-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{    [self endEditing:YES];}-(void) textFieldChanged{    if ([textField.text length] > MAX_CATEGORY_NAME_LENGTH)    {        textField.text = [textField.text substringToIndex:MAX_CATEGORY_NAME_LENGTH];    }}#pragma mark - DelegateTextField- (BOOL)textFieldShouldReturn:(UITextField *)_textField{    if (_textField.tag == kTagViewTextFieldJalBreakPassW)    {        [self rightBtnPressed:nil];        return NO;    }        return YES;}- (BOOL)textField:(UITextField *)textField_ shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{    if (textField_.tag == kTagViewTextFieldJalBreakPassW)    {                if (string && [string length] && [textField_.text length]>15)        {            return NO;        }            }        return YES;    }@end
复制代码

 

 

调用:

            CustomAlertView* alert = [[CustomAlertView alloc]initWithTitle:nil                                                                       msg:@"测试alertview"                                                            centerBtnTitle:@"确定"];            [alert show];            [alert release];  
0 0
原创粉丝点击