与iOS照片应用程序相似,用户通过手指捏合来放大和缩小图像:
UIView > UIScrollView > UIImageView > UIImage
最初,我在缩小比例低于1时遇到了图像偏离中心的问题。我通过以下方式解决了这个问题:
func scrollViewDidZoom(scrollView: UIScrollView) {
let offsetX = max((scrollView.bounds.width - scrollView.contentSize.width) * 0.5, 0)
let offsetY = max((scrollView.bounds.height - scrollView.contentSize.height) * 0.5, 0)
scrollView.contentInset = UIEdgeInsetsMake(offsetY, offsetX, 0, 0)
}
缩小时效果很好。
UIImage的content mode是aspectFit。
问题
当我放大,即zoomScale大于1时,滚动视图的插图需要贴合包含在滚动视图中的UIImage周围。这会消除原来围绕UIImage的空白区域。例如相册应用程序通过捏或双击放大。
已尝试
func scrollViewDidZoom(scrollView: UIScrollView) {
if scrollView.zoomScale > 1 {
let imageScale = (self.imageView.bounds.width/self.imageView.image!.size.width)
let imageWidth = self.imageView.image!.size.width * imageScale
let imageHeight = self.imageView.image!.size.height * imageScale
scrollView.contentInset = UIEdgeInsetsMake(((scrollView.frame.height - imageHeight) * 0.5), (scrollView.frame.width - imageWidth) * 0.5 , 0, 0)
print (scrollView.contentInset.top)
}
else {
let offsetX = max((scrollView.bounds.width - scrollView.contentSize.width) * 0.5, 0)
let offsetY = max((scrollView.bounds.height - scrollView.contentSize.height) * 0.5, 0)
scrollView.contentInset = UIEdgeInsetsMake(offsetY, offsetX, 0, 0)
}
}
以上增加似乎仍然会改变插入量。
更新(添加了图像)
第一张图片显示默认布局。其余的是放大后的效果.....