Ich versuche eine Swift-Funktion zu verwenden, um einen Kreis in der Mitte einer Ansicht zu platzieren, so dass er unabhängig von der Bildschirmgröße immer in der Mitte liegt. Ich kann den Kreis an einem Punkt zeichnen, der durch eine Menge beliebiger x- und y-Werte definiert ist, aber ich brauche die Funktion, um stattdessen diese Werte zu liefern.Wie verwende ich die von der Swift-Funktion zurückgegebenen Werte
Ich habe eine Funktion namens screenCentre()
erstellt, um zwei Parameter zu lesen und zurückzugeben, die die Mittelpunktkoordinaten sind. Xcode warnt jedoch, dass die
“Result of call to screenCentre() is unused”
ich durch Swift tutorials on functions and closures gearbeitet haben und verstehen, wie Argumente an eine Funktion zu übergeben, aber ich bin immer noch nicht klar, wie die von dieser Funktion zurückgegebenen Werte verwenden.
Hier ist mein Code:
import UIKit
class ViewController: UIViewController {
let radius = CGFloat(20)
let fillColour = UIColor.clear.cgColor
let lineColour = UIColor.red.cgColor
let lineWidth = 1.0
var x: CGFloat?
var y: CGFloat?
override func viewDidLoad() {
super.viewDidLoad()
screenCentre()
print(screenCentre())
// arbitrary set of coordinates used to draw circle
circle(x: 150, y: 170)
}
func screenCentre() -> (x: CGFloat, y: CGFloat)
{
return (self.view.bounds.size.width/2, self.view.bounds.size.height/2)
}
func circle(x: CGFloat, y: CGFloat) {
let circlePath = UIBezierPath(arcCenter: CGPoint(x: x,y: y), radius: radius, startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)
let shapeLayer = CAShapeLayer()
shapeLayer.path = circlePath.cgPath
shapeLayer.fillColor = fillColour
shapeLayer.strokeColor = lineColour
shapeLayer.lineWidth = CGFloat(lineWidth)
view.layer.addSublayer(shapeLayer)
}
}
UPDATE
Durch eine konstante erklärte ich bin in der Lage durch diese Funktion zurückgegebenen Werte zu verwenden. Sam_M und Kevin Bunarjo beantworten die Frage wie gefragt.
Daniel T und PEEJWEEJ identifizierten jedoch beide ein verwandtes Problem, das ich nicht erkannt hatte. Sobald ich Fixits angewendet habe, bietet mir die von Daniel T angebotene Erweiterungslösung nun die Möglichkeit, den Bildschirm um die Mitte zu drehen. Also habe ich es als die beste Antwort markiert. Danke an alle, die dazu beigetragen haben.
Hier ist der aktualisierte Code.
danke. Siehe meine Bearbeitung – Greg
Wenn es mehrere Ansichten gibt, die Kreise benötigen, machen Sie sie zu allen Unterklassen Ihrer Kreisansicht oder fügen Sie jedem eine Kreisansicht hinzu. – PeejWeej