我的问题非常简单......
想象一下背景图像代表你家周围的街道和建筑物,请注意这是一个专门构建的图像.这个图像(一个视图)是可缩放的,到目前为止一直很好.与地图相似,但用图像代替.
现在,在图像上绘制的街道顶部的图像上有代表汽车的标记.这些将随着时间的推移而移动,因此将动态移动.我已经成功地将汽车放置在图像上的正确位置,但是当我放大/缩小汽车时,汽车会移动到位.请注意,我不希望汽车的尺寸发生变化,它们将始终保持不变.
基本上,非常类似于谷歌地图顶部的地图标记,但不是地图我有一个背景图片而不是标记我有其他图像(汽车).
现在实现...我有一个简单的ScrollableView,它包含一个图像视图.我试图覆盖其他多个图片,我想保持放置但不放大或缩小(或至少没有主图片那么多).我会说它类似于地图上有定位销,但它只是使用图片.我在Swift中做这个和最新的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
}
}
Run Code Online (Sandbox Code Playgroud)
任何提示非常感谢.我用谷歌搜索但是找不到示例,仍然学习视图和swift以及一般的移动开发.谢谢你的帮助.
您可以相应地更改引脚的中心。使用此更新的代码:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1145 次 |
最近记录: |