Ios 在UIScrollViewer中使UIImage缩放到屏幕大小

Ios 在UIScrollViewer中使UIImage缩放到屏幕大小,ios,swift,uiscrollview,uiimageview,Ios,Swift,Uiscrollview,Uiimageview,编辑:解决方案是以编程方式添加UIScrollView和UIImageView。问题可能是通过故事板设置的自动约束选项。因此,我想知道如何在故事板中设置这样的视图并实际工作。让这个问题成为现实,因为其他人可能想知道这一点。 我在UIScrollViewer中有一个UIImageViwer。我在网上找到了几个关于这个问题的示例,并将它们实现为: func setZoomScale() { let imageViewSize = imageView.bounds.size let s

编辑:解决方案是以编程方式添加UIScrollView和UIImageView。问题可能是通过故事板设置的自动约束选项。因此,我想知道如何在故事板中设置这样的视图并实际工作。让这个问题成为现实,因为其他人可能想知道这一点。

我在UIScrollViewer中有一个UIImageViwer。我在网上找到了几个关于这个问题的示例,并将它们实现为:

func setZoomScale() {
    let imageViewSize = imageView.bounds.size
    let scrollViewSize = scrollView.bounds.size
    let widthScale = scrollViewSize.width / imageViewSize.width
    let heightScale = scrollViewSize.height / imageViewSize.height

    let minZoomScale = min(widthScale, heightScale)
    scrollView.minimumZoomScale = minZoomScale
    scrollView.zoomScale = minZoomScale
}
问题是,图像不适合屏幕大小,它的方式更小或更大

例如,这幅风景画: 这是UIScrollViewer报告的值

最小变焦:0.12254901960784313变焦:0.12471373968656897

对于600x667点刻度,图像大小报告为: CGSize -宽度:4896.0 -高度:3264.0

当图像为肖像时,结果如下:

CGSize -宽度:1280.0 -高度:1920.0

使用以下方法设置图像:

self.imageView.image = image
self.imageView.contentMode = UIViewContentMode.ScaleAspectFit

var frame = self.imageView.frame;
frame.size = image!.size;
self.imageView.frame = frame;

self.scrollView.contentSize = self.imageView.frame.size
self.scrollView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]

self.setZoomScale()

如果我不这样做,UIImageViewer.size将报告为600x667点,使最小缩放=1,图像将被剪裁。

请尝试内容模式ScaleSpectFill或ScaleToFill,以便获得第一个原始大小的图像,第二个与imageview大小相同的图像。我认为您的代码是正确的。在这些事情之后,你调用了
zoomToRect:animated
了吗?@Fujia我没有,我正在尝试,但是zoomToRect需要一个cRect()作为参数,我从哪里获得cRect()?@JAYRAPARKA我尝试了,但没有成功……可能是因为我在我的故事板中添加了UIScrollViewer,并用“添加缺少的约束”选项?请尝试内容模式ScaleAspectFill或ScaleToFill,以便获得第一个原始大小的图像,第二个与imageview大小相同的图像。我认为您的代码是正确的。在所有这些之后,您是否调用了
zoomToRect:animated
?@Fujia我没有,我正在尝试,但zoomToRect需要一个cRect()作为参数,我从何处获取CGRect()。@JAYRAPARKA我尝试过,但没有成功……可能是因为我在故事板中添加了UIScrollViewer,并使用“添加缺少的约束”选项设置了约束?