2012-05-14 4 views
0

私は文字と呼ばれるUIViewを持っています。そのビューの中で、ユーザはいくつかのサブビューとしてUIImageViewを追加できます。 ピンチ、移動、回転のジェスチャーメソッドを作成しました。ジェスチャー方法が文字表示に追加されました。同時に複数のビューをスケーリングする

私はジェスチャーtranslationInViewプロパティを使用していますが、動くとうまくいきます! 私の問題はscallingです。

スケーリング個UIImageViewsは問題ありませんが、どのようにスケールするのですか?

キャラクタビューを拡大しようとしましたが、すべてのサブビューに比例してスケーリングがうまく機能しますが、キャラクタビューを変更したくないのです。キャンバスとして使用してUIImageViewを配置します。文字をCGAffineTransformScaleで変更すると、追加するすべての新しいImageViewが同じスケールになります。

私はこれを試してみましたが、それは動作しません:

if ([gesture state] == UIGestureRecognizerStateBegan || [gesture state] == UIGestureRecognizerStateChanged) { 
     CGFloat customScale = gesture.scale; 
     for (UIImageView *singleView in [self.devoCharacter subviews]) { 
      singleView.frame = CGRectMake(singleView.frame.origin.x/customScale, singleView.frame.origin.y /customScale, singleView.frame.size.width /customScale , singleView.frame.size.height /customScale); 
      [gesture setScale:1]; 
     } 
} 

私は、各ビューのサイズと、このようにそれらの相対的な距離を削減したかったが、全体の事は座標原点から展開します。

は、その後、私はこの試みた:

if ([gesture state] == UIGestureRecognizerStateBegan || [gesture state] == UIGestureRecognizerStateChanged) { 
     CGFloat customScale = gesture.scale; 
     for (UIImageView *singleView in [self.devoCharacter subviews]) { 
      singleView.transform = CGAffineTransformScale(singleView.transform, customScale, customScale); 
      [gesture setScale:1]; 
     } 
} 

をしかし、これは独立して各ビューをスケーリングし、それらの相対的な距離を維持しません。 各ビューを比例してスケールするだけですか?それらの相対距離も維持していますか?

答えて

0

私はそれを行う方法があります。すべての単一のビューをスケールし、それらの中心に比例してスケーリングします。これは私の問題を解決しました:

 for (Part *singleView in [self.canvas subviews]) { 
      singleView.transform = CGAffineTransformScale(singleView.transform, customScale, customScale); 
      singleView.center = CGPointMake(singleView.center.x * customScale, singleView.center.y * customScale); 
      [gesture setScale:1]; 
     } 
関連する問題