use*_*051 9 drag-and-drop objective-c ios
我希望在Objective-C中为IOS平台实现一些东西.
我想要两个GUI对象,我们只是说它们是简单的UIImage并且是方形.
然后我有一个"空"的GUI元素,它只是一个相同大小的灰色方块.
我希望用户能够将其中一个正方形图像拖到空白正方形上,只要图像的某些部分触及空白正方形,它就会捕捉到空白正方形并将其填满.如果他们将图像放在其他任何地方,它会动画回到原始位置.
同样,我希望有2个其他方形图像和另一个空方块,但具有相同的交互,但每组2个图像和1个空方块不能在彼此之间工作.即前两个图像只能掉入第一个空方块.
我假设有一些我想要捕获的丢弃事件,然后确定图像元数据是否与它被放入的空方块匹配.
如果您知道任何代码示例或应用程序,我当然可以通过代码来理解,或者如果您有一些对象,事件和属性指向我将是伟大的.
这不是一个游戏和应用程序一样多,所以我不想在任何游戏引擎中工作,但如果这是一个简单的方法,那么我就是为了这一切.
Pas*_*cal 13
你可以很容易地做到这一点.在图像中,附加一个UILongPressGestureRecognizer并在动作方法中,您可以根据手指移动更新图像的位置.获取手势的当前位置- (CGPoint)locationInView:(UIView *).每次移动时,您都可以检查图像框架是否与目标区域的框架重叠,如果是,则将其卡入到位.
检查重叠非常简单(给定的图像和目标都是同一视图层次结构的一部分):
CGRect imageRect = [image convertRect:image.frame toView:[image superview]];
CGRect targetRect = [target convertRect:target.frame toView:[image superview]];
if (CGRectIntersectsRect(imageRect, targetRect)) {
// overlap
}
Run Code Online (Sandbox Code Playgroud)
要在用户掉到外面时移回图像,可以将帧或中心动画制作回原始位置.因此,当拖动开始时,将调用您的操作方法.您检查您的实例变量(我们将其命名为originalCenter)是否不等于CGPointZero.如果是,则将当前中心记录到originalCenter中.
然后,当用户放下图像并且它超出目标时,您将其移回:
[UIView animateWithDuration:0.2
animations:^{
image.center = originalCenter;
self.originalCenter = CGPointZero;
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4502 次 |
| 最近记录: |