1

假设我的当前规模UIViewxUIView假设我对我的金额应用比例转换,y即:

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

. 我如何确定UIView发生比例转换后的比例值是多少(根据xy?)。

4

3 回答 3

0

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

编辑:使用更清晰的名称:如果他当前的比例是 currxs、currys 并且应用的比例是 xs、ys,那么新的比例将是 currxs*xs、currys*ys。请注意,应用比例也会缩放包含在 AffineTransformation 中的任何平移组件,这就是应用顺序很重要的原因。

于 2013-01-08T01:43:46.663 回答
0

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

于 2013-01-08T01:43:51.603 回答
0

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

float scaleX = view.frame.size.width/view.bounds.size.width;
float scaleY = view.frame.size.height/view.bounds.size.height;
于 2013-01-08T02:27:26.373 回答