Skip to content

Commit

Permalink
fixed bugs when changing orientation, and added optional dynamic blur
Browse files Browse the repository at this point in the history
  • Loading branch information
Carlos Compean committed Mar 12, 2015
1 parent d580e7c commit bf5977d
Show file tree
Hide file tree
Showing 10 changed files with 787 additions and 14 deletions.
12 changes: 10 additions & 2 deletions CCMPopup/CCMPopupAnimation.m
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@
#import "UIImage+screenshot.h"
#import "UIImage+ImageEffects.h"
#import "UIViewController+CCMPopupAnimation.h"
#import "FXBlurView.h"

static UIView *blurredBackground;
static FXBlurView *blurredBackground;
static UIView *touchView;

@interface CCMPopupAnimation ()
Expand Down Expand Up @@ -52,12 +53,19 @@ - (void)animatePresentationTransition:(id<UIViewControllerContextTransitioning>)
CGRect endBounds = [popupTransitioning destinationBounds];

toViewController.view.frame = endBounds;
toViewController.view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin;

if (popupTransitioning.backgroundBlurRadius != 0) {
// blurredBackground = [[UIImageView alloc] initWithImage:[[UIImage screenshot] applyBlurWithRadius:5.0 tintColor:[UIColor colorWithRed:20/255.0 green:36/255.0 blue:47/255.0 alpha:0.6] saturationDeltaFactor:1.0 maskImage:nil]];
blurredBackground = [[UIImageView alloc] initWithImage:[[UIImage screenshot] applyBlurWithRadius:popupTransitioning.backgroundBlurRadius tintColor:nil saturationDeltaFactor:1.0 maskImage:nil]];
//blurredBackground = [[UIImageView alloc] initWithImage:[[UIImage screenshot] applyBlurWithRadius:popupTransitioning.backgroundBlurRadius tintColor:nil saturationDeltaFactor:1.0 maskImage:nil]];
blurredBackground = [[FXBlurView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
blurredBackground.tintColor = [UIColor clearColor];
blurredBackground.blurRadius = popupTransitioning.backgroundBlurRadius;
blurredBackground.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
blurredBackground.dynamic = popupTransitioning.dynamic;
}
touchView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
touchView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
if (popupTransitioning.backgroundViewAlpha != 0) {
touchView.backgroundColor = popupTransitioning.backgroundViewColor;
touchView.alpha = popupTransitioning.backgroundViewAlpha;
Expand Down
1 change: 1 addition & 0 deletions CCMPopup/CCMPopupSegue.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
@property CGFloat backgroundBlurRadius;
@property UIColor *backgroundViewColor;
@property CGFloat backgroundViewAlpha;
@property BOOL dynamic;
@property BOOL dismissableByTouchingBackground;

@end
1 change: 1 addition & 0 deletions CCMPopup/CCMPopupSegue.m
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ -(void)perform{
delegate.backgroundBlurRadius = self.backgroundBlurRadius;
delegate.backgroundViewAlpha = self.backgroundViewAlpha;
delegate.backgroundViewColor = self.backgroundViewColor;
delegate.dynamic = self.dynamic;
delegate.dismissableByTouchingBackground = self.dismissableByTouchingBackground;
delegate.presentedController = destination;
delegate.presentingController = source;
Expand Down
1 change: 1 addition & 0 deletions CCMPopup/CCMPopupTransitioning.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
@property CGFloat backgroundBlurRadius;
@property UIColor *backgroundViewColor;
@property CGFloat backgroundViewAlpha;
@property BOOL dynamic;
@property BOOL dismissableByTouchingBackground;

+(instancetype)sharedInstance;
Expand Down
79 changes: 79 additions & 0 deletions CCMPopup/FXBlurView/FXBlurView.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
//
// FXBlurView.h
//
// Version 1.6.3
//
// Created by Nick Lockwood on 25/08/2013.
// Copyright (c) 2013 Charcoal Design
//
// Distributed under the permissive zlib License
// Get the latest version from here:
//
// https://github.com/nicklockwood/FXBlurView
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source distribution.
//


#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
#import <Accelerate/Accelerate.h>


#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wobjc-missing-property-synthesis"


#import <Availability.h>
#undef weak_ref
#if __has_feature(objc_arc) && __has_feature(objc_arc_weak)
#define weak_ref weak
#else
#define weak_ref unsafe_unretained
#endif


@interface UIImage (FXBlurView)

- (UIImage *)blurredImageWithRadius:(CGFloat)radius iterations:(NSUInteger)iterations tintColor:(UIColor *)tintColor;

@end


@interface FXBlurView : UIView

+ (void)setBlurEnabled:(BOOL)blurEnabled;
+ (void)setUpdatesEnabled;
+ (void)setUpdatesDisabled;

@property (nonatomic, getter = isBlurEnabled) BOOL blurEnabled;
@property (nonatomic, getter = isDynamic) BOOL dynamic;
@property (nonatomic, assign) NSUInteger iterations;
@property (nonatomic, assign) NSTimeInterval updateInterval;
@property (nonatomic, assign) CGFloat blurRadius;
@property (nonatomic, strong) UIColor *tintColor;
@property (nonatomic, weak_ref) IBOutlet UIView *underlyingView;

- (void)updateAsynchronously:(BOOL)async completion:(void (^)())completion;

@end


#pragma GCC diagnostic pop

Loading

0 comments on commit bf5977d

Please sign in to comment.