类似于 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 内容模式为 aspectFit
问题
当我ZOOM IN时,当 zoomScale 大于 1 时,滚动视图插图需要拥抱滚动视图包含的 UIImage 的周围环境。这消除了 UIImage 周围的死区。IE,通过捏合或双击放大时的照片应用程序。
试过了
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)
}
}
上面的添加似乎仍然改变了插图的数量。
更新(已添加图片)
第一张图片显示了默认布局。放大时的休息显示......