2017-09-27 96 views
0

试图通过在app中传递特定值来移动子视图中的图像。如何计算视图的像素点“CGPoints”。什么是最佳方式。如何在视图中移动图像

setFrame:CGRectMake(_imgstride.frame.origin.x+_imgstride.frame.size.width, 
_imgstride.frame.origin.y, _imgstride.frame.size.width, 
_imgstride.frame.size.height)]; 

我试着用上面的代码,imageView正在移动,但没有按照我想要的方式工作。

+0

ImageView的移动但不工作 - 手段其中之一不工作 –

回答

0

试试这个。

对于斯威夫特:

其工作鉴于me.imageview举动。

class ViewController: UIViewController { 

    @IBOutlet weak var imageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let myPanGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(myPanAction)) 
     myPanGestureRecognizer.minimumNumberOfTouches = 1 
     myPanGestureRecognizer.maximumNumberOfTouches = 1 
     self.imageView.addGestureRecognizer(myPanGestureRecognizer) 
    } 

    func myPanAction(recognizer: UIPanGestureRecognizer) { 
     let translation = recognizer.translation(in: self.view) 
     var recognizerFrame = recognizer.view?.frame 
     recognizerFrame?.origin.x += translation.x 
     recognizerFrame?.origin.y += translation.y 

     if (self.view.bounds.contains(recognizerFrame!)) { 
      recognizer.view?.frame = recognizerFrame! 
     }else{ 
      if (recognizerFrame?.origin.y)! < self.view.bounds.origin.y { 
       recognizerFrame?.origin.y = 0 
      }else if ((recognizerFrame?.origin.y)! + (recognizerFrame?.size.height)! > self.view.bounds.size.height) { 
       recognizerFrame?.origin.y = self.view.bounds.size.height - (recognizerFrame?.size.height)! 
      } 

      if (recognizerFrame?.origin.x)! < self.view.bounds.origin.x { 
       recognizerFrame?.origin.x = 0 
      }else if ((recognizerFrame?.origin.x)! + (recognizerFrame?.size.width)! > self.view.bounds.size.width) { 
       recognizerFrame?.origin.x = self.view.bounds.size.width - (recognizerFrame?.size.width)! 
      } 
     } 
     recognizer.setTranslation(CGPoint(x: 0, y: 0), in: self.view) 

    } 
} 

对于目标C:

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; 
    [self.imageview addGestureRecognizer:pan]; 
} 
#pragma mark - Gesture Recognizer 
-(void)handlePan:(UIPanGestureRecognizer *)gesture { 

    CGPoint translation = [gesture translationInView:self.view]; 
    CGRect recognizerFrame = gesture.view.frame; 
    recognizerFrame.origin.x += translation.x; 
    recognizerFrame.origin.y += translation.y; 

    if (CGRectContainsRect(self.view.bounds, recognizerFrame)) { 

     gesture.view.frame = recognizerFrame; 
    }else { 

     if (recognizerFrame.origin.y < self.view.bounds.origin.y) { 
      recognizerFrame.origin.y = 0; 
     }else if (recognizerFrame.origin.y + recognizerFrame.size.height > self.view.bounds.size.height) { 
      recognizerFrame.origin.y = self.view.bounds.size.height - recognizerFrame.size.height; 
     } 

     if (recognizerFrame.origin.x < self.view.bounds.origin.x) { 
      recognizerFrame.origin.x = 0; 
     }else if (recognizerFrame.origin.x + recognizerFrame.size.width > self.view.bounds.size.width) { 
      recognizerFrame.origin.x = self.view.bounds.size.width - recognizerFrame.size.width; 
     } 
    } 
    [gesture setTranslation:CGPointMake(0, 0) inView:self.view]; 

} 

@end