1

draggableImageView私はUIView のサブビューであるtiltedViewUIImageViewを呼び出しましCATransform3DRotatetransform.m34 = -1 / 400.0。そうすれば、ドラッグdraggableImageViewすると、遠近感と絶対サイズが変化し、 内の 2 空間で移動しているように見えますtiltedView

内部のフレームを計算したいのですdraggableImageViewが、別の座標系を使用しています (この場合、傾けられておらず、画面全体を包含するtiltedViewUIView が呼び出されます)。viewForCoordinatesただし、[self convertRect:self.frame toView:self.viewForCoordinates]from withinを使用すると、 myがdraggableImageViewどこにあるかに関係なく、同じサイズのフレームが出力されます。tiltedViewdraggableImageView

スーパービューに依存している間はスーパービューにとらわれないため、使用するself.frame方が適切であると思います。ただし、上記に基づいて、のスーパービューに適用されたパースペクティブ操作にとらわれずに変換しているだけだと思います。self.boundsboundsframeconvertRectself.frameself.frame

この場合、どのコードが役立つかわかりません。この質問の回答を得るために提供できるコードを教えてください。

4

1 に答える 1

0

私はこれを解決しました!

したがって、主な問題は次の 2 つだったと思います。

1)DraggableImageViewオブジェクトがタッチされたとき、オブジェクトが実際に内部でタッチされていることを確認してくださいif ([touch view] == self)- (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に戻します。<<<私はこの変換を行うのを忘れたと思います :SDraggableImageViewsuperview

于 2012-08-30T00:38:56.797 に答える