Iphone 将imageView拖动到另一个视图中
我一直在忙着开发一款游戏,我发现其中一个部分很难。我可能完全不知道该怎么做 我的黑板上有几张图片。它们是我拖动到其中的对象(瓷砖)的持有者。(我也不知道这是最好的还是正确的方法。) 例如,我制作了一个图像来显示我的意思: 在这张图片中,我有一张图片(a),我想把它拖到顶部的一个平铺上,我的代码必须自动检测图片视图(a)的最上方位置,并将其放置到该视图中 我真的被困在这里了,我想了解一些关于如何做这件事或其他类似事情的信息Iphone 将imageView拖动到另一个视图中,iphone,ios,objective-c,Iphone,Ios,Objective C,我一直在忙着开发一款游戏,我发现其中一个部分很难。我可能完全不知道该怎么做 我的黑板上有几张图片。它们是我拖动到其中的对象(瓷砖)的持有者。(我也不知道这是最好的还是正确的方法。) 例如,我制作了一个图像来显示我的意思: 在这张图片中,我有一张图片(a),我想把它拖到顶部的一个平铺上,我的代码必须自动检测图片视图(a)的最上方位置,并将其放置到该视图中 我真的被困在这里了,我想了解一些关于如何做这件事或其他类似事情的信息 A已经可以拖动。您可以使用bool-CGRectIntersectsRe
A已经可以拖动。您可以使用
bool-CGRectIntersectsRect(CGRect-rectA,CGRect-rect1)代码>(rect1或rect2或3或4)
检查“A”框架是否与四个顶部瓷砖中的任何一个相交
相交后,您可以检查每个磁贴的中心与“A”的中心之间的最小距离,以检查哪个磁贴包含A最多。(AllUIView
hascenter
property)
这是假设所有平铺和视图都是单独的视图
或者,再想想,你可以在检查前保持最小距离,检查两个中心之间的最小距离,并完全避免第一步
CGFloat xDist = (p2.x - p1.x);
CGFloat yDist = (p2.y - p1.y);
CGFloat distance = sqrt((xDist * xDist) + (yDist * yDist));
- 您可以使用上述代码计算两个CG点(中心)之间的距离。从…起
这就是简单的毕达哥拉斯定理李>
为您的手势制作属性:
@property (nonatomic, strong) UILongPressGestureRecognizer *longPress;
初始化它:
self.longPress = [UILongPressGestureRecognizer initWithTarget:self action:@selector(gestureRecognizedStateDidChanged:)];
self.longPress.minimumPressDuration = 0.03;
视图控制器类应实现
协议:
self.longPress.delegate = self;
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)sender {
return CGRectContainsPoint(self.targetImage.frame, [sender locationInView:self.view]);
}
- (void)gestureRecognizedStateDidChanged:(UILongPressGestureRecognizer *)sender {
switch (recognizer.state) {
case UIGestureRecognizerStatePossible:
case UIGestureRecognizerStateBegan: {
// did started, you can pick up your view
self.targerImageView.center = [sender locationInView:self.view];
break;
}
case UIGestureRecognizerStateFailed:
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateEnded: {
// drop callback, bring you view home or to target
if (CGRectContainsPoint(self.toDropImageViews.frame, [sender locationInView:self.view]) {
// do you drop code here
}
break;
}
case UIGestureRecognizerStateChanged: {
self.targerImageView.center = [sender locationInView:self.view];
// moving callback
break;
}
}
谢谢你。这对我来说也是最符合逻辑的,就像我今天在工作中思考的那样。我不想将imageview设置为一个对象的图像,所以我能将对象的中心和其中一个视图的中心匹配吗?谢谢,是的。你可以将A的中心指定为其中一个瓷砖的中心。谢谢你,我觉得很难理解,但我会保留此代码,同时我会让我的看起来很有希望,谢谢