我需要制作一个启用了拖放功能的子类 UIImageView 的精确副本,因此我可以拖动它但留下一个副本来替换它,或者只是制作一个我可以拖动到另一个地方而不是第一个地方的副本。
一些截图来解释:
拖动前
拖动:
正如你所看到的,我想把纸杯蛋糕留在原处,这样我就可以继续从中拖动多个副本。
没关系...我想通了!如何?我在de subclassed UIImageView中创建了另一个实例,复制了每个属性(UIImage,delegate,frame)将它添加到同一个superview并使用协议将它传递给我需要它的UIView......
解决方案:
编码:
#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];
}