我需要制作一个已启用拖放的子类UIImageView的精确副本,所以我可以拖动它但留下一个副本来替换它或者只是制作一个副本,我可以拖到另一个地方而不是第一个地方。
一些截图解释:
在拖动之前
拖动:
正如你所看到的,我想把杯形蛋糕放在适当的位置,这样我就可以继续拖动它了。
解决方案:
代码:
#import <UIKit/UIKit.h>
#import "DragAndDrop.h"
@interface DraggableImageView : UIImageView
@property (weak, nonatomic) id <DragAndDrop> delegate;
@property CGPoint startLocation;
@property (strong, nonatomic) DraggableImageView *copied;
@end
#import "DraggableImageView.h"
@implementation DraggableImageView
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
self.copied = [[DraggableImageView alloc] initWithImage:[self image]];
[self.copied setDelegate:[self delegate]];
[self.copied setFrame:[self frame]];
[[self superview] addSubview:self.copied];
CGPoint pt = [[touches anyObject] locationInView:self.copied];
self.copied.startLocation = pt;
[[self.copied superview] bringSubviewToFront:self.copied];
}
答案 0 :(得分:0)
当用户点击蛋糕时,只需创建一个新的UIImageView,然后从已经在屏幕上的那个上复制它。
答案 1 :(得分:0)
您需要在该课程中实施NSCopying,以下是指向其他帖子的链接:another stack overflow post
在该帖子中,您将使用的copywithzone方法基本上是如何制作课程副本的说明。
在代码区域中检测用户触摸/拖动该图像的时间,使用上述方法复制它,设置其正确的x和y位置,然后将其作为子视图添加到视图中抱着原始物体。
//Somtheing like this
myCustomObject *object2 =[object copy];
object2.frame = cgrectmake.....
[view addSubview:object2];