Ich habe eine UIImageView, die Sie tippen können und es zeichnet einen Kreis. Ich speichere den Ort der Kreise in einem Array von Wörterbüchern. Dadurch kann ich die Zeichnung der Kreise "wiederholen". Wenn die UIImageView jedoch eine andere Größe als das Original hat, werden die Kreise nicht auf die neue UIImageView skaliert.Wie skaliert man CAShapeLayer auf verschiedene UIImageView
Wie kann ich die Kreise skalieren? Zu Demonstrationszwecken ist das obere Bild die Größe der UIImageView, die für die Eingabe verwendet wird, und das zweite Bild ist die Größe für die Wiedergabe.
inputing die Kreise:
Replay die Kreise (die Kreise in der blauen UIImageView sein sollte
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)
}
}