升级到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*)titlemsg:(NSString*)msgrightBtnTitle:(NSString*)rightTitleleftBtnTitle:(NSString*)leftTitledelegate:(id<CustomAlertViewDelegate>) _delegatemsgFontSize:(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:nilmsg:@"测试alertview"centerBtnTitle:@"确定"];[alert show];[alert release];