转载请注明出处。

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

.h文件

 
#import <UIKit/UIKit.h>

typedef enum
{
CustomAlertViewType_Msg_TwoBtn=,//含有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(, , alertRect.size.width, alertRect.size.height)];
alertBg.image = [UIImage imageNamed:@"AlertView_background.png"];
[_alertView addSubview:alertBg];
[alertBg release]; titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(, , , )];
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(, , , )];
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 = ;
[_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(, , 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(, , 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(, , alertRect.size.width, alertRect.size.height)];
alertBg.image = [UIImage imageNamed:@"AlertView_background.png"];
[_alertView addSubview:alertBg];
[alertBg release]; titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(, , , )];
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(, , , )];
contentLabel.textColor = [UIColor whiteColor];
contentLabel.backgroundColor = [UIColor clearColor];
contentLabel.font = [UIFont systemFontOfSize:fontSize];
contentLabel.text =msg;
contentLabel.textAlignment=UITextAlignmentCenter;
contentLabel.lineBreakMode = UILineBreakModeWordWrap;
contentLabel.numberOfLines = ;
[_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(, , 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(, , 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(, , alertRect.size.width, alertRect.size.height)];
alertBg.image = [UIImage imageNamed:@"AlertView_background.png"];
[_alertView addSubview:alertBg];
[alertBg release]; titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(, , , )];
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(, , , )];
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(, , , );
[_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(, , alertRect.size.width, alertRect.size.height)];
alertBg.image = [UIImage imageNamed:@"AlertView_background.png"];
[_alertView addSubview:alertBg];
[alertBg release]; titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(, , , )];
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(, , , );
[_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(, , alertRect.size.width, alertRect.size.height)];
alertBg.image = [UIImage imageNamed:@"AlertView_background.png"];
[_alertView addSubview:alertBg];
[alertBg release]; titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(, , , )];
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(, , , )] 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(, , 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(, , 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(, , alertRect.size.width, alertRect.size.height)];
alertBg.image = [UIImage imageNamed:@"AlertView_background.png"];
[_alertView addSubview:alertBg];
[alertBg release]; titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(, , , )];
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 = ;
CGFloat xLabel2 = ;
CGFloat yLevel1 = ;
CGFloat yLevel2 = ; UILabel* label = nil;
label = [[UILabel alloc]initWithFrame:CGRectMake(xLabel1, yLevel1, , )];
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,, )];
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, , )];
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, , )] 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:];
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(, , 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(, , 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]>){
UIView* subView = [windowViews objectAtIndex:[windowViews count]-];
for(UIView* aSubView in subView.subviews)
{
[aSubView.layer removeAllAnimations]; }
[subView addSubview:self];
} } - (void)showBackground
{
_bgView.alpha = ;
[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-)/, (self.frame.size.height-)/, , ); }
else
{
UIImage* image=[UIImage imageNamed:@"AlertView_background.png"];
CGSize imageSize = image.size;
retRect= CGRectMake((self.frame.size.width-imageSize.width)/, (self.frame.size.height-imageSize.height)/, 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]>)
{
return NO;
} } return YES; } @end

调用:

            CustomAlertView* alert = [[CustomAlertView alloc]initWithTitle:nil
msg:@"测试alertview"
centerBtnTitle:@"确定"];
[alert show];
[alert release];
  

兼容iOs7的自定义alertView的更多相关文章

  1. iOS 读取相册二维码,兼容ios7(使用CIDetector 和 ZXingObjC)

    ios从相册读取二维码,在ios8以上,苹果提供了自带的识别图片二维码的功能,这种方式效率最好,也是最推荐的,但是如果你的系统需要向下兼容ios7,就必须用其他方式. 这里我选择的是 ZXingObj ...

  2. iOS 第三方自定义Alertview项目MBProcessHud中的重要代码分析

    做ios,弹出一个自定义的alertview挺常见的.ios7以前,我们可以对系统的UIAlertView进行一点操作,实现一点简单的定制,但是ios7不再允许我们这样做了.因此,我们需要自己创建一个 ...

  3. Swift3.0生成二维码、扫描二维码、相册读取二维码,兼容iOS7(结合ZXingObjC)

    二维码生成 //MARK: 传进去字符串,生成二维码图片(>=iOS7) text:要生成的二维码内容 WH:二维码高宽 private func creatQRCodeImage(text: ...

  4. 自定义AlertView的方法和改变Alert的弹出位置以及其宽度

    此方法在IOS7中不适合 一.自定义AlertView 1.首先新建一个OC类继承与AlertView. 2.然后再.m中添加方法 - (void)layoutSubviews 可以再这个方法里边改变 ...

  5. Swift自定义AlertView

    今天项目加新需求,添加积分过期提醒功能: 第一反应就用系统的UIAlertViewController,但是message中积分是需要红色显示. // let str = "尊敬的顾客,您有 ...

  6. [iOS开发]Xcode8兼容iOS7以及低版本Xcode调试高版本iOS系统

    现在的项目一般都要兼容iOS7系统,同时也要兼容iOS10,在Xcode8上面,默认情况下无法调试iOS7,因为缺乏调试iOS7需要的配置文件.同时在低版本的Xcode上面(8以下),也无法调试iOS ...

  7. Xcode8兼容iOS7以及低版本Xcode调试高版本iOS系统

    我们使用Xcode8新建的工程,默认支持的最低系统是iOS8,我们可以手动更改版本到7.0,但是不支持真机调试. 现在的项目一般都要兼容iOS7系统,同时也要兼容iOS10,在Xcode8上面,默认情 ...

  8. iOS开发——自定义AlertView

    自定义的AlertView,可以选择出现的动画方式,正文信息高度自动变化,特意做了几个可以对比.没啥难点,直接上代码,一看就懂. 1.在YYTAlertView.h文件中 // //  YYTAler ...

  9. iOS7新特性-完美解决iOS7关于自定义导航条UIBarButtonItem偏移的问题

    前言: 本文由DevDiv社区@Vincent 原创,转载请注明出处! http://www.devdiv.com/iOS_iPhone-ios_ios_uibarbuttonitem_-thread ...

随机推荐

  1. .net 获取当前电脑账户

    string domainAndName = User.Identity.Name; ] { '\\' }, StringSplitOptions.RemoveEmptyEntries); strin ...

  2. 【error】git clone: SSL certificate problem: unable to get local issuer certificate

    报错: $ git clone https://github.XXX.git Cloning into 'XXX'... fatal: unable to access 'https://github ...

  3. cocos2d-x入门二 helloworld实例运行与创建

    本机环境:win7+VS2012+python2.7.8+cocos2d-x-3.8,另外本机已经配置android开发环境(java+eclipse+SDK+ADT),针对环境搭建后续会有一篇详细说 ...

  4. [spring]<context:property-placeholder/>

    问题: 有些参数在某些阶段中是常量,这些参数在不同阶段之间又往往需要改变,如: 在开发阶段我们连接数据库时的url,username,password等信息 分布式应用中client端的server地 ...

  5. unity调用Android百度地图

    由于个人是Android小白,在这个配置上面被折磨了很久,因此写下这篇文章 工具:eclipse + unity5.6.1 首先去百度地图开发者平台下载你需要的资源,我只需要显示地图和定位,这个时候你 ...

  6. web常见问题排查

    原帖地址:http://mp.weixin.qq.com/s?__biz=MjM5NzUwNDA5MA==&mid=200596752&idx=1&sn=37ecae802f3 ...

  7. FastDFS图片服务器

    首先要转一个FastDFS,这个很难装.一般由运维人员安装. git项目fastdfs-client-java由happy fish开发的,down下来后import到项目中maven install ...

  8. 前端开发必备 - Emmet

    介绍 Emmet (前身为 Zen Coding) 是一个能大幅度提高前端开发效率的一个工具. 基本上,大多数的文本编辑器都会允许你存储和重用一些代码块,我们称之为"片段".虽然片 ...

  9. 内存保护机制及绕过方法——通过覆盖部分地址绕过ASLR

    ASLR保护机制 ASLR简介 微软在Windows Vista.2008 server.Windows 7.Windows 8等系统的发布中, 开始将ASLR作为内置的系统保护机制运行, 将系统映像 ...

  10. Node.js 全栈开发(二)——ES 201x 新语法的使用之基础篇

    在讲 ES 2015 新语法之前,先来说一下为什么叫 ES.JavaScript 是这门语言的名称,它有一个为它制定标准化的组织 European Computer Manufacturers Ass ...