Ios 拖放uimageview限制拖放区域
我想在我的应用程序中实现拖放功能。这是我的要求, 我的视图控制器中有5个小图像和一个大图像。我需要将小图像放在大图像上。大图像具有特定的大小 当拖动小图像时,它不会放在大图像上,它会回到原来的位置 当小图像放在大图像上时,它不能回到原来的位置,但可以拖到大图像空间中 有人能帮我吗?我能找到很多教程,但没有一本是满意的 我希望图像只放在大图像空间中,而不是放在imageview之外 请任何人帮帮我Ios 拖放uimageview限制拖放区域,ios,uiview,drag-and-drop,uiimageview,uitapgesturerecognizer,Ios,Uiview,Drag And Drop,Uiimageview,Uitapgesturerecognizer,我想在我的应用程序中实现拖放功能。这是我的要求, 我的视图控制器中有5个小图像和一个大图像。我需要将小图像放在大图像上。大图像具有特定的大小 当拖动小图像时,它不会放在大图像上,它会回到原来的位置 当小图像放在大图像上时,它不能回到原来的位置,但可以拖到大图像空间中 有人能帮我吗?我能找到很多教程,但没有一本是满意的 我希望图像只放在大图像空间中,而不是放在imageview之外 请任何人帮帮我 谢谢大家! 正如其他人所说,你的问题太宽泛了 不过,我建议将UIView子类化,并使用UIPange
谢谢大家! 正如其他人所说,你的问题太宽泛了 不过,我建议将UIView子类化,并使用UIPangestureRecognitor检测抓取,然后移动视图 释放视图时,调用函数检查对象相对于其他视图的位置,并相应地用动画交换视图。如果视图位于其原点的某个范围内,它将使用动画进行简单的捕捉 您的UIView子类可能如下所示:
@interface DraggableView () <UIGestureRecognizerDelegate>
@property (nonatomic) float originX;
@end
@implementation DraggableView
-(id)initWithFrame:(CGRect)frame {
self = [self initWithFrame:frame];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(Touched:)];
[pan setMinimumNumberOfTouches:1];[pan setMaximumNumberOfTouches:1];
[pan setDelegate:self];
[self addGestureRecognizer:pan];
return self;
}
- (void) Touched:(id)sender {
CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.superview];
if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {
self.originX = [[sender view] center].x;
}
else {
translatedPoint = CGPointMake(self.originX+translatedPoint.x, self.center.y);
[[sender view] setCenter:translatedPoint];
}
if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded)
{
// Check if view should swap or bounce back
}
}
@接口DragTableView()
@属性(非原子)浮动原点;
@结束
@实现DragableView
-(id)initWithFrame:(CGRect)帧{
self=[self initWithFrame:frame];
UIPanGestureRecognizer*pan=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(toucted:)];
[pan-SetMinimumNumberOfTouchs:1];[pan-SetMaximumNumberOfTouchs:1];
[代表:自我];
[自添加动作识别器:pan];
回归自我;
}
-(无效)触摸:(id)发送者{
CGPoint translatedPoint=[(UIPangestureRecognitor*)发送方翻译视图:self.superview];
if([(UIPangestureRecognitizer*)发送方状态]==UIgestureRecognitizerStateStart){
self.originX=[[sender view]center].x;
}
否则{
translatedPoint=CGPointMake(self.originX+translatedPoint.x,self.center.y);
[[sender view]设置中心:translatedPoint];
}
if([(UIPangestureRecognitizer*)发送方状态]==UIgestureRecognitizerStateEnded)
{
//检查视图是否应交换或反弹
}
}
您需要更具体一些。你有什么?有什么特殊的位不起作用?@Wain你能理解我的要求吗?是的,但是这个要求太宽泛了,所以你需要更具体一些…@Wain你想让我编辑这个问题吗?