[开源]在iOS上实现Android风格的控件Toast

简介:

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

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

终于http://code.google.com/p/toast-notifications-ios/ 发布了这样的控件。在这里和大家分享一下。

我制作了一个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:iToastGravityBottomshow];

 

设置显示位置和显示时长类型

[[[[iToast makeText:NSLocalizedString(@"Something to display a very long time"@"")] setGravity:iToastGravityBottomsetDuration:iToastDurationLongshow];











本文转自 arthurchen 51CTO博客,原文链接:http://blog.51cto.com/arthurchen/705159,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 语音技术
探索未来:安卓与iOS的人工智能竞赛
在当今数字化时代,安卓和iOS作为两大主流移动操作系统,已经成为人们日常生活不可或缺的一部分。随着人工智能技术的飞速发展,安卓与iOS之间的竞争日益激烈。本文将深入探讨安卓与iOS在人工智能领域的发展现状和未来趋势,分析两者之间的差异和竞争优势,为读者带来全新的视角和思考。
16 1
|
14天前
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
|
17天前
|
人工智能 安全 Android开发
【专栏】在人工智能时代,Android和iOS两大移动操作系统巨头正加速融合与创新
【4月更文挑战第27天】在人工智能时代,Android和iOS两大移动操作系统巨头正加速融合与创新。Android以其开放性占据广阔市场,集成AI功能如语音助手;而iOS以其稳定性和生态优势,如Siri,提供卓越体验。两者在AI技术、应用场景上相互借鉴,拓展至医疗、教育等领域,并逐步打通生态系统。然而,技术竞争、数据隐私和标准不一是挑战,新市场需求、技术创新和产业合作则带来机遇。未来,二者将继续推动AI发展,为社会进步贡献力量。
|
5天前
|
XML Java Android开发
Android控件动态使用 (转)
Android控件动态使用 (转)
|
15天前
|
缓存 Android开发 iOS开发
打造高效移动应用:Android与iOS性能优化策略
【4月更文挑战第29天】 在移动设备日益成为用户日常互动的主要平台的今天,应用程序的性能已成为决定其成功的关键因素之一。本文将探讨针对Android和iOS平台的性能优化技巧,涵盖内存管理、多线程处理、网络请求优化以及用户界面的流畅性提升等方面。通过分析不同操作系统的架构特点,我们旨在提供一套综合性的策略,帮助开发者构建快速、响应迅捷且用户体验良好的应用。
|
26天前
|
安全 Android开发 iOS开发
探索安卓与iOS操作系统的异同
在当今移动互联网时代,安卓和iOS作为两大主流移动操作系统,扮演着至关重要的角色。本文将深入探讨安卓与iOS操作系统的异同之处,包括界面设计、应用生态、安全性等方面,为读者提供全面的了解和比较。
11 0
|
1月前
|
XML Java Android开发
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
|
1月前
|
XML 编解码 Java
Android控件之高级控件——ListView、cardView、屏幕适配
Android控件之高级控件——ListView、cardView、屏幕适配
|
1月前
|
Android开发
Android控件——Checkbox复选框、RadioButton单选、ToggleButton开关、SeekBar拖动条
Android控件——Checkbox复选框、RadioButton单选、ToggleButton开关、SeekBar拖动条