当前位置: 代码迷 >> 综合 >> ios7 自定义alertview
  详细解决方案

ios7 自定义alertview

热度:25   发布时间:2024-01-09 00:46:51.0

升级到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];