1

myView に多くのサブビューがあり (すべてのビューは UIView のインスタンスです)、各サブビューの変換を設定した場合、setScale、回転などである可能性があります。設定した各サブビューの xscale と yscale を知るにはどうすればよいですか?

例えば:

  subview1.transform = CGAffineTransformMakeScale(xscale1, yscale1);
  subview1.transform = CGAffineTransformRotate(subview1.transform, angle1);
  subview2.transform = CGAffineTransformMakeScale(xscale2, yscale2);
  subview2.transform = CGAffineTransformRotate(subview2.transform, angle2);
   .
   .
  subviewx.transform = CGAffineTransformMakeScale(xscalex, yscalex);
  subviewx.transform = CGAffineTransformRotate(subviewx.transform, angle3);

ユーザーが subview.transform で何かを設定した例から、ユーザーが設定した後に xscale と yscale を知る必要があります。解くべき方程式だと思います、助けてください。^_^

ありがとうございます

4

4 に答える 4

2

ドキュメントCGAffineTransformから関数を書き留めますCGAffineTransform CGAffineTransformMakeScale ( CGFloat sx, CGFloat sy );。このようにビューのスケールを取得できます

view.transform = CGAffineTransformConcat(CGAffineTransformMakeScale(2.0, 0.5), CGAffineTransformMakeRotation(M_PI_4));
CGFloat xScale = view.transform.a / cosf(M_PI_4);
CGFloat yScale = view.transform.d  / cosf(M_PI_4);
于 2012-06-05T05:52:28.407 に答える
1

次のコードで、サブビューの x および y スケールを取得できます。

for (UIView *subview in self.yourView.subviews)
{

        CGRect framelb1=subview.frame;
        NSNumber *num;
        NSNumber *ynum;
        num =[NSNumber numberWithInt:framelb1.origin.x];//x-value of subview
        ynum =[NSNumber numberWithInt:framelb1.origin.y];//y-value of subview
}
于 2012-06-05T05:10:39.530 に答える
0

1 つの方法は、変換を適用してからCGRect、元の と比較することCGRectです。

CGRect transformedBounds = CGRectApplyAffineTransform(self.bounds, self.transform);
CGFloat currScale = transformedBounds.size.width/ self.bounds.size.width;
于 2013-03-04T18:37:51.790 に答える
0

ビューのすべてのサブビューを取得できます-

NSArray *subViews = myView.subviews;

子ビューの作成時に、タグ プロパティをそれらに設定できます。ここでは、o タグに基づいて、個々のビューを取得し、必要なタスクを実行できます。

于 2012-06-05T05:05:24.273 に答える