對控件添加拖拽手勢
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[imageView addGestureRecognizer:pan]; //給圖片控件添加手勢
實現拖拽方法:
- (void)handlePan:(UIPanGestureRecognizer *)sender {
CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;
CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
//返回在橫座標上、縱座標上拖動了多少像素
CGPoint point = [sender translationInView:self.view];
NSLog(@"%f,%f",point.x,point.y);
CGFloat centerX = sender.view.center.x+point.x;
CGFloat centerY = sender.view.center.y+point.y;
CGSize viewSize = sender.view.frame.size;
// top
if (centerY - viewSize.height/2 < 0) {
centerY = viewSize.height/2;
}
// bottom
if (centerY + viewSize.height/2 > screenHeight) {
centerY = screenHeight - viewSize.height/2;
}
// left
if (centerX - viewSize.width/2 < 0){
centerX = viewSize.width/2;
}
// right
if (centerX + viewSize.width/2 > screenWidth){
centerX = screenWidth - viewSize.width/2;
}
sender.view.center = CGPointMake(centerX, centerY);
//拖動完之後,每次都要用setTranslation:方法置0這樣才不至於不受控制般滑動出視圖
[sender setTranslation:CGPointMake(0, 0) inView:self.view];
}
實現控件在屏幕內部拖拽且不脫離屏幕邊界。