Я пытаюсь использовать функцию Swift для размещения круга в центре представления, поэтому он всегда находится в центре, независимо от размера экрана. Я могу нарисовать круг в точке, заданной набором произвольных значений x и y, но мне нужна функция для подачи этих значений.
Я создал функцию с именем screenCentre()
для чтения и возврата двух параметров, которые являются центральными координатами. Однако Xcode предупреждает, что
"Result of call to screenCentre() is unused"
Ive проработал Swift-учебники по функциям и закрытию и понял, как передавать аргументы функции, но я до сих пор не понимаю, как использовать значения возвращенный этой функцией.
Вот мой код:
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
Объявив константу, я могу использовать значения, возвращаемые этой функцией. Sam_M и Кевин Бунархо ответили на вопрос, заданный.
Однако Daniel T и PEEJWEEJ идентифицировали связанную проблему, которую я не узнал. Как только я применил исправления, расширение, предлагаемое Daniel T, теперь дает мне возможность повернуть экран по центру. Поэтому я назвал это лучшим ответом. Спасибо всем, кто внес свой вклад.
Вот обновленный код.
let centre = UIScreen.main.centre
circle(x: centre.x, y: centre.y)
}
func screenCentre() -> CGPoint {
return CGPoint(x: UIScreen.main.bounds.midX, y: UIScreen.main.bounds.midY)
}