在iOS上实现Android风格的控件Toast
来源:互联网 发布:mac的emoji 编辑:程序博客网 时间:2024/06/06 07:14
iOS的风格和Apple其他产品一样,简单而粗暴。没有给人其他选择的余地,让你又爱又恨。同样的,Apple对待iOS平台的开发人员和对待大众消费者一样,也不给你留余地。UIAlertView就是一个鲜明标志。功能简单,甚至单一,定制性差,消耗资源。在资源紧张的设备上,UIAlertView的动画效果都会稍微卡一下,很是别扭。 这时还是很希望在iOS上有一个Android风格的Toast控件。
我制作了一个demo,使用起来感觉效果还是很不错的。
#import
#import
typedef enum iToastGravity {
iToastGravityTop = 1000001,
iToastGravityBottom,
iToastGravityCenter
}iToastGravity;
enum iToastDuration {
iToastDurationLong = 10000,
iToastDurationShort = 1000,
iToastDurationNormal = 3000
}iToastDuration;
typedef enum iToastType {
iToastTypeInfo = -100000,
iToastTypeNotice,
iToastTypeWarning,
iToastTypeError
}iToastType;
@class iToastSettings;
@interface iToast : NSObject {
iToastSettings *_settings;
NSInteger offsetLeft;
NSInteger offsetTop;
NSTimer *timer;
UIView *view;
NSString *text;
}
- (void) show;
- (iToast *) setDuration:(NSInteger ) duration;
- (iToast *) setGravity:(iToastGravity) gravity
offsetLeft:(NSInteger) left
offsetTop:(NSInteger) top;
- (iToast *) setGravity:(iToastGravity) gravity;
- (iToast *) setPostion:(CGPoint) position;
+ (iToast *) makeText:(NSString *) text;
-(iToastSettings *) theSettings;
@end
===The interface of the SharedSettings ===
@interface iToastSettings : NSObject{
NSInteger duration;
iToastGravity gravity;
CGPoint postition;
iToastType toastType;
NSDictionary *images;
BOOL positionIsSet;
}
@property(assign) NSInteger duration;
@property(assign) iToastGravity gravity;
@property(assign) CGPoint postition;
@property(readonly) NSDictionary *images;
- (void) setImage:(UIImage *)img forType:(iToastType) type;
+ (iToastSettings *) getSharedSettings;
@end
[[iToast makeText:NSLocalizedString(@"The activity has been successfully saved.", @"")] show];
[[[iToast makeText:NSLocalizedString(@"The activity has been successfully saved.", @"")] setGravity:iToastGravityBottom] show];
[[[[iToast makeText:NSLocalizedString(@"Something to display a very long time", @"")] setGravity:iToastGravityBottom] setDuration:iToastDurationLong] show];
我制作了一个demo,使用起来感觉效果还是很不错的。
这个类的接口设计如下:
以下是代码片段:#import
#import
typedef enum iToastGravity {
iToastGravityTop = 1000001,
iToastGravityBottom,
iToastGravityCenter
}iToastGravity;
enum iToastDuration {
iToastDurationLong = 10000,
iToastDurationShort = 1000,
iToastDurationNormal = 3000
}iToastDuration;
typedef enum iToastType {
iToastTypeInfo = -100000,
iToastTypeNotice,
iToastTypeWarning,
iToastTypeError
}iToastType;
@class iToastSettings;
@interface iToast : NSObject {
iToastSettings *_settings;
NSInteger offsetLeft;
NSInteger offsetTop;
NSTimer *timer;
UIView *view;
NSString *text;
}
- (void) show;
- (iToast *) setDuration:(NSInteger ) duration;
- (iToast *) setGravity:(iToastGravity) gravity
offsetLeft:(NSInteger) left
offsetTop:(NSInteger) top;
- (iToast *) setGravity:(iToastGravity) gravity;
- (iToast *) setPostion:(CGPoint) position;
+ (iToast *) makeText:(NSString *) text;
-(iToastSettings *) theSettings;
@end
===The interface of the SharedSettings ===
@interface iToastSettings : NSObject{
NSInteger duration;
iToastGravity gravity;
CGPoint postition;
iToastType toastType;
NSDictionary *images;
BOOL positionIsSet;
}
@property(assign) NSInteger duration;
@property(assign) iToastGravity gravity;
@property(assign) CGPoint postition;
@property(readonly) NSDictionary *images;
- (void) setImage:(UIImage *)img forType:(iToastType) type;
+ (iToastSettings *) getSharedSettings;
@end
从接口上看,可以设置风格和显示时间,显示位置等,但是从实现代码上看是图片显示只是预留的接口,尚未实现。其显示的位置在设备旋转时也没有进行处理,没有进行横屏等其他方向的显示控制。
简单的调用
[[iToast makeText:NSLocalizedString(@"The activity has been successfully saved.", @"")] show];
设置显示位置
[[[iToast makeText:NSLocalizedString(@"The activity has been successfully saved.", @"")] setGravity:iToastGravityBottom] show];
设置显示位置和显示时长类型
[[[[iToast makeText:NSLocalizedString(@"Something to display a very long time", @"")] setGravity:iToastGravityBottom] setDuration:iToastDurationLong] show];
- [开源]在iOS上实现Android风格的控件Toast
- 在iOS上实现Android风格的控件Toast
- 在iOS上实现Android风格的控件Toast
- [开源]在iOS上实现Android风格的控件Toast
- [开源]在iOS上实现Android风格的控件Toast
- 如何在iOS上实现Android风格的提示信息Toast
- 适用于iOS上的Android风格toast通知
- iOS上实现Android的Toast效果
- (ios实战)实现类似于android 的toast控件
- android自定义风格的toast
- 在iOS上实现一个简单的日历控件
- 在iOS上实现一个简单的日历控件
- 在iOS上实现一个简单的日历控件
- 在iOS上实现一个简单的日历控件
- IOS控件列---仿Android的Toast提示信息
- Android 上实现IOS7风格的Switch
- Android 实现IOS上的水滴效果控件
- 在窗体上使用Windows XP风格的控件
- 新白娘子传奇经典句子
- 枚举所有图标
- Google Guice简介
- SQL2000 的字符型数据类型
- VS2008中openGL开发环境配置
- 在iOS上实现Android风格的控件Toast
- jQuery :last 选择器 疑惑
- ping的工作过程
- poj 2688 Cleaning Robot BFS+DFS(TSP问题)
- 调试小记
- AWK多文件的处理的方式
- oracle rollup cube 用法
- error: Cannot access CA certificate '/etc/pki/CA/cacert.pem': No such file or directory error: faile
- 学生成绩管理系统