2017-04-17 96 views
2

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不会自动完成,但加入CGAffineTransformscaleBy抛出错误,因为scale已不再CGAffineTransform的属性: CGAffineTransform.scaledBy(view.transform, pinchRecognizer.scale, pinchRecognizer.scale)

用Swift 3.0配置捏手势识别器的最佳方式是什么?

回答

8

在斯威夫特,CGAffineTransformScale导入为在CGAffineTransform结构的实例方法,称为scaledBy(x:y:)

view.transform = view.transform.scaledBy(x: recognizer.scale, y: recognizer.scale) 
+0

我添加链接到文档 – Alexander

+0

谢谢,@亚历山大。我应该写些什么来改善我的问题? – Eric

+0

@Eric并不是真的,但是在回答之前尽可能多花一点努力去搜索这些东西。许多Cocoa API被实现为C结构体(比如'CGAffineTransform'),并且有一组全局函数作用于它们(比如'CGAffineTransformScale'),因为它们提供比Objective C类/实例方法更快的性能。 Swift原生支持结构,并支持结构上的实例方法,所以这样的C API被导入为本地Swift结构,并且它们相应的全局函数作为实例方法被导入到这些本地Swift结构中。 – Alexander

1

您可以使用一个尺度变换斯威夫特3这样的:

if let view = pinchRecognizer.view { 
    view.transform = CGAffineTransform(scaleX: recognizer.scale, y: recognizer.scale) 
    ... 
    } 
+1

这只是一个新的变换。 – Alexander