我有一个 UIView 子类,其中包含几个子视图,我想将其拖放到 UICollectionView 中包含的其他几个 UIView 之一中。当拖动开始时,我想在拖动期间将拖动的视图从其当前大小缩放到更小的尺寸(原件太大,无法方便地选择放置目标而无需先缩小它)到目前为止,我有这个:
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.superview bringSubviewToFront:self];
self.transform = CGAffineTransformMakeScale(0.3f, 0.3f);
startLocation = ([[touches anyObject] locationInView:self]);
startLocation = CGPointApplyAffineTransform(startLocation, self.transform);
}
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint pt = [[touches anyObject] locationInView:self];
float dx = pt.x - startLocation.x;
float dy = pt.y - startLocation.y;
CGPoint newCenter = CGPointApplyAffineTransform (CGPointMake(self.center.x + dx, self.center.y + dy), self.transform);
self.center = newCenter;
}
这是一个开始,因为它可以按我的意愿缩放拖动的 UIView,并允许我拖动它;但是,拖动的 UIView 不会直接用鼠标指针移动(我在模拟器上运行)。当图像靠近模拟器屏幕的左上角时,鼠标指针和拖动视图是在一起的;但是当我离开屏幕右上角时,视图不再直接用鼠标指针移动;鼠标指针似乎以大约 2:1 的比例移动到拖动的 UIView 的移动。
第二个问题是,当拖动结束时,如果项目没有被丢弃,我需要在将 UIView 重新附加到其超级视图之前将其返回到其原始比例,并且还没有完全弄清楚如何做到这一点。
感谢任何帮助,包括关于更好方法的建议,如果我在这里完全偏离轨道。(我知道在隔离投放目标和投放方面还有其他工作要做,但我想我知道那里需要做什么)。
感谢您的任何指导。
正则表达式