您如何找到 a 的当前比例(缩放级别)UIView
?
6 回答
如果您正在对视图应用缩放变换,则该变换将通过UIView 上的transform
属性(适当地)可用。根据CGAffineTransform 文档,比例变换将在变换矩阵的坐标 (1,1) 和 (2,2) 处具有非零值;因此,您可以通过以下方式获得 x 和 y 比例因子:
CGFloat xScale = view.transform.a;
CGFloat yScale = view.transform.d;
根据此来源,使用此方法可为您提供比例,而不管应用于变换的旋转或平移:
func scale(from transform: CGAffineTransform) -> Double {
return sqrt(Double(transform.a * transform.a + transform.c * transform.c));
}
我知道我迟到了,但接受的答案对我来说不起作用。
使用围绕CGAffineTransform变换矩阵的一些数学运算,您可以计算比例。这也在玛格丽特的评论中提到。Swift 允许你编写一个带有计算属性的简单扩展:
extension CGAffineTransform {
var scale: Double {
return sqrt(Double(a * a + c * c))
}
}
因此,稍后您可以通过scale
直接在 上调用 a 来使用CGAffineTransform
,如下所示:
let someViewScale = someView.transform.scale
该功能由 UIScrollView 及其 zoomScale 属性提供。
编辑:
知道当前尺度由变换矩阵给出。如您所知,比例值在这里:
sx, 0, 0
0 , sy, 0
. . .. ,1.
要获取当前状态,只需记录转换的状态。但是,要返回该状态,您需要使用上次转换的逆或加载单位矩阵。
检查这个它会帮助你....在这个你可以学习如何使用UIPinchGestureRecognizer
....设置最小和最大缩放比例。如何使用 UIPinchGestureRecognizer 设置最小和最大缩放比例
那不是contentScaleFactor
(参考)吗?