如果我在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。我认为这是一些要解决的方程式,请帮助我。^_^
谢谢
从文档 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);
您可以按照以下代码获取子视图的 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
}
您可以通过以下方式获取视图的所有子视图 -
NSArray *subViews = myView.subviews;
现在,在创建子视图时,您可以为它们设置标签属性,在这里,您可以在 o tag 的基础上获取单个视图并执行所需的任务。
一种方法是在CGRect
上应用转换,然后与原始CGRect
进行比较:
CGRect transformedBounds = CGRectApplyAffineTransform(self.bounds, self.transform);
CGFloat currScale = transformedBounds.size.width/ self.bounds.size.width;