1

我有一个 UIImageView draggableImageView,它是一个 UIView 的子视图,它通过并带有 perspectivetiltedView向后倾斜。这样,当我四处拖动时,它的视角和绝对大小会发生变化,因此它看起来像是在.CATransform3DRotatetransform.m34 = -1 / 400.0draggableImageViewtiltedView

我想计算框架draggableImageViewtiltedView但使用不同的坐标系(在这种情况下,调用的 UIViewviewForCoordinates不倾斜并包含整个屏幕)。但是,无论my位于何处,都使用[self convertRect:self.frame toView:self.viewForCoordinates]from insidedraggableImageView输出相同大小的框架。tiltedViewdraggableImageView

我认为 usingself.frameself.bounds因为bounds它与 superview 无关而frame依赖于它更合适。但是,基于以上所述,我猜这convertRect只是将self.frame透视操作应用于self.frame's superview' 的转换不可知论者。

我不确定在这种情况下哪些代码会有所帮助,所以请让我知道我可以提供哪些代码来帮助回答这个问题。

4

1 回答 1

0

我解决了这个!

所以我认为有两个主要问题:

1)当DraggableImageView对象被触摸时,确保对象确实被通过if ([touch view] == self)inside- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

2) 通过 将触摸位置转换为superview坐标系self.touchLocation = [[touches anyObject] locationInView:self.superview]

3) 将DraggableImageView' 框架从superview坐标转换为viewForCoordinates坐标系。<<<我认为我的错误是我从而self不是superview.

4) 如果DraggableImageView基于 对 ' 框架或位置进行viewForCoordinates更改,则计算viewForCoordinates' 坐标系 m 内的变化,然后转换回DraggableImageView' superview。<<<我想我忘了做这个转换:S

于 2012-08-30T00:38:56.797 回答