iOS开发:Toast for iPhone
iOS开发:Toast for iPhone
主要特点:
1,支持屏幕Y轴任意位置显示,设置距离顶/底端距离
2,支持多行文本
3,支持设置等待时间
4,支持点击隐藏,屏幕旋转时自动隐藏,淡入淡出
5,无需初始化,类方法调用
效果图:

全部代码如下,使用时需要添加QuartzCore.framework,希望能给大家带来方便。
- #import <Foundation/Foundation.h>
- #define DEFAULT_DISPLAY_DURATION 2.0f
- @interface OMGToast : NSObject {
- NSString *text;
- UIButton *contentView;
- CGFloat duration;
- }
- + (void)showWithText:(NSString *) text_;
- + (void)showWithText:(NSString *) text_
- duration:(CGFloat)duration_;
- + (void)showWithText:(NSString *) text_
- topOffset:(CGFloat) topOffset_;
- + (void)showWithText:(NSString *) text_
- topOffset:(CGFloat) topOffset
- duration:(CGFloat) duration_;
- + (void)showWithText:(NSString *) text_
- bottomOffset:(CGFloat) bottomOffset_;
- + (void)showWithText:(NSString *) text_
- bottomOffset:(CGFloat) bottomOffset_
- duration:(CGFloat) duration_;
- @end
- #import "OMGToast.h"
- #import <QuartzCore/QuartzCore.h>
- @interface OMGToast (private)
- - (id)initWithText:(NSString *)text_;
- - (void)setDuration:(CGFloat) duration_;
- - (void)dismisToast;
- - (void)toastTaped:(UIButton *)sender_;
- - (void)showAnimation;
- - (void)hideAnimation;
- - (void)show;
- - (void)showFromTopOffset:(CGFloat) topOffset_;
- - (void)showFromBottomOffset:(CGFloat) bottomOffset_;
- @end
- @implementation OMGToast
- - (void)dealloc{
- [[NSNotificationCenter defaultCenter] removeObserver:self
- name:UIDeviceOrientationDidChangeNotification
- object:[UIDevice currentDevice]];
- [contentView release],contentView = nil;
- [text release],text = nil;
- [super dealloc];
- }
- - (id)initWithText:(NSString *)text_{
- if (self = [super init]) {
- text = [text_ copy];
- UIFont *font = [UIFont boldSystemFontOfSize:14];
- CGSize textSize = [text sizeWithFont:font
- constrainedToSize:CGSizeMake(280, MAXFLOAT)
- lineBreakMode:UILineBreakModeWordWrap];
- UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, textSize.width + 12, textSize.height + 12)];
- textLabel.backgroundColor = [UIColor clearColor];
- textLabel.textColor = [UIColor whiteColor];
- textLabel.textAlignment = UITextAlignmentCenter;
- textLabel.font = font;
- textLabel.text = text;
- textLabel.numberOfLines = 0;
- contentView = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, textLabel.frame.size.width, textLabel.frame.size.height)];
- contentView.layer.cornerRadius = 5.0f;
- contentView.layer.borderWidth = 1.0f;
- contentView.layer.borderColor = [[UIColor grayColor] colorWithAlphaComponent:0.5].CGColor;
- contentView.backgroundColor = [UIColor colorWithRed:0.2f
- green:0.2f
- blue:0.2f
- alpha:0.75f];
- [contentView addSubview:textLabel];
- contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
- [contentView addTarget:self
- action:@selector(toastTaped:)
- forControlEvents:UIControlEventTouchDown];
- contentView.alpha = 0.0f;
- [textLabel release];
- duration = DEFAULT_DISPLAY_DURATION;
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(deviceOrientationDidChanged:)
- name:UIDeviceOrientationDidChangeNotification
- object:[UIDevice currentDevice]];
- }
- return self;
- }
- - (void)deviceOrientationDidChanged:(NSNotification *)notify_{
- [self hideAnimation];
- }
- -(void)dismissToast{
- [contentView removeFromSuperview];
- }
- -(void)toastTaped:(UIButton *)sender_{
- [self hideAnimation];
- }
- - (void)setDuration:(CGFloat) duration_{
- duration = duration_;
- }
- -(void)showAnimation{
- [UIView beginAnimations:@"show" context:NULL];
- [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
- [UIView setAnimationDuration:0.3];
- contentView.alpha = 1.0f;
- [UIView commitAnimations];
- }
- -(void)hideAnimation{
- [UIView beginAnimations:@"hide" context:NULL];
- [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
- [UIView setAnimationDelegate:self];
- [UIView setAnimationDidStopSelector:@selector(dismissToast)];
- [UIView setAnimationDuration:0.3];
- contentView.alpha = 0.0f;
- [UIView commitAnimations];
- }
- - (void)show{
- UIWindow *window = [UIApplication sharedApplication].keyWindow;
- contentView.center = window.center;
- [window addSubview:contentView];
- [self showAnimation];
- [self performSelector:@selector(hideAnimation) withObject:nil afterDelay:duration];
- }
- - (void)showFromTopOffset:(CGFloat) top_{
- UIWindow *window = [UIApplication sharedApplication].keyWindow;
- contentView.center = CGPointMake(window.center.x, top_ + contentView.frame.size.height/2);
- [window addSubview:contentView];
- [self showAnimation];
- [self performSelector:@selector(hideAnimation) withObject:nil afterDelay:duration];
- }
- - (void)showFromBottomOffset:(CGFloat) bottom_{
- UIWindow *window = [UIApplication sharedApplication].keyWindow;
- contentView.center = CGPointMake(window.center.x, window.frame.size.height-(bottom_ + contentView.frame.size.height/2));
- [window addSubview:contentView];
- [self showAnimation];
- [self performSelector:@selector(hideAnimation) withObject:nil afterDelay:duration];
- }
- + (void)showWithText:(NSString *)text_{
- [OMGToast showWithText:text_ duration:DEFAULT_DISPLAY_DURATION];
- }
- + (void)showWithText:(NSString *)text_
- duration:(CGFloat)duration_{
- OMGToast *toast = [[[OMGToast alloc] initWithText:text_] autorelease];
- [toast setDuration:duration_];
- [toast show];
- }
- + (void)showWithText:(NSString *)text_
- topOffset:(CGFloat)topOffset_{
- [OMGToast showWithText:text_ topOffset:topOffset_ duration:DEFAULT_DISPLAY_DURATION];
- }
- + (void)showWithText:(NSString *)text_
- topOffset:(CGFloat)topOffset_
- duration:(CGFloat)duration_{
- OMGToast *toast = [[[OMGToast alloc] initWithText:text_] autorelease];
- [toast setDuration:duration_];
- [toast showFromTopOffset:topOffset_];
- }
- + (void)showWithText:(NSString *)text_
- bottomOffset:(CGFloat)bottomOffset_{
- [OMGToast showWithText:text_ bottomOffset:bottomOffset_ duration:DEFAULT_DISPLAY_DURATION];
- }
- + (void)showWithText:(NSString *)text_
- bottomOffset:(CGFloat)bottomOffset_
- duration:(CGFloat)duration_{
- OMGToast *toast = [[[OMGToast alloc] initWithText:text_] autorelease];
- [toast setDuration:duration_];
- [toast showFromBottomOffset:bottomOffset_];
- }
- @end
可以这样来使用
- [OMGToast showWithText:@"中间显示" duration:5];
- [OMGToast showWithText:@"距离上方50像素" topOffset:50 duration:5];
- [OMGToast showWithText:@"文字很多的时候,我就会自动折行,最大宽度280像素" topOffset:100 duration:5];
- [OMGToast showWithText:@"加入\\n也可以\n显示\n多\n行" topOffset:300 duration:5];
- [OMGToast showWithText:@"距离下方3像素" bottomOffset:3 duration:5];
iOS开发:Toast for iPhone的更多相关文章
- iOS开发点滴:iPhone屏幕适配
最近开始做iOS开发,遇到一些小问题和解决方法,记录下. 今天是iPhone屏幕适配 iPhone5出来之后屏幕就有iPhone就有了2种尺寸:3.5寸和4寸,xcode 5 的IB设计器里面界面 ...
- iOS开发:判断iPhone是否是刘海屏iPhoneX、iPhoneXR、iPhoneXs、iPhoneXs Max等
保证能判断,呕心沥血,不行切JIJI 方法一 Objective-C // iPhoneX.iPhoneXR.iPhoneXs.iPhoneXs Max等 // 判断刘海屏,返回YES表示是刘海屏 - ...
- ios开发介绍
iOS开发概述 •什么是IOS •什么是IOS开发 •为什么要选择IOS开发 •学习IOS开发的准备 1.什么是iOS •iOS是一款由苹果公司开发的操作系统(OS是Operating Sys ...
- ios新手开发——toast提示和旋转图片加载框
不知不觉自学ios已经四个月了,从OC语法到app开发,过程虽然枯燥无味,但是结果还是挺有成就感的,在此分享我的ios开发之路中的小小心得~废话不多说,先上我们今天要实现的效果图: 有过一点做APP经 ...
- iOS开发UI篇—iPad和iPhone开发的比较
一.iPad简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定位介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2.iPad的市场情况 ...
- iOS开发---iPhone SDK 包含哪些东西?
第一部分: 在使用Intel芯片的Macintosh计算机开发iOS应用程序所需的全部接口.工具以及资源全都包含于iPhone SDK. 苹果公司将大部分系统接口发布在框架这种特殊的数据包.一个框架就 ...
- IOS开发/iphone开发多线程
有时候可能有很多功能要同时实现,例如每隔多长时间就会检测程序网络连接,又或者有时候需要从服务器下载一个不小的文件,如果用单线程几乎是不可想的事情,程序将会卡的无法使用,用到多线程和不用多线程,给用户的 ...
- 【转】iOS开发UI篇—iPad和iPhone开发的比较
原文网址:http://www.cnblogs.com/wendingding/p/3918007.html iOS开发UI篇—iPad和iPhone开发的比较 一.iPad简介 1.什么是iPad ...
- IOS开发系列之阿堂教程:玩转IPhone客户端和Web服务端交互(客户端)实践
说到ios的应用开发,我们不能不提到web server服务端,如果没有服务端的支持,ios应用开发就没有多大意义了,因为从事过手机开发的朋友都知道(Android也一样),大量复杂业务的处理和数据库 ...
随机推荐
- 树状数组--前n项和;
树状数组是和线段树类似的数据结构,基本上树状数组可以做的线段树都可以做: 树状数组就是一个数组,在信息记录上有一些特点,以动态求前n项和为例:可以改变数组的某一个元素,求前n项和: 数组tree[ i ...
- ACM程序设计选修课——1024: 末位零(求末尾0的方法+可有可无的快速幂)
1024: 末位零 Time Limit: 1 Sec Memory Limit: 32 MB Submit: 60 Solved: 11 [Submit][Status][Web Board] ...
- 算法复习——矩阵树定理(spoj104)
题目: In some countries building highways takes a lot of time... Maybe that's because there are many p ...
- IE8,11的iframe高度自适应
兼容模式:function iFrameHeightTzinfo() { var ifm= document.getElementById("iframe_tzinfo"); // ...
- IOs动画的那些事儿
CoreAnimation介绍 1:Core Animation是直接作用在CALayer上的(并非UIView上)非常强大的跨Mac OS X和iOS平台的动画处理API,Core Animatio ...
- 转 Python爬虫入门三之Urllib库的基本使用
静觅 » Python爬虫入门三之Urllib库的基本使用 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器 ...
- vue 权限控制按钮3种样式、内容、以及跳转事件
最近碰到一个因为要根据权限来给一个按钮变成不同功能, 简单写出3个按钮然后用v-if也能实现这个功能,但是在加载页面时,如果延迟过高则会把按钮按照DOM顺序加载出来,这是个很不好的效果 思索了下,把三 ...
- Codeforces 877E Danil and a Part-time Job(dfs序 + 线段树)
题目链接 Danil and a Part-time Job 题意 给出一系列询问或者修改操作 $pow$ $x$表示把以$x$为根的子树的所有结点的状态取反($0$变$1$,$1$变$0$ ...
- jenkins配置Maven的私有仓库Nexus
1.什么是nexus? Neux:MAVEN的私有仓库; 如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库 ...
- SQL 列转行与行转列
假设有张学生成绩表(tb)如下:Name Subject Result张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94*/ -------------- ...