Swift 3.0中的CGAffineTransformScale
问题描述:
Swift 3.0没有名为CGAffineTransformScale
的方法。Swift 3.0中的CGAffineTransformScale
func didPinchGesture(pinchRecognizer : UIPinchGestureRecognizer) {
if let view = pinchRecognizer.view {
view.transform = CGAffineTransformScale(view.transform,
recognizer.scale, recognizer.scale)
pinchRecognizer.scale = 1
}
}
scaleBy
不会自动完成,但加入CGAffineTransform
scaleBy
抛出错误,因为scale
已不再CGAffineTransform的属性: CGAffineTransform.scaledBy(view.transform, pinchRecognizer.scale, pinchRecognizer.scale)
。
用Swift 3.0配置捏手势识别器的最佳方式是什么?
答
在斯威夫特,CGAffineTransformScale
导入为在CGAffineTransform
结构的实例方法,称为scaledBy(x:y:)
:
view.transform = view.transform.scaledBy(x: recognizer.scale, y: recognizer.scale)
答
您可以使用一个尺度变换斯威夫特3这样的:
if let view = pinchRecognizer.view {
view.transform = CGAffineTransform(scaleX: recognizer.scale, y: recognizer.scale)
...
}
+1
这只是一个新的变换。 – Alexander
我添加链接到文档 – Alexander
谢谢,@亚历山大。我应该写些什么来改善我的问题? – Eric
@Eric并不是真的,但是在回答之前尽可能多花一点努力去搜索这些东西。许多Cocoa API被实现为C结构体(比如'CGAffineTransform'),并且有一组全局函数作用于它们(比如'CGAffineTransformScale'),因为它们提供比Objective C类/实例方法更快的性能。 Swift原生支持结构,并支持结构上的实例方法,所以这样的C API被导入为本地Swift结构,并且它们相应的全局函数作为实例方法被导入到这些本地Swift结构中。 – Alexander