计算UIView的比例

时间:2013-01-08 01:40:07

标签: iphone ios cocoa-touch cgaffinetransformscale

假设我UIView的当前比例为x。假设我将量表转换应用于UIView金额的y,即:

view.transform = CGAffineTransformScale(view.transform, y, y);

。如何确定比例转换后UIView的比例值(xy?)。

3 个答案:

答案 0 :(得分:0)

缩放通过乘法,平移(移动)加法相结合,旋转是矩阵乘法。所有这三个都可以组合成一个AffineTransformation(一个比空间尺寸多1行的矩阵),这些矩阵乘法组合起来。 2D AffineTransformations是3x2或3x3矩阵,额外的列只是使它们更容易使用。

编辑: 使用更清晰的名称:如果他目前的规模是currxs,currys和应用的比例是xs,那么新的比例将是currxs * xs,currys * ys。请注意,应用比例也会缩放AffineTransformation中包含的任何翻译组件,这就是应用程序顺序很重要的原因。

答案 1 :(得分:0)

比例变换将当前比例与比例y相乘。 如果视网膜的比例为2.0,则之后为y * 2.0 所以x * y就是答案。但是不要忘记x.achsis规模和y achsis可以是不同的 x和y的比例令人困惑,如果你的代码中y和x achsis上有不同的比例,那么最好使用s1和s2,或sx,sy。

答案 2 :(得分:0)

如果您只使用CGAffineTransformScale而不是其他转换(如旋转),则非常简单,您可以使用视图框和边界大小来计算生成的比例值。

float scaleX = view.frame.size.width/view.bounds.size.width;
float scaleY = view.frame.size.height/view.bounds.size.height;