sjh*_*lor 1 iphone xcode objective-c uigesturerecognizer ios
我目前有一个imageView,我可以使用panGestureRecognizer和以下方法在屏幕上拖动:
- (void)panDetected:(UIPanGestureRecognizer *)panRecognizer {
CGPoint translation = [panRecognizer translationInView:self.view];
CGPoint imageViewPosition = self.imageView.center;
imageViewPosition.x += translation.x;
imageViewPosition.y += translation.y;
self.imageView.center = imageViewPosition;
[panRecognizer setTranslation:CGPointZero inView:self.view];
}
Run Code Online (Sandbox Code Playgroud)
目前可以将图像拖离屏幕,使其仅部分可见,我想知道是否有办法在屏幕边缘停止图像?我知道它应该是可能的,我只是在挣扎于逻辑.
你试过用过CGRectContainsRect吗?
您可以将此作为内部检查panDetected:,只有在返回时才允许翻译YES.
- (void)panDetected:(UIPanGestureRecognizer *)panRecognizer {
CGPoint translation = [panRecognizer translationInView:self.view];
CGPoint imageViewPosition = self.imageView.center;
imageViewPosition.x += translation.x;
imageViewPosition.y += translation.y;
CGFloat checkOriginX = self.imageView.frame.origin.x + translation.x; // imageView's origin's x position after translation, if translation is applied
CGFloat checkOriginY = self.imageView.frame.origin.y + translation.y; // imageView's origin's y position after translation, if translation is applied
CGRect rectToCheckBounds = CGRectMake(checkOriginX, checkOriginY, self.imageView.frame.size.width, self.imageView.frame.size.height); // frame of imageView if translation is applied
if (CGRectContainsRect(self.view.frame, rectToCheckBounds)){
self.imageView.center = imageViewPosition;
[panRecognizer setTranslation:CGPointZero inView:self.view];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1264 次 |
| 最近记录: |