2017-02-11 39 views
0

我在线上遇到了斯坦福大学2016 CS193P课程的一些问题。 我怀疑这个问题可能是因为我使用的是Xcode 8.2.1(所以我不能使用视频中的相同代码),但是我也可能在某个地方做了一个单子。我查阅了文档并查看了堆栈溢出,但我无法解决这个问题。Swift 3中的UIPinchGestureRecognizer

FaceView代表一个卡通人脸,应该随着捏(使用UIPinchGestureRecognizer)一起缩放。要做到这一点的插座内已FaceViewController(在视图控制器为FaceView)创建:

@IBOutlet weak var faceView: FaceView!{ 
    didSet{ 
    faceView.addGestureRecognizer(UIPinchGestureRecognizer(target:faceView, action:#selector(FaceView.changeScale(recognizer:)))) 
    updateUI() 
} 
} 

哪个FaceView类中执行的功能changeScale:

func changeScale(recognizer: UIPinchGestureRecognizer){ 
    switch recognizer.state { 
    case .changed, .ended: 
     NSLog("gesture") 
     scale *= recognizer.scale 
     recognizer.scale=1.0 
     let resultString = "pinch - scale = \(scale))" 
     NSLog(resultString) 
    default: 
     break 
    } 
} 

我添加了一个输出到控制台查看如果在我们冲击视图时比例发生变化。确实如此(控制台的输出示例:捏 - 比例= 1.10142245024732;捏 - 比例= 1.11638202852033;)

但是视图并没有改变。

我在在这一点上完全看...任何帮助赞赏

我已确认 用户交互设置为True 的IBOutlet中连接(通过控制台输出确认)

回答

0

这样看来,@Daivest接近了答案:

self.transform = CGAffineTransform(scaleX:scale, y: scale) 

我真的不确定发生了什么变化,为什么会需要这行是不是在教程 - 如果任何人都可以摆脱一些光在这将不胜感激!

0

你得到的缩放比例的变量,但你不缩放UIView。 你可以这样做

self.transform = CGAffineTransformScale(CGAffineTransformIdentity, scale, scale); 

例如。

+0

不幸的是CGAffineTransformIdentity在Swift中不可用 – stevenpcurtis