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 マップまたは Apple マップでピンチしてズームするときに予想されるように、画像を「その場にとどめる」必要があります。現在、scrollView の contentOffset に contentSize、scrollView のフレーム、および現在のスケールを掛けようとしていますが、ズーム時に画像が大きく飛び回っています。
私は多くの調査と調整を行ってきましたが、これを理解することができませんでした。ということで、最後にここで質問です。助けてください!お時間をいただきありがとうございます。