Ios UIScrollView缩放不一致

Ios UIScrollView缩放不一致,ios,swift,uiscrollview,Ios,Swift,Uiscrollview,下面的代码在我第一次从相机卷中拾取图像时按预期运行。图像被适当缩小以适合滚动视图。但是,当我再次运行它以重新单击图像并再次拾取相同的图像时,它会缩放到1.0比例。无法确定需要重置什么才能使其每次都能正常工作。有什么想法吗 func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {

下面的代码在我第一次从相机卷中拾取图像时按预期运行。图像被适当缩小以适合滚动视图。但是,当我再次运行它以重新单击图像并再次拾取相同的图像时,它会缩放到1.0比例。无法确定需要重置什么才能使其每次都能正常工作。有什么想法吗

func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {

    scrollView.contentSize = CGSize(width: 0, height: 0)
    picView.image = nil
    picView.frame = CGRect(x: 0, y: 0, width: 0, height: 0)
    picView.removeFromSuperview()
    self.dismissViewControllerAnimated(true, completion: nil)
    scrollView.addSubview(picView)

    scrollView.contentSize = image.size

    let scaleWidth = scrollView.frame.size.width / scrollView.contentSize.width //image.size.width
    let scaleHeight = scrollView.frame.size.height / scrollView.contentSize.height //image.size.height
    let minScale = min(scaleWidth, scaleHeight)
    scrollView.minimumZoomScale = minScale
    scrollView.maximumZoomScale = 1.0
    scrollView.zoomScale = minScale
}

我想你已经弄明白了,但我会填补这个谜题中可能缺失的部分。缩放实际上是如何工作的?正如我所说:

滚动视图通过对可缩放视图应用缩放变换进行缩放。。。此外,滚动视图关注的是使滚动继续正常工作。。。因此,滚动视图会自动缩放自己的内容大小,以匹配当前的缩放比例

因此,在开始处理内容大小之前,需要删除该转换。因此,在交换图像视图之前,将zoomScale重置为1就足够了

更好的是,为什么不把图像视图留在那里呢?你似乎在日常生活中做了很多不必要的工作;为什么不将其视为一个带有图像视图内容视图的滚动视图,其中被交换的只是图像


最后,为什么不使用自动布局?这样,图像的大小自动变为图像视图的大小,图像视图的大小自动变为滚动视图的内容大小。

调试告诉您什么?minScale的值正确吗?是的,min scale的值总是相同的&正确的,但我怀疑scrollView contentSize不知怎么搞砸了。即使zoomscale是正确的,这也会影响缩放?对,因为缩放就是这样工作的。是的,但我无法确定,如果代码中有contentSize,它会在哪里出错,我提供了。您正在设置内容大小,而旧的缩放比例仍然存在。因此,你得到了错误的结果。太好了!在开始时添加scrollView.zoomScale=1.0解决了问题。感谢@matt我在开始时执行了删除和添加imageView的不必要步骤,希望能够解决问题。