如果newScale
我正在尝试将zoomScale
分配给UIScrollView的zoomScale == oldScale
,并且作业zoomScale = newScale
不起作用。
这是我操场上的测试代码。
import UIKit
let scrollView = UIScrollView()
let contentView = UIView()
scrollView.frame.size = CGSizeMake(200, 200)
contentView.frame.size = CGSizeMake(400, 400)
var zoomScale: CGFloat {
get { return scrollView.zoomScale }
set { scrollView.zoomScale = newValue }
}
var minimumZoomScale: CGFloat {
get { return scrollView.minimumZoomScale }
set { scrollView.minimumZoomScale = newValue }
}
func updateMinimumZoomScale(withScale newScale: CGFloat) {
let oldScale = minimumZoomScale
minimumZoomScale = newScale
if zoomScale == oldScale {
// zoomScale = 1, newScale = 0.1 //
zoomScale = newScale
zoomScale == newScale // false
}
}
updateMinimumZoomScale(withScale: 0.1)
这是结果的截图。
在屏幕截图中,zoomScale == newScale
的结果在作业false
后立即为zoomScale = newScale
。
我真的不知道为什么会这样。
答案 0 :(得分:3)
即使我在游乐场和实际项目中试用了你的代码,但它似乎没有用。问题是您需要在设置缩放比例之前为滚动视图设置委托。代表是这样设置的
scrollView.delegate = self
当您尝试为滚动视图设置缩放比例时调用-viewForZoomingInScrollView
方法,如果您的委托是nil,则不会调用该方法。因此它不会设置缩放比例。您可以在更改缩放比例之前使用设置委托在Xcode项目中尝试相同的示例,它将起作用。
答案 1 :(得分:0)
对我来说,问题在于Xcode自动转换为Swift 3.委托设置正确,但委托方法格式不正确。