123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- //
- // SBExampleViewController.m
- // JDStatusBarNotificationExample
- //
- // Created by Markus on 29.10.13.
- // Copyright (c) 2013 Markus. All rights reserved.
- //
- #import "JDStatusBarNotification.h"
- #import "SBCustomStyleViewController.h"
- #import "SBExampleViewController.h"
- static NSString *const JDButtonName = @"JDButtonName";
- static NSString *const JDButtonInfo = @"JDButtonInfo";
- static NSString *const JDNotificationText = @"JDNotificationText";
- static NSString *const SBStyle1 = @"SBStyle1";
- static NSString *const SBStyle2 = @"SBStyle2";
- @interface SBExampleViewController ()
- @property (nonatomic, strong) NSArray *data;
- @property (nonatomic, assign) UIActivityIndicatorViewStyle indicatorStyle;
- @property (nonatomic, assign) CGFloat progress;
- @property (nonatomic, weak) NSTimer *timer;
- @end
- @implementation SBExampleViewController
- - (id)initWithStyle:(UITableViewStyle)style
- {
- self = [super initWithStyle:style];
- if (self) {
- self.title = @"JDStatusBarNotification";
-
- [JDStatusBarNotification addStyleNamed:SBStyle1
- prepare:^JDStatusBarStyle *(JDStatusBarStyle *style) {
- style.barColor = [UIColor colorWithRed:0.797 green:0.000 blue:0.662 alpha:1.000];
- style.textColor = [UIColor whiteColor];
- style.animationType = JDStatusBarAnimationTypeFade;
- style.font = [UIFont fontWithName:@"SnellRoundhand-Bold" size:17.0];
- style.progressBarColor = [UIColor colorWithRed:0.986 green:0.062 blue:0.598 alpha:1.000];
- style.progressBarHeight = 20.0;
- return style;
- }];
-
- [JDStatusBarNotification addStyleNamed:SBStyle2
- prepare:^JDStatusBarStyle *(JDStatusBarStyle *style) {
- style.barColor = [UIColor cyanColor];
- style.textColor = [UIColor colorWithRed:0.056 green:0.478 blue:0.998 alpha:1.000];
- style.animationType = JDStatusBarAnimationTypeBounce;
- style.progressBarColor = style.textColor;
- style.progressBarHeight = 5.0;
- style.progressBarPosition = JDStatusBarProgressBarPositionTop;
- if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
- style.font = [UIFont fontWithName:@"DINCondensed-Bold" size:17.0];
- style.textVerticalPositionAdjustment = 2.0;
- } else {
- style.font = [UIFont fontWithName:@"HelveticaNeue-CondensedBold" size:17.0];
- }
- return style;
- }];
-
- self.data = @[@[@{JDButtonName:@"Show Notification", JDButtonInfo:@"JDStatusBarStyleDefault", JDNotificationText:@"Better call Saul!"},
- @{JDButtonName:@"Show Progress", JDButtonInfo:@"0-100% in 1s", JDNotificationText:@"Some Progress…"},
- @{JDButtonName:@"Show Activity Indicator", JDButtonInfo:@"UIActivityIndicatorViewStyleGray", JDNotificationText:@"Some Activity…"},
- @{JDButtonName:@"Update text", JDButtonInfo:@"", JDNotificationText:@"Some Activity…"},
- @{JDButtonName:@"Dismiss Notification", JDButtonInfo:@"Animated", JDNotificationText:@""}],
- @[@{JDButtonName:@"Show JDStatusBarStyleError", JDButtonInfo:@"Duration: 2s", JDNotificationText:@"No, I don't have the money.."},
- @{JDButtonName:@"Show JDStatusBarStyleWarning", JDButtonInfo:@"Duration: 2s", JDNotificationText:@"You know who I am!"},
- @{JDButtonName:@"Show JDStatusBarStyleSuccess", JDButtonInfo:@"Duration: 2s", JDNotificationText:@"That's how we roll!"},
- @{JDButtonName:@"Show JDStatusBarStyleDark", JDButtonInfo:@"Duration: 2s", JDNotificationText:@"Don't mess with me!"},
- @{JDButtonName:@"Show JDStatusBarStyleMatrix", JDButtonInfo:@"Duration: 2s", JDNotificationText:@"Wake up Neo…"}],
- @[@{JDButtonName:@"Show custom style 1", JDButtonInfo:@"Duration: 4s, JDStatusBarAnimationTypeFade", JDNotificationText:@"Oh, I love it!"},
- @{JDButtonName:@"Show custom style 2", JDButtonInfo:@"Duration: 4s, JDStatusBarAnimationTypeBounce", JDNotificationText:@"Level up!"}],
- @[@{JDButtonName:@"Create your own style", JDButtonInfo:@"Test all possibilities", JDNotificationText:@""}]];
- }
- return self;
- }
- - (void)viewDidLoad;
- {
- [super viewDidLoad];
-
- self.tableView.backgroundColor = [UIColor colorWithRed:0.93 green:0.93 blue:0.95 alpha:1.0];
- self.tableView.backgroundView = nil;
-
- // presenting a notification, before a keyWindow is set
- self.indicatorStyle = UIActivityIndicatorViewStyleWhite;
- [JDStatusBarNotification showWithStatus:@"Hello World!" dismissAfter:2.0
- styleName:JDStatusBarStyleMatrix];
- }
- - (BOOL)prefersStatusBarHidden
- {
- return NO;
- }
- #pragma mark UITableViewDataSource
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
- {
- return self.data.count;
- }
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- {
- return [self.data[section] count];
- }
- - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
- {
- // create / dequeue cell
- static NSString* identifier = @"identifier";
- UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:identifier];
- if (cell == nil) {
- cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
- cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
- cell.textLabel.font = [UIFont systemFontOfSize:15.0];
- cell.detailTextLabel.font = [UIFont systemFontOfSize:11.0];
- cell.detailTextLabel.textColor = [UIColor colorWithWhite:0.5 alpha:1.0];
- if ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0) {
- cell.textLabel.backgroundColor = [UIColor clearColor];
- cell.detailTextLabel.backgroundColor = [UIColor clearColor];
- cell.backgroundView = [[UIView alloc] init];
- cell.backgroundView.backgroundColor = [UIColor whiteColor];
- cell.selectedBackgroundView = [[UIView alloc] init];
- cell.selectedBackgroundView.backgroundColor = [UIColor colorWithWhite:0.8 alpha:1.0];
- }
- }
-
- NSDictionary *data = self.data[indexPath.section][indexPath.row];
- cell.textLabel.text = data[JDButtonName];
- cell.detailTextLabel.text = data[JDButtonInfo];
-
- return cell;
- }
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
- {
- NSInteger section = indexPath.section;
- NSInteger row = indexPath.row;
-
- NSDictionary *data = self.data[indexPath.section][indexPath.row];
- NSString *status = data[JDNotificationText];
-
- // reset progress timer
- self.progress = 0.0;
- [self.timer invalidate];
- self.timer = nil;
-
- // show notification
- if (section == 0) {
- if (row == 0) {
- self.indicatorStyle = UIActivityIndicatorViewStyleGray;
- [JDStatusBarNotification showWithStatus:status];
- } else if (row == 1) {
- if(![JDStatusBarNotification isVisible]) {
- self.indicatorStyle = UIActivityIndicatorViewStyleGray;
- [JDStatusBarNotification showWithStatus:status dismissAfter:1.4];
- }
- [self startTimer];
- } else if (row == 2) {
- if(![JDStatusBarNotification isVisible]) {
- self.indicatorStyle = UIActivityIndicatorViewStyleGray;
- [JDStatusBarNotification showWithStatus:status dismissAfter:2.0];
- }
- [JDStatusBarNotification showActivityIndicator:YES
- indicatorStyle:self.indicatorStyle];
- } else if (row == 3) {
- [JDStatusBarNotification updateStatus:@"Replaced Text.."];
- } else if (row == 4) {
- [JDStatusBarNotification dismiss];
- }
- } else if (section == 1) {
- self.indicatorStyle = UIActivityIndicatorViewStyleWhite;
- NSString *style = JDStatusBarStyleError;
- if (row == 1) {
- style = JDStatusBarStyleWarning;
- self.indicatorStyle = UIActivityIndicatorViewStyleGray;
- } else if(row == 2) {
- style = JDStatusBarStyleSuccess;
- } else if(row == 3) {
- style = JDStatusBarStyleDark;
- } else if(row == 4) {
- style = JDStatusBarStyleMatrix;
- }
-
- [JDStatusBarNotification showWithStatus:status
- dismissAfter:2.0
- styleName:style];
- } else if (section == 2) {
- self.indicatorStyle = (row==0) ? UIActivityIndicatorViewStyleWhite : UIActivityIndicatorViewStyleGray;
-
- NSString *style = (row==0) ? SBStyle1 : SBStyle2;
- [JDStatusBarNotification showWithStatus:status
- dismissAfter:4.0
- styleName:style];
- } else if (section == 3) {
- SBCustomStyleViewController* viewController = [[SBCustomStyleViewController alloc] init];
- viewController.title = [tableView cellForRowAtIndexPath:indexPath].textLabel.text;
- [self.navigationController pushViewController:viewController animated:YES];
- }
-
- [tableView deselectRowAtIndexPath:indexPath animated:YES];
- }
- - (void)startTimer;
- {
- [JDStatusBarNotification showProgress:self.progress];
-
- [self.timer invalidate];
- self.timer = nil;
-
- if (self.progress < 1.0) {
- CGFloat step = 0.02;
- self.timer = [NSTimer scheduledTimerWithTimeInterval:step target:self
- selector:@selector(startTimer)
- userInfo:nil repeats:NO];
- self.progress += step;
- } else {
- [self performSelector:@selector(hideProgress)
- withObject:nil afterDelay:0.5];
- }
- }
- - (void)hideProgress;
- {
- [JDStatusBarNotification showProgress:0.0];
- }
- @end
|