700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > iOS自定义提示弹出框实现类似UIAlertView的效果

iOS自定义提示弹出框实现类似UIAlertView的效果

时间:2019-01-13 19:56:18

相关推荐

iOS自定义提示弹出框实现类似UIAlertView的效果

php教程|PHP开发

iOS UIAlertView

php教程-PHP开发

首先来看看实现的效果图

照片班级坐位表asp源码,ubuntu 编译内核环境,网络爬虫程序java,php提交文档,珠海seo费用lzw

下面话不多说,以下是实现的示例代码

oa源码怎么安装,修改ubuntu面板样式,tomcat 8非安装版,爬虫越爬越慢,php的学生管理系统论文,公众号 seolzw

#import typedef void(^AlertResult)(NSInteger index); @interface XLAlertView : UIView @property (nonatomic,copy) AlertResult resultIndex; - (instancetype)initWithTitle:(NSString *)title message:(NSString *)message sureBtn:(NSString *)sureTitle cancleBtn:(NSString *)cancleTitle; - (void)showXLAlertView; @end

源码之家 网站模板,ubuntu 哪些软件卸载,tomcat双开端口更改,酒店爬虫盈利,php09234142,辽宁推广抖音seo优化服务电话lzw

#import "XLAlertView.h" ///alertView 宽#define AlertW 280///各个栏目之间的距离#define XLSpace 10.0 @interface XLAlertView() //弹窗@property (nonatomic,retain) UIView *alertView;//title@property (nonatomic,retain) UILabel *titleLbl;//内容@property (nonatomic,retain) UILabel *msgLbl;//确认按钮@property (nonatomic,retain) UIButton *sureBtn;//取消按钮@property (nonatomic,retain) UIButton *cancleBtn;//横线线@property (nonatomic,retain) UIView *lineView;//竖线@property (nonatomic,retain) UIView *verLineView; @end @implementation XLAlertView - (instancetype)initWithTitle:(NSString *)title message:(NSString *)message sureBtn:(NSString *)sureTitle cancleBtn:(NSString *)cancleTitle{ if (self == [super init]) {self.frame = [UIScreen mainScreen].bounds;self.backgroundColor = [UIColor colorWithWhite:0.8 alpha:0.6];self.alertView = [[UIView alloc] init]; self.alertView.backgroundColor = [UIColor whiteColor]; self.alertView.layer.cornerRadius = 5.0;self.alertView.frame = CGRectMake(0, 0, AlertW, 100); self.alertView.layer.position = self.center;if (title) { self.titleLbl = [self GetAdaptiveLable:CGRectMake(2*XLSpace, 2*XLSpace, AlertW-4*XLSpace, 20) AndText:title andIsTitle:YES];self.titleLbl.textAlignment = NSTextAlignmentCenter; [self.alertView addSubview:self.titleLbl]; CGFloat titleW = self.titleLbl.bounds.size.width;CGFloat titleH = self.titleLbl.bounds.size.height; self.titleLbl.frame = CGRectMake((AlertW-titleW)/2, 2*XLSpace, titleW, titleH);} if (message) { self.msgLbl = [self GetAdaptiveLable:CGRectMake(XLSpace, CGRectGetMaxY(self.titleLbl.frame)+XLSpace, AlertW-2*XLSpace, 20) AndText:message andIsTitle:NO];self.msgLbl.textAlignment = NSTextAlignmentCenter; [self.alertView addSubview:self.msgLbl]; CGFloat msgW = self.msgLbl.bounds.size.width;CGFloat msgH = self.msgLbl.bounds.size.height; self.msgLbl.frame = self.titleLbl?CGRectMake((AlertW-msgW)/2, CGRectGetMaxY(self.titleLbl.frame)+XLSpace, msgW, msgH):CGRectMake((AlertW-msgW)/2, 2*XLSpace, msgW, msgH); }self.lineView = [[UIView alloc] init]; self.lineView.frame = self.msgLbl?CGRectMake(0, CGRectGetMaxY(self.msgLbl.frame)+2*XLSpace, AlertW, 1):CGRectMake(0, CGRectGetMaxY(self.titleLbl.frame)+2*XLSpace, AlertW, 1); self.lineView.backgroundColor = [UIColor colorWithWhite:0.8 alpha:0.6]; [self.alertView addSubview:self.lineView];//两个按钮 if (cancleTitle && sureTitle) { self.cancleBtn = [UIButton buttonWithType:UIButtonTypeSystem];self.cancleBtn.frame = CGRectMake(0, CGRectGetMaxY(self.lineView.frame), (AlertW-1)/2, 40);[self.cancleBtn setBackgroundImage:[self imageWithColor:[UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:0.2]] forState:UIControlStateNormal];[self.cancleBtn setBackgroundImage:[self imageWithColor:[UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:0.2]] forState:UIControlStateSelected];[self.cancleBtn setTitle:cancleTitle forState:UIControlStateNormal];//[self.cancleBtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];self.cancleBtn.tag = 1;[self.cancleBtn addTarget:self action:@selector(buttonEvent:) forControlEvents:UIControlEventTouchUpInside]; UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.cancleBtn.bounds byRoundingCorners:UIRectCornerBottomLeft cornerRadii:CGSizeMake(5.0, 5.0)];CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];maskLayer.frame = self.cancleBtn.bounds;maskLayer.path = maskPath.CGPath;self.cancleBtn.layer.mask = maskLayer; [self.alertView addSubview:self.cancleBtn]; }if (cancleTitle && sureTitle) {self.verLineView = [[UIView alloc] init];self.verLineView.frame = CGRectMake(CGRectGetMaxX(self.cancleBtn.frame), CGRectGetMaxY(self.lineView.frame), 1, 40);self.verLineView.backgroundColor = [UIColor colorWithWhite:0.8 alpha:0.6];[self.alertView addSubview:self.verLineView]; }if(sureTitle && cancleTitle){ self.sureBtn = [UIButton buttonWithType:UIButtonTypeSystem];self.sureBtn.frame = CGRectMake(CGRectGetMaxX(self.verLineView.frame), CGRectGetMaxY(self.lineView.frame), (AlertW-1)/2+1, 40);[self.sureBtn setBackgroundImage:[self imageWithColor:[UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:0.2]] forState:UIControlStateNormal];[self.sureBtn setBackgroundImage:[self imageWithColor:[UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:0.2]] forState:UIControlStateSelected];[self.sureBtn setTitle:sureTitle forState:UIControlStateNormal];//[self.sureBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];self.sureBtn.tag = 2;[self.sureBtn addTarget:self action:@selector(buttonEvent:) forControlEvents:UIControlEventTouchUpInside]; UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.sureBtn.bounds byRoundingCorners:UIRectCornerBottomRight cornerRadii:CGSizeMake(5.0, 5.0)];CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];maskLayer.frame = self.sureBtn.bounds;maskLayer.path = maskPath.CGPath;self.sureBtn.layer.mask = maskLayer; [self.alertView addSubview:self.sureBtn];}//只有取消按钮 if (cancleTitle && !sureTitle) { self.cancleBtn = [UIButton buttonWithType:UIButtonTypeSystem];self.cancleBtn.frame = CGRectMake(0, CGRectGetMaxY(self.lineView.frame), AlertW, 40);[self.cancleBtn setBackgroundImage:[self imageWithColor:[UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:0.2]] forState:UIControlStateNormal];[self.cancleBtn setBackgroundImage:[self imageWithColor:[UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:0.2]] forState:UIControlStateSelected];[self.cancleBtn setTitle:cancleTitle forState:UIControlStateNormal];//[self.cancleBtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];self.cancleBtn.tag = 1;[self.cancleBtn addTarget:self action:@selector(buttonEvent:) forControlEvents:UIControlEventTouchUpInside]; UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.cancleBtn.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(5.0, 5.0)];CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];maskLayer.frame = self.cancleBtn.bounds;maskLayer.path = maskPath.CGPath;self.cancleBtn.layer.mask = maskLayer; [self.alertView addSubview:self.cancleBtn]; }//只有确定按钮 if(sureTitle && !cancleTitle){ self.sureBtn = [UIButton buttonWithType:UIButtonTypeSystem];self.sureBtn.frame = CGRectMake(0, CGRectGetMaxY(self.lineView.frame), AlertW, 40);[self.sureBtn setBackgroundImage:[self imageWithColor:[UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:0.2]] forState:UIControlStateNormal];[self.sureBtn setBackgroundImage:[self imageWithColor:[UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:0.2]] forState:UIControlStateSelected];[self.sureBtn setTitle:sureTitle forState:UIControlStateNormal];//[self.sureBtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];self.sureBtn.tag = 2;[self.sureBtn addTarget:self action:@selector(buttonEvent:) forControlEvents:UIControlEventTouchUpInside]; UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.sureBtn.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(5.0, 5.0)];CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];maskLayer.frame = self.sureBtn.bounds;maskLayer.path = maskPath.CGPath;self.sureBtn.layer.mask = maskLayer; [self.alertView addSubview:self.sureBtn];}//计算高度 CGFloat alertHeight = cancleTitle?CGRectGetMaxY(self.cancleBtn.frame):CGRectGetMaxY(self.sureBtn.frame); self.alertView.frame = CGRectMake(0, 0, AlertW, alertHeight); self.alertView.layer.position = self.center;[self addSubview:self.alertView]; } return self;} #pragma mark - 弹出 -- (void)showXLAlertView{ UIWindow *rootWindow = [UIApplication sharedApplication].keyWindow; [rootWindow addSubview:self]; [self creatShowAnimation];} - (void)creatShowAnimation{ self.alertView.layer.position = self.center; self.alertView.transform = CGAffineTransformMakeScale(0.90, 0.90); [UIView animateWithDuration:0.25 delay:0 usingSpringWithDamping:0.8 initialSpringVelocity:1 options:UIViewAnimationOptionCurveLinear animations:^{ self.alertView.transform = CGAffineTransformMakeScale(1.0, 1.0); } completion:^(BOOL finished) { }];} #pragma mark - 回调 -设置只有2 -- > 确定才回调- (void)buttonEvent:(UIButton *)sender{ if (sender.tag == 2) { if (self.resultIndex) {self.resultIndex(sender.tag); } } [self removeFromSuperview];} -(UILabel *)GetAdaptiveLable:(CGRect)rect AndText:(NSString *)contentStr andIsTitle:(BOOL)isTitle{ UILabel *contentLbl = [[UILabel alloc] initWithFrame:rect]; contentLbl.numberOfLines = 0; contentLbl.text = contentStr; contentLbl.textAlignment = NSTextAlignmentCenter; if (isTitle) { contentLbl.font = [UIFont boldSystemFontOfSize:16.0]; }else{ contentLbl.font = [UIFont systemFontOfSize:14.0]; } NSMutableAttributedString *mAttrStr = [[NSMutableAttributedString alloc] initWithString:contentStr]; NSMutableParagraphStyle *mParaStyle = [[NSMutableParagraphStyle alloc] init]; mParaStyle.lineBreakMode = NSLineBreakByCharWrapping; [mParaStyle setLineSpacing:3.0]; [mAttrStr addAttribute:NSParagraphStyleAttributeName value:mParaStyle range:NSMakeRange(0,[contentStr length])]; [contentLbl setAttributedText:mAttrStr]; [contentLbl sizeToFit]; return contentLbl;} -(UIImage *)imageWithColor:(UIColor *)color{ CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [color CGColor]); CGContextFillRect(context, rect); UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return theImage;} @end

在需要使用的地方直接调用

XLAlertView *xlAlertView = [[XLAlertView alloc] initWithTitle:@"自定义UIAlertView" message:@"不喜勿喷,大神多多指导。不胜感激" sureBtn:@"确认" cancleBtn:@"取消"];xlAlertView.resultIndex = ^(NSInteger index){//回调---处理一系列动作};[xlAlertView showXLAlertView];

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。