What is iToast
This page tells you what toast notifications are and why you may need them in your iPhone/iPad application.
If you develop already for Android, then you know what it is so you can skip to the next section.
For the others of us: a toast is a spécial way to display 'non intrusive' message to the user. Those message are displayed on a configurable place on the screen and they disapear after a configurable time interval. The way they appear is similar to the way the Growl app (on mac do).
Difference between iToast and Toast on Android
- The iToasts disapear when tapped by the user even if the configured time is not elapsed.
- iToasts can have an image-icon attached to them (info, warning, error).
- There is application wide configuration object that you can use so that all your iToast looks the same.
- We are planning to add a plug-in based system so that we can offer many look'n feel for the toasts instead of the default.
- iToast advertise the chaining of call so that you can create any toast with any configuration in on instruction.
Benefits of using Toast
Some benefits are:
- The user is not distracted by such alert and just notice them: he don't need to click "Ok". As a rule of thumb we use iToast now everywhere we would have put a UIAlertView with only a single Button.
- You can add it anywhere on the screen depending of the importance of the iToast. We display them with a gravity of Top when it is of medium importance, Center when it is Very importan an Bottom when it is of low importance. # How to use iToast.
Simple Usage
There is only one way to create an iToast: so you won't need to retain much. In it basic form, you create an iToast this way:
[[iToast makeText:NSLocalizedString(@"The activity has been successfully saved.", @"")] show];
Chaining calls
Like in jQuery, you can chain call and terminate by using the show method, there are many things you can configure. Look bellow.
[[[iToast makeText:NSLocalizedString(@"The activity has been successfully saved.", @"")]
setGravity:iToastGravityBottom] show];
Note : Above the gravity can be any of iToastGravityBottom
, iToastGravityTop
, iToastGravityCenter
.
- You can also provide the a physical position on the screen: see the class interface.
- You can provide two offset value that will be added to the actual position of the iToast: you can use this to either move it a few pixel to the left (negative offsetLeft), right (positive offsetLeft), top or bottom.
Or
[[[[iToast makeText:NSLocalizedString(@"Something to display a very long time", @"")]
setGravity:iToastGravityBottom] setDuration:iToastDurationLong] show];
Note : Above the duration can be any integer (the number of millisecond to display it). There is Three preset you can use for duration:
- iToastDurationLong
- iToastDurationShort
- iToastDurationNormal
The Interface
@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 Shared Settings
You don't need to set all the settings each time you want to show an iToast. There is a shared settings repo that each iToast copy it setting when first created.
To modify the shared setting, you first obtain the shared settings like:
iToastSettings *theSettings = [iToastSettings getSharedSettings];
Then you change the settings:
theSettings.duration = 4000;
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
Not yet implemented
You are interested by those features? write the code and share with the community.
- Display of icons based of the type of iToast.
- Plugin based interface to customize the toasts.
Showing your appreciation
A few people already requested it, so now it's here: a Flattr button.