From bddc275860cec856f2e25d308e6e6d946fe25a05 Mon Sep 17 00:00:00 2001 From: anclefeudor Date: Thu, 11 Dec 2014 02:17:20 +0200 Subject: [PATCH 1/6] Subtitle Height Setting --- SCLAlertView/SCLAlertView.h | 6 ++++++ SCLAlertView/SCLAlertView.m | 13 ++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/SCLAlertView/SCLAlertView.h b/SCLAlertView/SCLAlertView.h index 79e5879..adb084f 100755 --- a/SCLAlertView/SCLAlertView.h +++ b/SCLAlertView/SCLAlertView.h @@ -142,6 +142,12 @@ typedef NS_ENUM(NSInteger, SCLAlertViewBackground) */ - (UITextField *)addTextField:(NSString *)title; +/** Set SubTitle Height + * + * @param value Height of scrollable subtitle text field. + */ +- (void)setSubTitleHeight:(CGFloat)value; + /** Add a Button with a title and a block to handle when the button is pressed. * * @param title The text displayed on the button. diff --git a/SCLAlertView/SCLAlertView.m b/SCLAlertView/SCLAlertView.m index 750d45b..1ac228e 100755 --- a/SCLAlertView/SCLAlertView.m +++ b/SCLAlertView/SCLAlertView.m @@ -55,6 +55,9 @@ @implementation SCLAlertView CGFloat kWindowHeight; CGFloat kTextHeight; +// Subtitle +CGFloat kSubTitleHeight; + // Font NSString *kDefaultFont = @"HelveticaNeue"; NSString *kButtonFont = @"HelveticaNeue-Bold"; @@ -84,6 +87,7 @@ - (instancetype)init kCircleIconHeight = 20.0f; kWindowWidth = 240.0f; kWindowHeight = 178.0f; + kSubTitleHeight = 90.0f; kTextHeight = 90.0f; _shouldDismissOnTapOutside = NO; _canAddObservers = YES; @@ -281,6 +285,13 @@ - (void)setSoundURL:(NSURL *)soundURL _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:_soundURL error:&error]; } +#pragma mark - Subtitle Height + +- (void)setSubTitleHeight:(CGFloat)value +{ + kSubTitleHeight = value; +} + #pragma mark - TextField - (UITextField *)addTextField:(NSString *)title @@ -531,7 +542,7 @@ -(SCLAlertViewResponder *)showTitle:(UIViewController *)vc image:(UIImage *)imag } // Adjust text view size, if necessary - CGSize sz = CGSizeMake(kWindowWidth - 24.0f, 90.0f); + CGSize sz = CGSizeMake(kWindowWidth - 24.0f, kSubTitleHeight); NSDictionary *attr = @{NSFontAttributeName:self.viewText.font}; if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) From 685c3cf1426a459e422c0be8250ac9722ba662b5 Mon Sep 17 00:00:00 2001 From: anclefeudor Date: Thu, 11 Dec 2014 03:11:16 +0200 Subject: [PATCH 2/6] Last fix --- SCLAlertView/SCLAlertView.m | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/SCLAlertView/SCLAlertView.m b/SCLAlertView/SCLAlertView.m index 1ac228e..bc6a131 100755 --- a/SCLAlertView/SCLAlertView.m +++ b/SCLAlertView/SCLAlertView.m @@ -554,6 +554,9 @@ -(SCLAlertViewResponder *)showTitle:(UIViewController *)vc image:(UIImage *)imag { kWindowHeight -= (kTextHeight - ht); kTextHeight = ht; + }else{ + kWindowHeight += (ht - kTextHeight); + kTextHeight = ht; } } else @@ -565,6 +568,9 @@ -(SCLAlertViewResponder *)showTitle:(UIViewController *)vc image:(UIImage *)imag { kWindowHeight -= (kTextHeight - ht); kTextHeight = ht; + }else{ + kWindowHeight += (ht - kTextHeight); + kTextHeight = ht; } } } From 01956c0ff5bfca9ddf1559b4bef11a75eed4c845 Mon Sep 17 00:00:00 2001 From: Diogo Autilio Date: Thu, 11 Dec 2014 09:34:46 -0200 Subject: [PATCH 3/6] Update README.md Add CocoaPods badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 40aeebf..a3fd9e6 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ SCLAlertView-Objective-C Animated Alert View written in Swift but ported to Objective-C, which can be used as a `UIAlertView` or `UIAlertController` replacement. [![Build Status](https://travis-ci.org/dogo/SCLAlertView.svg?branch=master)](https://travis-ci.org/dogo/SCLAlertView) +[![Cocoapods](http://img.shields.io/cocoapods/v/SCLAlertView-Objective-C.svg)](http://cocoapods.org/?q=SCLAlertView-Objective-C) ![BackgroundImage](https://raw.githubusercontent.com/dogo/SCLAlertView/master/ScreenShots/ScreenShot.png)_ ![BackgroundImage](https://raw.githubusercontent.com/dogo/SCLAlertView/master/ScreenShots/ScreenShot2.png) From b56ec3ceee9851117b02a0ace1181532849217d6 Mon Sep 17 00:00:00 2001 From: michalciolek Date: Sat, 13 Dec 2014 10:37:41 +0100 Subject: [PATCH 4/6] - Add Indeterminate progress --- README.md | 10 +++++++ SCLAlertView/SCLAlertView.h | 17 +++++++++++ SCLAlertView/SCLAlertView.m | 28 ++++++++++++++++-- .../Base.lproj/Storyboard.storyboard | 20 +++++++++++-- SCLAlertViewExample/ViewController.h | 1 + SCLAlertViewExample/ViewController.m | 8 +++++ ScreenShots/ScreenShot5.png | Bin 0 -> 39062 bytes 7 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 ScreenShots/ScreenShot5.png diff --git a/README.md b/README.md index a3fd9e6..2cd4496 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ Animated Alert View written in Swift but ported to Objective-C, which can be use ![BackgroundImage](https://raw.githubusercontent.com/dogo/SCLAlertView/master/ScreenShots/ScreenShot2.png) ![BackgroundImage](https://raw.githubusercontent.com/dogo/SCLAlertView/master/ScreenShots/ScreenShot3.png) ![BackgroundImage](https://raw.githubusercontent.com/dogo/SCLAlertView/master/ScreenShots/ScreenShot4.png) +![BackgroundImage](https://raw.githubusercontent.com/dogo/SCLAlertView/master/ScreenShots/ScreenShot5.png) ###Easy to use ```Objective-C @@ -98,6 +99,14 @@ UITextField *textField = [alert addTextField:@"Enter your name"]; [alert showEdit:self title:@"Edit View" subTitle:@"This alert view shows a text box" closeButtonTitle:@"Done" duration:0.0f]; ``` +###Indeterminate progress +```Objective-C +SCLAlertView *alert = [[SCLAlertView alloc] init]; + +[alert showWaiting:self title:@"Waiting..." subTitle:@"Blah de blah de blah, blah. Blah de blah de" closeButtonTitle:nil duration:5.0f]; +``` + + ###SCLAlertView properties ```Objective-C //Dismiss on tap outside (Default is NO) @@ -134,6 +143,7 @@ typedef NS_ENUM(NSInteger, SCLAlertViewStyle) Warning, Info, Edit, + Waiting, Custom }; ``` diff --git a/SCLAlertView/SCLAlertView.h b/SCLAlertView/SCLAlertView.h index adb084f..33c33e6 100755 --- a/SCLAlertView/SCLAlertView.h +++ b/SCLAlertView/SCLAlertView.h @@ -26,6 +26,7 @@ typedef NS_ENUM(NSInteger, SCLAlertViewStyle) Warning, Info, Edit, + Waiting, Custom }; @@ -77,6 +78,12 @@ typedef NS_ENUM(NSInteger, SCLAlertViewBackground) */ @property UITextView *viewText; +/** Activity Indicator + * + * Holds the activityIndicator. + */ +@property UIActivityIndicatorView *activityIndicatorView; + /** Dismiss on tap outside * * A boolean value that determines whether to dismiss when tapping outside the SCLAlertView. @@ -254,5 +261,15 @@ typedef NS_ENUM(NSInteger, SCLAlertViewBackground) */ - (void)showCustom:(UIViewController *)vc image:(UIImage *)image color:(UIColor *)color title:(NSString *)title subTitle:(NSString *)subTitle closeButtonTitle:(NSString *)closeButtonTitle duration:(NSTimeInterval)duration; +/** Show Waiting SCLAlertView with UIActityIndicator. + * + * @param vc The view controller the alert view will be displayed in. + * @param title The text displayed on the button. + * @param subTitle The subtitle text of the alert view. + * @param closeButtonTitle The text for the close button. + * @param duration The amount of time the alert will remain on screen until it is automatically dismissed. If automatic dismissal is not desired, set to 0. + */ +- (void)showWaiting:(UIViewController *)vc title:(NSString *)title subTitle:(NSString *)subTitle closeButtonTitle:(NSString *)closeButtonTitle duration:(NSTimeInterval)duration; + @end diff --git a/SCLAlertView/SCLAlertView.m b/SCLAlertView/SCLAlertView.m index bc6a131..5267375 100755 --- a/SCLAlertView/SCLAlertView.m +++ b/SCLAlertView/SCLAlertView.m @@ -51,6 +51,7 @@ @implementation SCLAlertView CGFloat kCircleBackgroundTopPosition; CGFloat kCircleHeightBackground; CGFloat kCircleIconHeight; +CGFloat kActivityIndicatorHeight; CGFloat kWindowWidth; CGFloat kWindowHeight; CGFloat kTextHeight; @@ -85,6 +86,7 @@ - (instancetype)init kCircleBackgroundTopPosition = -15.0f; kCircleHeightBackground = 62.0f; kCircleIconHeight = 20.0f; + kActivityIndicatorHeight = 40.0f; kWindowWidth = 240.0f; kWindowHeight = 178.0f; kSubTitleHeight = 90.0f; @@ -95,7 +97,7 @@ - (instancetype)init _hideAnimationType = FadeOut; _showAnimationType = SlideInFromTop; _backgroundType = Shadow; - + // Init _labelTitle = [[UILabel alloc] init]; _viewText = [[UITextView alloc] init]; @@ -106,6 +108,7 @@ - (instancetype)init _backgroundView = [[UIImageView alloc]initWithFrame:[self mainScreenFrame]]; _buttons = [[NSMutableArray alloc] init]; _inputs = [[NSMutableArray alloc] init]; + _activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; // Add Subviews [self.view addSubview:_contentView]; @@ -113,6 +116,7 @@ - (instancetype)init [self.view addSubview:_circleView]; [_circleView addSubview:_circleIconImageView]; + [_circleView addSubview:_activityIndicatorView]; [_contentView addSubview:_labelTitle]; [_contentView addSubview:_viewText]; @@ -217,6 +221,8 @@ -(void)viewWillLayoutSubviews _circleView.frame = CGRectMake(kWindowWidth / 2 - kCircleHeight / 2, kCircleTopPosition, kCircleHeight, kCircleHeight); _circleView.layer.cornerRadius = self.circleView.frame.size.height / 2; _circleIconImageView.frame = CGRectMake(kCircleHeight / 2 - kCircleIconHeight / 2, kCircleHeight / 2 - kCircleIconHeight / 2, kCircleIconHeight, kCircleIconHeight); + _activityIndicatorView.frame =CGRectMake(kCircleHeight / 2 - kActivityIndicatorHeight / 2, kCircleHeight / 2 - kActivityIndicatorHeight / 2, kActivityIndicatorHeight, kActivityIndicatorHeight); + _labelTitle.frame = CGRectMake(12.0f, kCircleHeight / 2 + 12.0f, kWindowWidth - 24.0f, 40.0f); _viewText.frame = CGRectMake(12.0f, 74.0f, kWindowWidth - 24.0f, kTextHeight); @@ -515,6 +521,10 @@ -(SCLAlertViewResponder *)showTitle:(UIViewController *)vc image:(UIImage *)imag iconImage = SCLAlertViewStyleKit.imageOfEdit; break; + case Waiting: + viewColor = UIColorFromRGB(0x6c125d); + break; + case Custom: viewColor = color; iconImage = image; @@ -596,7 +606,13 @@ -(SCLAlertViewResponder *)showTitle:(UIViewController *)vc image:(UIImage *)imag // Alert view colour and images self.circleView.backgroundColor = viewColor; - self.circleIconImageView.image = iconImage; + + if (style == Waiting) { + [self.activityIndicatorView startAnimating]; + } else { + self.circleIconImageView.image = iconImage; + } + for (UITextField *textField in _inputs) { @@ -681,6 +697,11 @@ - (void)showCustom:(UIViewController *)vc image:(UIImage *)image color:(UIColor [self showTitle:vc image:image color:color title:title subTitle:subTitle duration:duration completeText:closeButtonTitle style:Custom]; } +- (void)showWaiting:(UIViewController *)vc title:(NSString *)title subTitle:(NSString *)subTitle closeButtonTitle:(NSString *)closeButtonTitle duration:(NSTimeInterval)duration +{ + [self showTitle:vc image:nil color:nil title:title subTitle:subTitle duration:duration completeText:closeButtonTitle style:Waiting]; +} + #pragma mark - Visibility - (BOOL)isVisible @@ -790,6 +811,9 @@ - (void)hideView [self slideOutToRight]; break; } + + [_activityIndicatorView stopAnimating]; + if (self.dismissBlock) { self.dismissBlock(); diff --git a/SCLAlertViewExample/Base.lproj/Storyboard.storyboard b/SCLAlertViewExample/Base.lproj/Storyboard.storyboard index 7d58529..f105cfb 100644 --- a/SCLAlertViewExample/Base.lproj/Storyboard.storyboard +++ b/SCLAlertViewExample/Base.lproj/Storyboard.storyboard @@ -1,8 +1,8 @@ - + - + @@ -116,12 +116,26 @@ + + + @@ -145,7 +159,7 @@ - + diff --git a/SCLAlertViewExample/ViewController.h b/SCLAlertViewExample/ViewController.h index 764fb8a..53a20f1 100644 --- a/SCLAlertViewExample/ViewController.h +++ b/SCLAlertViewExample/ViewController.h @@ -18,6 +18,7 @@ - (IBAction)showEdit:(id)sender; - (IBAction)showCustom:(id)sender; - (IBAction)showValidation:(id)sender; +- (IBAction)showWaiting:(id)sender; @end diff --git a/SCLAlertViewExample/ViewController.m b/SCLAlertViewExample/ViewController.m index 89913d1..e0ae741 100644 --- a/SCLAlertViewExample/ViewController.m +++ b/SCLAlertViewExample/ViewController.m @@ -225,6 +225,14 @@ - (IBAction)showValidation:(id)sender [alert showEdit:self title:@"Validation" subTitle:@"Ensure the data is correct before dismissing!" closeButtonTitle:@"Cancel" duration:0]; } +- (IBAction)showWaiting:(id)sender { + SCLAlertView *alert = [[SCLAlertView alloc] init]; + + [alert showWaiting:self title:@"Waiting..." + subTitle:@"Blah de blah de blah, blah. Blah de blah de" + closeButtonTitle:nil duration:5.0f]; +} + - (void)firstButton { NSLog(@"First button tapped"); diff --git a/ScreenShots/ScreenShot5.png b/ScreenShots/ScreenShot5.png new file mode 100644 index 0000000000000000000000000000000000000000..7f44e314074a58774e9badfb7ce6d39ddbae546c GIT binary patch literal 39062 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 Date: Sat, 13 Dec 2014 11:13:48 +0100 Subject: [PATCH 5/6] Add new show/hide animations --- README.md | 8 ++- SCLAlertView/SCLAlertView.h | 8 ++- SCLAlertView/SCLAlertView.m | 82 ++++++++++++++++++++++++++++ SCLAlertViewExample/ViewController.m | 3 + 4 files changed, 97 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2cd4496..3518e8b 100644 --- a/README.md +++ b/README.md @@ -155,7 +155,9 @@ typedef NS_ENUM(NSInteger, SCLAlertViewHideAnimation) SlideOutToBottom, SlideOutToTop, SlideOutToLeft, - SlideOutToRight + SlideOutToRight, + SlideOutToCenter, + SlideOutFromCenter }; ``` ####Alert View show animation styles @@ -166,7 +168,9 @@ typedef NS_ENUM(NSInteger, SCLAlertViewShowAnimation) SlideInFromBottom, SlideInFromTop, SlideInFromLeft, - SlideInFromRight + SlideInFromRight, + SlideInFromCenter, + SlideInToCenter }; ``` diff --git a/SCLAlertView/SCLAlertView.h b/SCLAlertView/SCLAlertView.h index 33c33e6..ee6fac3 100755 --- a/SCLAlertView/SCLAlertView.h +++ b/SCLAlertView/SCLAlertView.h @@ -40,7 +40,9 @@ typedef NS_ENUM(NSInteger, SCLAlertViewHideAnimation) SlideOutToBottom, SlideOutToTop, SlideOutToLeft, - SlideOutToRight + SlideOutToRight, + SlideOutToCenter, + SlideOutFromCenter }; /** Alert show animation styles @@ -53,7 +55,9 @@ typedef NS_ENUM(NSInteger, SCLAlertViewShowAnimation) SlideInFromBottom, SlideInFromTop, SlideInFromLeft, - SlideInFromRight + SlideInFromRight, + SlideInFromCenter, + SlideInToCenter }; /** Alert background styles diff --git a/SCLAlertView/SCLAlertView.m b/SCLAlertView/SCLAlertView.m index 5267375..be157f1 100755 --- a/SCLAlertView/SCLAlertView.m +++ b/SCLAlertView/SCLAlertView.m @@ -782,6 +782,14 @@ - (void)showView case SlideInFromRight: [self slideInFromRight]; break; + + case SlideInFromCenter: + [self slideInFromCenter]; + break; + + case SlideInToCenter: + [self slideInToCenter]; + break; } } @@ -810,6 +818,14 @@ - (void)hideView case SlideOutToRight: [self slideOutToRight]; break; + + case SlideOutToCenter: + [self slideOutToCenter]; + break; + + case SlideOutFromCenter: + [self slideOutFromCenter]; + break; } [_activityIndicatorView stopAnimating]; @@ -878,6 +894,30 @@ - (void)slideOutToRight }]; } +- (void)slideOutToCenter +{ + [UIView animateWithDuration:0.3f animations:^{ + self.view.transform = + CGAffineTransformConcat(CGAffineTransformIdentity, + CGAffineTransformMakeScale(0.1f, 0.1f)); + self.view.alpha = 0.0f; + } completion:^(BOOL completed) { + [self fadeOut]; + }]; +} + +- (void)slideOutFromCenter +{ + [UIView animateWithDuration:0.3f animations:^{ + self.view.transform = + CGAffineTransformConcat(CGAffineTransformIdentity, + CGAffineTransformMakeScale(3.0f, 3.0f)); + self.view.alpha = 0.0f; + } completion:^(BOOL completed) { + [self fadeOut]; + }]; +} + #pragma mark - Show Animations - (void)fadeIn @@ -987,4 +1027,46 @@ - (void)slideInFromRight }]; } +- (void)slideInFromCenter +{ + //From + self.view.transform = CGAffineTransformConcat(CGAffineTransformIdentity, + CGAffineTransformMakeScale(3.0f, 3.0f)); + self.view.alpha = 0.0f; + + [UIView animateWithDuration:0.3f animations:^{ + self.backgroundView.alpha = _backgroundOpacity; + + //To + self.view.transform = CGAffineTransformConcat(CGAffineTransformIdentity, + CGAffineTransformMakeScale(1.0f, 1.0f)); + self.view.alpha = 1.0f; + } completion:^(BOOL completed) { + [UIView animateWithDuration:0.2f animations:^{ + self.view.center = _backgroundView.center; + }]; + }]; +} + +- (void)slideInToCenter +{ + //From + self.view.transform = CGAffineTransformConcat(CGAffineTransformIdentity, + CGAffineTransformMakeScale(0.1f, 0.1f)); + self.view.alpha = 0.0f; + + [UIView animateWithDuration:0.3f animations:^{ + self.backgroundView.alpha = _backgroundOpacity; + + //To + self.view.transform = CGAffineTransformConcat(CGAffineTransformIdentity, + CGAffineTransformMakeScale(1.0f, 1.0f)); + self.view.alpha = 1.0f; + } completion:^(BOOL completed) { + [UIView animateWithDuration:0.2f animations:^{ + self.view.center = _backgroundView.center; + }]; + }]; +} + @end diff --git a/SCLAlertViewExample/ViewController.m b/SCLAlertViewExample/ViewController.m index e0ae741..297c5b4 100644 --- a/SCLAlertViewExample/ViewController.m +++ b/SCLAlertViewExample/ViewController.m @@ -228,6 +228,9 @@ - (IBAction)showValidation:(id)sender - (IBAction)showWaiting:(id)sender { SCLAlertView *alert = [[SCLAlertView alloc] init]; + [alert setShowAnimationType:SlideInToCenter]; + [alert setHideAnimationType:SlideOutFromCenter]; + [alert showWaiting:self title:@"Waiting..." subTitle:@"Blah de blah de blah, blah. Blah de blah de" closeButtonTitle:nil duration:5.0f]; From 381039ea322a4934a07526c1ae93e4b49e25acb4 Mon Sep 17 00:00:00 2001 From: michalciolek Date: Sat, 13 Dec 2014 11:33:58 +0100 Subject: [PATCH 6/6] modified podspec file to new version --- SCLAlertView-Objective-C.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SCLAlertView-Objective-C.podspec b/SCLAlertView-Objective-C.podspec index 452c7cd..285c648 100644 --- a/SCLAlertView-Objective-C.podspec +++ b/SCLAlertView-Objective-C.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "SCLAlertView-Objective-C" - spec.version = "0.3.6" + spec.version = "0.3.7" spec.summary = "Beautiful animated Alert View. Written in Swift but ported to Objective-C" spec.homepage = "https://github.com/dogo/SCLAlertView" spec.screenshots = "https://raw.githubusercontent.com/dogo/SCLAlertView/master/ScreenShots/ScreenShot.png", "https://raw.githubusercontent.com/dogo/SCLAlertView/master/ScreenShots/ScreenShot2.png"