我有一个用户可以放大的UIScrollview。图像非常大(3MBs +)所以我先下载一个低分辨率版本,然后在下载完成后加载大版本。
它是无缝的,除非用户已放大。
在用高分辨率图像替换低分辨率图像时,如何保持精确缩放?我基本上只是希望用户看到图像更清晰,但不能改变他们正在看的内容。
指导的一些示例尺寸:
这是我正在做类似事情的代码示例。用户还可以调整图像的亮度。在这种情况下,我正在交换具有完全相同尺寸的图像,以便此代码可以工作,但如果尺寸发生变化则不行。
// Get the frame & zoom scale of image before replacing it
let tempZoomScale = pageImageViews[pageToUse].zoomScale
let tempFrame = pageImageViews[pageToUse].contentOffset
// Replace the image with the newly formatted one
pageImageViews[pageToUse].display(image: imageToUse)
// Set the same zoom position as it was before we swapped the image
if (maintainZoomPosition == true) {
pageImageViews[pageToUse].zoomScale = tempZoomScale
pageImageViews[pageToUse].contentOffset = tempFrame
}
任何建议都非常感谢!
由于
答案 0 :(得分:2)
在用高分辨率图像替换低分辨率图像时,如何保持精确变焦?
只需这样做 - 用高分辨率图像替换低分辨率图像。但是不要替换包含图像的图像 view ;这似乎是你的错误。这样做无异于干扰滚动视图的整个缩放机制,这就是造成问题的原因。
答案 1 :(得分:1)
如果您将图像放在UIImageView内,其内容模式设置为.scaleAspectFit
,并且该图像视图具有设置的大小,则用更高分辨率的图像替换图像不应该更改缩放水平。
答案 2 :(得分:0)
从表现的角度来看,你想做的工作并不好。 更好的方法是在下载大图像之前显示一些进度视图,然后替换图像并删除进度视图。