自定义的弹出浮动框-自动消失
2016-07-03 11:42
295 查看
现在很多流行的弹出一个提示视图之后,自动消失的那种,我也自定义类,大家可以参考用用,另外后面把网易新闻从侧面滑出来的自动消失框:http://blog.csdn.net/wuyoujian0313/article/details/51814449
用法也很简单,就是提供一个block来处理提示之后的操作,适用于那些提示之后需要做进一步操作的场景!
// // FadePromptView.m // // Created by wuyj on 5/27/13. // Copyright (c) 2013 wuyj. All rights reserved. // #import "FadePromptView.h" #import "NSString+Utility.h" #define screenHeight [UIScreen mainScreen].bounds.size.height #define screenWidth [UIScreen mainScreen].bounds.size.width @interface FadePromptView() @property(nonatomic,strong,readonly)NSTimer *fadeOutTimer; @property(nonatomic,strong)UILabel *promptLabel; @property(nonatomic,copy)finishPrompt finishBlock; @end @implementation FadePromptView - (void)setFadeOutTimer:(NSTimer *)newTimer { if(_fadeOutTimer){ //因为不是一个重复性的NSTimer所以不需要invalidate //[fadeOutTimer invalidate]; _fadeOutTimer =nil; } if(newTimer) _fadeOutTimer = newTimer; } - (instancetype)initWithFrame:(CGRect)frame { self = [superinitWithFrame:frame]; if (self) { // Initialization code [selfsetBackgroundColor:[UIColorcolorWithWhite:0.0alpha:0.7]]; [selfsetClipsToBounds:YES]; UILabel* prompt = [[UILabelalloc]initWithFrame:CGRectZero]; [prompt setBackgroundColor:[UIColorclearColor]]; [prompt setTextColor:[UIColorwhiteColor]]; [prompt setFont:[UIFontsystemFontOfSize:16]]; [prompt setNumberOfLines:0]; [prompt setLineBreakMode:NSLineBreakByWordWrapping]; [selfaddSubview:prompt]; self.promptLabel = prompt; } returnself; } +(void)showPromptStatus:(NSString*)status duration:(NSTimeInterval)seconds finishBlock:(finishPrompt)finish { FadePromptView *promptView = [[FadePromptViewalloc]initWithFrame:CGRectZero]; [[[UIApplicationsharedApplication]keyWindow]addSubview:promptView]; promptView.finishBlock = [finishcopy]; [promptView show:statusduration:secondspositionY:screenHeight -100]; } +(void)showPromptStatus:(NSString*)status duration:(NSTimeInterval)seconds positionY:(CGFloat)y finishBlock:(finishPrompt)finish { FadePromptView *promptView = [[FadePromptViewalloc]initWithFrame:CGRectZero]; [[[UIApplicationsharedApplication]keyWindow]addSubview:promptView]; promptView.finishBlock = [finishcopy]; [promptView show:statusduration:secondspositionY:y]; } - (void)show:(NSString*)status duration:(NSTimeInterval)seconds positionY:(CGFloat)y { __blockCGFloat yy = y; dispatch_async(dispatch_get_main_queue(), ^{ CGSize size = [statussizeWithFontCompatible:self.promptLabel.fontconstrainedToSize:CGSizeMake(kFadePromptViewMaxWidth -30, CGFLOAT_MAX)lineBreakMode:self.promptLabel.lineBreakMode]; CGFloat w = size.width +30; CGFloat h = size.height +16; CGFloat x = (screenWidth - w )/2.0; yy = yy - h; self.promptLabel.text = status; CGRect rect = CGRectMake(x , yy, w, h); self.frame = rect; self.promptLabel.frame =CGRectMake(15,8, size.width, size.height); self.alpha =0.0; [UIViewanimateWithDuration:0.3animations:^{ self.alpha =1.0; } completion:^(BOOL finished) { [selfdismiss:seconds]; }]; }); } -(void)dismiss:(NSTimeInterval)seconds{ self.fadeOutTimer = [NSTimerscheduledTimerWithTimeInterval:secondstarget:selfselector:@selector(dismiss)userInfo:nilrepeats:NO]; } -(void)dismiss { dispatch_async(dispatch_get_main_queue(), ^{ [UIViewanimateWithDuration:0.3animations:^{ self.alpha =0.0; } completion:^(BOOL finished) { [selfremoveFromSuperview]; if (_finishBlock) { _finishBlock(); } }]; }); } @end
用法也很简单,就是提供一个block来处理提示之后的操作,适用于那些提示之后需要做进一步操作的场景!
相关文章推荐
- jQuery实现摸拟alert提示框
- 基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
- js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
- 在ASP.NET使用JavaScript显示信息提示窗口实现原理及代码
- jQuery实现信息提示框(带有圆角框与动画)效果
- jquery插件珍藏(图片局部放大/信息提示框)
- 三种带箭头提示框总结实例
- javascript实现确定和取消提示框效果
- js右下角弹出提示框示例代码
- JS组件Bootstrap实现弹出框和提示框效果代码
- jquery悬浮提示框完整实例
- 关闭浏览器窗口弹出提示框并且可以控制其失效
- javascript实现延时显示提示框特效代码
- JS实时弹出新消息提示框并有提示音响起的实现代码
- 使用css实现全兼容tooltip提示框
- PHP快速生成各种信息提示框的方法
- js实现右下角提示框的方法
- JS延时器提示框的应用实例代码解析
- JS延时提示框实现方法详解
- Android实现Toast提示框图文并存的方法