【发布时间】:2017-10-27 17:08:21
【问题描述】:
我有一个应用程序,当用户从文本列表视图屏幕按下按钮时,它会显示一堆图片。我有一个特定的子类,允许用户捏合和放大,但我很好奇我需要在我的特定 swift 文件中输入什么代码以允许用户双击放大和缩小。使用此代码时出现三个错误。两个说“'ZoomingScrollView'类型的值没有成员'scrollview'或'imageview'”并且“'CGRectZero'在Swift中不可用”我允许用户放大的子类的代码以及我的代码如下我用来双击放大。
import UIKit
class ZoomingScrollView: UIScrollView, UIScrollViewDelegate {
@IBOutlet weak var viewForZooming: UIView? = nil {
didSet {
self.delegate = self
} }
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return viewForZooming }
@IBAction func userDoubleTappedScrollview(recognizer: UITapGestureRecognizer) {
if let scrollV = self.scrollview {
if (scrollV.zoomScale > scrollV.minimumZoomScale) {
scrollV.setZoomScale(scrollV.minimumZoomScale, animated: true)
}
else {
//(I divide by 3.0 since I don't wan't to zoom to the max upon the double tap)
let zoomRect = self.zoomRectForScale(scrollV.maximumZoomScale / 3.0, center: recognizer.locationInView(recognizer.view))
self.scrollview?.zoomToRect(zoomRect, animated: true)
}
} }
func zoomRectForScale(scale : CGFloat, center : CGPoint) -> CGRect {
var zoomRect = CGRectZero
if let imageV = self.imageView {
zoomRect.size.height = imageV.frame.size.height / scale;
zoomRect.size.width = imageV.frame.size.width / scale;
let newCenter = imageV.convertPoint(center, fromView: self.scrollview)
zoomRect.origin.x = newCenter.x - ((zoomRect.size.width / 2.0));
zoomRect.origin.y = newCenter.y - ((zoomRect.size.height / 2.0));
}
return zoomRect; }}
【问题讨论】:
-
CGRectZero在 Swift 3 中是.zero -
@leo 或者更确切地说,在这种情况下,它必须是
CGRect.zero,因为无法推断类型。 -
或
var zoomRect: CGRect = .zero
标签: ios swift zooming pinchzoom