diff --git a/Source/UIViewController+KNSemiModal.h b/Source/UIViewController+KNSemiModal.h index 4ac8c24..5d0e2d9 100755 --- a/Source/UIViewController+KNSemiModal.h +++ b/Source/UIViewController+KNSemiModal.h @@ -32,6 +32,8 @@ #define kSemiModalDidShowNotification @"kSemiModalDidShowNotification" #define kSemiModalDidHideNotification @"kSemiModalDidHideNotification" #define kSemiModalWasResizedNotification @"kSemiModalWasResizedNotification" +#define kSemiModalWasMovedNotification @"kSemiModalWasMovedNotification" + extern const struct KNSemiModalOptionKeys { __unsafe_unretained NSString *traverseParentHierarchy; // boxed BOOL. default is YES. @@ -78,6 +80,7 @@ typedef void (^KNTransitionCompletionBlock)(void); // Dismiss & resize -(void)resizeSemiView:(CGSize)newSize; +-(void)moveSemiViewToTopWithMargin:(CGFloat)topMargin; -(void)dismissSemiModalView; -(void)dismissSemiModalViewWithCompletion:(KNTransitionCompletionBlock)completion; diff --git a/Source/UIViewController+KNSemiModal.m b/Source/UIViewController+KNSemiModal.m index 3d09d9f..fa20a65 100755 --- a/Source/UIViewController+KNSemiModal.m +++ b/Source/UIViewController+KNSemiModal.m @@ -363,6 +363,24 @@ - (void)resizeSemiView:(CGSize)newSize { }]; } +-(void)moveSemiViewToTopWithMargin:(CGFloat)topMargin { + UIView * target = [self parentTarget]; + UIView * modal = [target.subviews objectAtIndex:target.subviews.count-1]; + CGRect newFrame = modal.frame; + newFrame.origin.y = topMargin; + NSTimeInterval duration = [[self ym_optionOrDefaultForKey:KNSemiModalOptionKeys.animationDuration] doubleValue]; + [UIView animateWithDuration:duration animations:^{ + modal.frame = newFrame; + } completion:^(BOOL finished) { + if(finished){ + [[NSNotificationCenter defaultCenter] postNotificationName:kSemiModalWasMovedNotification + object:self]; + } + }]; + +} + + @end