博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[开源]在iOS上实现Android风格的控件Toast
阅读量:6420 次
发布时间:2019-06-23

本文共 2209 字,大约阅读时间需要 7 分钟。

 

 

iOS的风格和Apple其他产品一样,简单而粗暴。没有给人其他选择的余地,让你又爱又恨。同样的,Apple对待iOS平台的开发人员和对待大众消费者一样,也不给你留余地。UIAlertView就是一个鲜明标志。功能简单,甚至单一,定制性差,消耗资源。在资源紧张的设备上,UIAlertView的动画效果都会稍微卡一下,很是别扭。

这时还是很希望在iOS上有一个Android风格的Toast控件。

终于发布了这样的控件。在这里和大家分享一下。

我制作了一个demo,使用起来感觉效果还是很不错的。

这个类的接口设计如下:

#import <Foundation/Foundation.h>

#import <UIKit/UIKit.h>

 

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<NSCopying>{

     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];

 

转载于:https://www.cnblogs.com/wuwa/p/6191621.html

你可能感兴趣的文章
单点登录SSO
查看>>
遇见有的软件开启后画面模糊怎么解决
查看>>
好系统重装助手教你怎么识别固态硬盘还是机械硬盘
查看>>
170. js中获取随机数 (记录一下)
查看>>
深入浅出爬虫之道: Python、Golang与GraphQuery的对比
查看>>
DHCP配置
查看>>
MySQL性能测试(二)——Ubuntu 14.4.02, MySQL 5.6.25, sysbench 4.8
查看>>
我的友情链接
查看>>
网络安全十大注意
查看>>
cisco虚拟局域网VLAN路由----待补充
查看>>
join命令实现文件内容拼接
查看>>
-bash:wget command not found的解决方法
查看>>
yara规则
查看>>
我的个人简历
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
KVM组件bug报告方法
查看>>
HTML5初学---坦克大战基础
查看>>
Solr增量更新索引
查看>>
抵制克苏恩[Lydsy2017年4月月赛]
查看>>