兼容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
- 兼容iOs7的自定义alertView
- 兼容iOs7的自定义alertView
- ios7 自定义alertview
- ios7 自定义alertview
- 自定义AlertView(iOS7)
- Alert--兼容iOS7及以上的AlertView,支持设置对齐方式,支持设置行间距
- iOS7兼容自定义带动画的AlertViewController
- 简单的自定义AlertView
- 自定义AlertView
- 自定义AlertView
- 自定义AlertView
- 自定义alertview
- 自定义alertview
- 自定义alertView
- 自定义AlertView
- 自定义alertView
- 关于自定义AlertView背景的方法收集
- 关于自定义AlertView背景的方法收集
- 想要在linux上深入发展可以在两个方面上专研,虚拟内存和进程
- 【SSRS报表】创建第一个SSRS报表
- 应用webview 获取网页事件
- ScrollerView实现简单的重复滑动
- Linux源码安装的文件默认的存放路径
- 兼容iOs7的自定义alertView
- 国人当自强:两岸三地在线编程学习网站大搜罗
- ArrayList学习
- 19网站实现QQ登录功能
- c++ 错误: 只能为对象和函数指定存储类
- C++常见程序计时方法
- iOS UIScrollView 停止滑动 减速
- 努力消除Win2003的所有安全隐患
- HTML Basic III