如何忽略缩放图像视图 Swift 3

Posted

技术标签:

【中文标题】如何忽略缩放图像视图 Swift 3【英文标题】:How to ignore zooming on image view Swift 3 【发布时间】:2017-01-10 12:22:12 【问题描述】:

我是 ios 新手,现在正在开发像室内导航系统这样的应用程序,视图包含滚动视图,它包含保存我的地图的 imageView,当我附近的厌恶信标获取它的坐标 (x, y) 并在上面画一个蓝色点图像成功,但如果我放大或缩小绘图功能会在错误的地方绘制。

问题:如何在绘制点时忽略缩放状态?

我的代码:

self.scrollView.minimumZoomScale = 1.0
self.scrollView.maximumZoomScale = 2.5

绘制代码为:

extension UIImageView 

func addDashedLine(fromPoint start: CGPoint, toPoint end:CGPoint) 
    print("Make sure of startr point")
    print(start)
    let line = CAShapeLayer()
    let linePath = UIBezierPath()
    linePath.move(to: start)
    linePath.addLine(to: end)
    line.path = linePath.cgPath
    line.strokeColor = UIColor.blue.cgColor
    line.lineWidth = 3
    line.lineJoin = kCALineJoinRound
    line.lineDashPattern = [1, 1]
    line.zPosition = 2
    self.layer.addSublayer(line)
    
  

以及使用它的任何我的代码,例如:

let start = CGPoint(x: oldX, y: oldY)
            let end = CGPoint(x: newX, y: newY)
            print("old ponit is \(start)")
            self.mapView.addDashedLine(fromPoint: start, toPoint: end)

移动代码是:

UIView.animate(withDuration: 2.0, delay: 0.0, options: UIViewAnimationOptions.curveLinear, animations: 
            self.dotBlue.center = CGPoint(x: x, y: y)
            self.defaults.set(CGFloat(x), forKey: "currentLocationX")
            self.defaults.set(CGFloat(y), forKey: "currentLocationY")
            , completion:  (finished: Bool) in
                print("Animation Ended!")
        );

谢谢。

【问题讨论】:

【参考方案1】:

您可以使用MKMapViewisZoomEnabled 属性。

类似

self.mapView.isZoomEnabled = false
let start = CGPoint(x: oldX, y: oldY)
let end = CGPoint(x: newX, y: newY)
print("old point is \(start)")
self.mapView.addDashedLine(fromPoint: start, toPoint: end)
self.mapView.isZoomEnabled = true

只要确保你禁用的东西在绘图完成后立即重新启用。

【讨论】:

谢谢@Samantha,但它不起作用,我想在 imageView 上移动它在 scrollView 上的大 imageView 上 啊,好吧...我误会了,对不起。 scrollView 是缩放的东西?有没有试过暂时把scrollViewmaximumZoomScale设置为1.0,等画完再设置回来? 是但还是没有结果,我添加了向上移动小imageView的动画代码 所以您想在添加虚线和执行动画时禁用缩放?这里发生的事情的顺序是什么? 我解决了通过用新行重绘图像来添加行...问题是当应用程序检测信标必须成功地将点移动到正确的位置时,即使滚动视图被放大或缩小

以上是关于如何忽略缩放图像视图 Swift 3的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 缩放图像视图

如何在 Swift 中缩放卡片时翻转卡片

如何在 Fabric.js 中缩放图像以忽略纵横比?

如何在不缩放图像子视图的情况下缩放图像?迅速的ios

Swift 3:如何动态加载图像并将变量传递给第二个视图控制器?

按下缩放按钮时如何缩放滚动视图的图像?