1

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 のフレーム、および現在のスケールを掛けようとしていますが、ズーム時に画像が大きく飛び回っています。

私は多くの調査と調整を行ってきましたが、これを理解することができませんでした。ということで、最後にここで質問です。助けてください!お時間をいただきありがとうございます。

4

1 に答える 1