2017-02-23 33 views
0

我有一個UIImageView,你可以點擊它畫一個圓。我將圓圈的位置存儲在字典數組中。這允許我「重放」圓圈的繪圖。但是,當UIImageView與原始大小不同時,圓形不會縮放到新的UIImageView。如何縮放CAShapeLayer到不同的UIImageView

如何獲得圈子的比例?出於演示目的,最上面的圖片是用於輸入的UIImageView的大小,第二張是重放的大小。

輸入查詢的圓圈:

enter image description here

重播的圓圈(圓圈應該是在藍色的UIImageView

enter image description here

import Foundation 
import UIKit 

class DrawPuck { 

    func drawPuck(circle: CGPoint, circleColour: CGColor, circleSize: CGFloat, imageView: UIImageView) { 

     let circleBezierPath = UIBezierPath(arcCenter: CGPoint(x: circle.x,y: circle.y), radius: CGFloat(circleSize), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true) 

     let shapeLayer = CAShapeLayer() 

     shapeLayer.path = circleBezierPath.cgPath 

     //change the fill color 
     shapeLayer.fillColor = circleColour 

     //you can change the stroke color 
     shapeLayer.strokeColor = UIColor.white.cgColor 

     //you can change the line width 
     shapeLayer.lineWidth = 0.5 

     imageView.layer.addSublayer(shapeLayer) 

    } 

} 

回答

0

我能夠與CATransform3DMakeScale作爲解決此只要保持原始圖像的原始高寬比,它就可以很好地工作

let width = yellowImageView.frame.width/blueImageView.frame.width 
    let height = yellowImageView.frame.height/blueImageView.frame.height 

    shapeLayer.transform = CATransform3DMakeScale(height, width, 1.0) 

    view.layer.addSublayer(shapeLayer)