2016-01-17 9 views
10

...iOSのスウィフト:私の問題は実際にはかなり簡単ですどのように重ね合わせた画像の座標を失うことなく、同時にズームイン2枚の画像を重ね合わせる

は、あなたの家の周りの道路や建物を表した背景画像を想像してみてこれは目的の構築されたイメージであることに注意してください。この画像(ビュー)はズーム可能で、今のところとても良いです。マップに似ていますが、代わりに画像があります。画像に描かれた通りの上に車を表すマーカーが存在し

今の画像であること。これらは時間とともに移動し、動的に動くでしょう。私は成功した画像に適切な場所に車を置いてきたが、私は、ズームイン/ズームアウト時に車が場所の外に移動します。私は車のサイズを変更したくないことに注意してください、彼らは常に同じままになります。 Googleマップの上にマップマーカーと本質的に、非常に似ているが、代わりにマップの

私は、背景画像を持っているし、代わりにマーカーの私は、他の画像(車を)持っています。実装のための今

... 私はイメージビューを含む単純なScrollableViewを持っています。私は私が配置を維持したい、他の複数の画像を重ねるが、inまたはout(または少なくともない限り主映像など)をズームしないようにしようとしています。私はそれが場所ピンを持っているマップに似ていると言うでしょうが、それは絵を使用しているだけです。 私はスウィフト、最新のiOSバージョン(9X)

import UIKit 

class ViewController: UIViewController, UIScrollViewDelegate 
{ 
    @IBOutlet weak var scrollView: UIScrollView! 
    @IBOutlet weak var imageView: UIImageView! 
    @IBOutlet weak var pin1View: UIImageView! 
    @IBOutlet weak var pin2View: UIImageView! 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     self.scrollView.minimumZoomScale = 1.0; 
     self.scrollView.maximumZoomScale = 10.0; 



    } 

    override func didReceiveMemoryWarning() 
    { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? 
    { 
     let pin1_X = self.pin1View.frame.origin.x 
     let pin2_Y = self.pin2View.frame.origin.y 
     //I guess I need to do something here but not sure 
     return self.imageView 
    } 
} 

に感謝任意のヒントを、これをやっています。私はそれをGoogleでなく、例えば、まだ学習ビューや迅速なだけでなく、一般的な携帯DEVを見つけることができませんでした。 ご協力いただきありがとうございます。

答えて

3

あなたはそれに応じて、ピンの変更センターを持っています。

class ViewController: UIViewController, UIScrollViewDelegate 
{ 
    @IBOutlet weak var scrollView: UIScrollView! 
    @IBOutlet weak var imageView: UIImageView! 
    @IBOutlet weak var pin1View: UIImageView! 
    @IBOutlet weak var pin2View: UIImageView! 
    var pin1ViewCenter : CGPoint = CGPointZero 
    var pin2ViewCenter : CGPoint = CGPointZero 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     self.scrollView.scrollEnabled = true 
     self.scrollView.minimumZoomScale = 1.0 
     self.scrollView.maximumZoomScale = 10.0 

     pin1ViewCenter = pin1View.center 
     pin2ViewCenter = pin2View.center 

     self.scrollView.contentSize = self.imageView.frame.size 
    } 


    override func didReceiveMemoryWarning() 
    { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? 
    { 
     return self.imageView 
    } 

    func scrollViewDidZoom(scrollView: UIScrollView) { 

     let scaleAffineTransform = CGAffineTransformScale(CGAffineTransformIdentity, scrollView.zoomScale, scrollView.zoomScale) 
     var translatedPoint = CGPointApplyAffineTransform(pin1ViewCenter, scaleAffineTransform) 
     pin1View.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, translatedPoint.x - pin1ViewCenter.x , translatedPoint.y - pin1ViewCenter.y) 
     translatedPoint = CGPointApplyAffineTransform(pin2ViewCenter, scaleAffineTransform) 
     pin2View.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, translatedPoint.x - pin2ViewCenter.x, translatedPoint.y - pin2ViewCenter.y) 
    } 

    func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) { 
     let scaleAffineTransform = CGAffineTransformScale(CGAffineTransformIdentity, scale, scale) 
     scrollView.contentSize = CGSizeApplyAffineTransform(self.imageView.bounds.size, scaleAffineTransform) 
    } 

} 
+0

ありがとう:この更新されたコードを使用してください!しかし、致命的なエラーで軽微な問題が発生しました。この行のオプション値をアンラッピングしている間、unexventectedly nilが見つかりました:pin1ViewCenter = pin1View.center任意のアイデアですか? – user2091936

+1

pin1Viewがストーリーボードで正しく接続されていることを確認します。 –