我有一张使用 PaintCode 绘制的图像。该图像有一个 Scale 变量。在标记为“// A”的行上,我编辑了通常的 PaintCode 生成代码,以便我可以传递一个比例并以正确的高度和宽度创建图像。
public class func imageOfMap(scale scale: CGFloat = 1) -> UIImage {
UIGraphicsBeginImageContextWithOptions(
CGSizeMake(scale*1660, scale*1832), // A
false, 0)
MapStyleKit.drawMap(scale: scale)
let imageOfMap = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return imageOfMap
}
现在我在 UIScrollView 中有一个 UIImageView。我使用自动布局约束将滚动视图限制在 ViewController 视图的内部,并将图像视图限制在滚动视图的内部。
我查看了“viewForZooming”和“scrollViewDidZoom”,但它们只在图像视图上使用 CGAffineTransformScale。我尝试在“scrollviewDidZoom”中设置正确的图像,并尝试使用自己的捏合手势识别器,但我的数学在某些地方一定是错误的,但我不知道在哪里。
每次缩放时,我都想以正确的缩放级别从 PaintCode 的图像视图中提供一个新图像。
此外,我希望图像“保持原位”,就像人们在捏放大 Google Maps 或 Apple Maps 时所期望的那样。现在我正在尝试将scrollView的contentOffset乘以contentSize、scrollView的框架和当前比例,并且在缩放时图像会跳动很多。
我做了很多研究和修补,但无法弄清楚这一点。所以我终于在这里问了。请帮忙!感谢您的时间。