HXPhotoEditResizeControl.m 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. //
  2. // HXPhotoEditResizeControl.m
  3. // photoEditDemo
  4. //
  5. // Created by Silence on 2020/6/29.
  6. // Copyright © 2020 Silence. All rights reserved.
  7. //
  8. #import "HXPhotoEditResizeControl.h"
  9. @interface HXPhotoEditResizeControl ()
  10. @property (nonatomic, readwrite) CGPoint translation;
  11. @property (nonatomic) CGPoint startPoint;
  12. @property (nonatomic, strong) UIPanGestureRecognizer *gestureRecognizer;
  13. @end
  14. @implementation HXPhotoEditResizeControl
  15. - (instancetype)initWithFrame:(CGRect)frame {
  16. self = [super initWithFrame:frame];
  17. if (self) {
  18. self.backgroundColor = [UIColor clearColor];
  19. UIPanGestureRecognizer *gestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
  20. [self addGestureRecognizer:gestureRecognizer];
  21. _gestureRecognizer = gestureRecognizer;
  22. }
  23. return self;
  24. }
  25. - (BOOL)isEnabled {
  26. return self.gestureRecognizer.isEnabled;
  27. }
  28. - (void)setEnabled:(BOOL)enabled {
  29. self.gestureRecognizer.enabled = enabled;
  30. }
  31. - (void)handlePan:(UIPanGestureRecognizer *)gestureRecognizer {
  32. if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
  33. CGPoint translationInView = [gestureRecognizer translationInView:self.superview];
  34. self.startPoint = CGPointMake(roundf(translationInView.x), translationInView.y);
  35. if ([self.delegate respondsToSelector:@selector(resizeConrolDidBeginResizing:)]) {
  36. [self.delegate resizeConrolDidBeginResizing:self];
  37. }
  38. } else if (gestureRecognizer.state == UIGestureRecognizerStateChanged) {
  39. CGPoint translation = [gestureRecognizer translationInView:self.superview];
  40. self.translation = CGPointMake(roundf(self.startPoint.x + translation.x),
  41. roundf(self.startPoint.y + translation.y));
  42. if ([self.delegate respondsToSelector:@selector(resizeConrolDidResizing:)]) {
  43. [self.delegate resizeConrolDidResizing:self];
  44. }
  45. } else if (gestureRecognizer.state == UIGestureRecognizerStateEnded || gestureRecognizer.state == UIGestureRecognizerStateCancelled) {
  46. if ([self.delegate respondsToSelector:@selector(resizeConrolDidEndResizing:)]) {
  47. [self.delegate resizeConrolDidEndResizing:self];
  48. }
  49. }
  50. }
  51. @end