123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #import "RNNViewLocation.h"
-
- @implementation RNNViewLocation
-
- - (instancetype)initWithFromElement:(RNNElementView *)fromElement toElement:(RNNElementView *)toElement startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint andVC:(UIViewController *)vc {
- self = [super init];
-
- self.fromFrame = [self frameFromSuperViewController:[fromElement subviews][0] andVC:vc];
- CGSize fromSize = self.fromFrame.size;
- CGPoint fromCenter = [self centerFromSuperViewController:[fromElement subviews][0] andVC:vc];
- fromCenter.x = fromCenter.x + startPoint.x;
- fromCenter.y = fromCenter.y + startPoint.y;
- self.fromCenter = fromCenter;
- CGRect toFrame = [self frameFromSuperViewController:[fromElement subviews][0] andVC:vc];
- CGSize toSize = self.fromFrame.size;
- CGPoint toCenter = [self centerFromSuperViewController:[fromElement subviews][0] andVC:vc];
- if (toElement) {
- toFrame = [self frameFromSuperViewController:[toElement subviews][0] andVC:vc];
- toSize = toFrame.size;
- toCenter = [self centerFromSuperViewController:[toElement subviews][0] andVC:vc];
- }
- toCenter.x = toCenter.x + endPoint.x;
- toCenter.y = toCenter.y + endPoint.y;
-
- CGAffineTransform transform = CGAffineTransformMakeScale(toSize.width/fromSize.width ,toSize.height/fromSize.height);
- CGAffineTransform transformBack = CGAffineTransformMakeScale(fromSize.width/toSize.width ,fromSize.height/toSize.height);
-
- self.toFrame = toFrame;
- self.fromSize = fromSize;
- self.toSize = toSize;
- self.toCenter = toCenter;
- self.transform = transform;
- self.transformBack = transformBack;
-
- return self;
- }
-
- - (CGRect)frameFromSuperViewController:(UIView *)view andVC:(UIViewController *)vc{
- CGPoint sharedViewFrameOrigin = [view.superview convertPoint:view.frame.origin toView:vc.view];
- CGRect originRect = CGRectMake(sharedViewFrameOrigin.x, sharedViewFrameOrigin.y, view.frame.size.width, view.frame.size.height);
- return originRect;
- }
-
- - (CGPoint)centerFromSuperViewController:(UIView *)view andVC:(UIViewController *)vc{
- CGPoint sharedViewFrameOrigin = [view.superview convertPoint:view.frame.origin toView:vc.view];
- CGRect originRect = CGRectMake(sharedViewFrameOrigin.x, sharedViewFrameOrigin.y, view.frame.size.width, view.frame.size.height);
- CGFloat x = originRect.origin.x + view.frame.size.width/2;
- CGFloat y = originRect.origin.y + view.frame.size.height/2;
- CGPoint center = CGPointMake(x, y);
- return center;
- }
-
- @end
|