我有一个可通过平移手势移动的UI
ImageView.
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; [self.photoMask addGestureRecognizer:pan];
我想限制可以在屏幕上移动的区域.而不是用户能够将视图直接拖动到屏幕的一侧,我想限制它的某种边距.我怎样才能做到这一点?
另外,旋转后如何处理?
编辑—
#pragma mark - Gesture Recognizer -(void)handlePan:(UIPanGestureRecognizer *)gesture { NSLog(@"Pan Gesture"); gesture.view.center = [gesture locationInView:self.view]; }
解决方法
一种可能的解决方案是在handlePan方法中,检查屏幕上点的位置,并且只有在您希望将其限制为的范围内时才提交更改.
对于前者
-(void) handlePan:(UIGestureRecognizer*)panGes{ CGPoint point = [panGes locationInView:self.view]; //Only allow movement up to within 100 pixels of the right bound of the screen if (point.x < [UIScreen mainScreen].bounds.size.width - 100) { CGRect newframe = CGRectMake(point.x,point.y,theImageView.frame.size.width,theImageView.frame.size.height); theImageView.frame = newframe; } }
我相信这也可以正确处理任何屏幕旋转
编辑
要通过框架的中心移动图像视图,handlePan方法可能看起来像这样.
-(void)handlePan:(UIPanGestureRecognizer *)gesture { CGPoint point = [gesture locationInView:self.view]; //Only allow movement up to within 50 pixels of the bounds of the screen //Ex. (IPhone 5) CGRect boundsRect = CGRectMake(50,50,220,448); if (CGRectContainsPoint(boundsRect,point)) { imgView.center = point; } }
检查点是否在您想要的范围内,如果是,请将图像视图框的中心设置为该点.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。