From 66f95efe5d43255f8d0373ff2bca1bbc2a80cbe8 Mon Sep 17 00:00:00 2001 From: OSSpinLock Date: Fri, 7 Nov 2014 16:14:08 +0900 Subject: [PATCH] added method 'hideAndRestore' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit added a option for restore popup view’s original hierarchy. --- AFPopupView.h | 2 +- AFPopupView.m | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/AFPopupView.h b/AFPopupView.h index 0c67295..e1ce6b7 100644 --- a/AFPopupView.h +++ b/AFPopupView.h @@ -16,5 +16,5 @@ -(void)show; -(void)hide; - +-(void)hideAndRestore; @end diff --git a/AFPopupView.m b/AFPopupView.m index 4e5cec2..a672132 100644 --- a/AFPopupView.m +++ b/AFPopupView.m @@ -35,7 +35,12 @@ @interface AFPopupView () @end -@implementation AFPopupView +@implementation AFPopupView{ + BOOL _restoreable; + UIView * _popupView; + UIView * _originalSuperView; + NSUInteger _originalIndex; +} +(AFPopupView *)popupWithView:(UIView *)popupView { @@ -49,6 +54,10 @@ +(AFPopupView *)popupWithView:(UIView *)popupView { AFPopupView *view = [[AFPopupView alloc] initWithFrame:rect]; + view->_popupView = popupView; + view->_originalSuperView = [popupView superview]; + view->_originalIndex = [[[popupView superview] subviews] indexOfObject:popupView]; + view.modalView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height - (50 * 2))]; view.modalView.backgroundColor = [UIColor clearColor]; view.modalView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight | @@ -170,6 +179,19 @@ -(void)hideByTap { } } +-(void)hideAndRestore { + _restoreable = YES; + [self hide]; +} + +- (void)removeFromSuperview; { + if(_restoreable && _originalSuperView && _popupView){ + [_originalSuperView insertSubview:_popupView atIndex:_originalIndex]; + _restoreable = NO; + } + [super removeFromSuperview]; +} + -(UIImage *)imageWithView:(UIView *)view { UIGraphicsBeginImageContextWithOptions(_renderImage.frame.size, view.opaque, [[UIScreen mainScreen] scale]);