我正在尝试使用 Swift 函数将一个圆放置在视图的中心,这样无论屏幕大小如何,它始终位于中心。我可以在由一组任意 x 和 y 值定义的点处绘制圆,但我需要函数来提供这些值。
我创建了一个名为的函数screenCentre()
读取并返回两个参数,即中心坐标。然而 Xcode 警告说
“Result of call to screenCentre() is unused”
我已经经历过有关函数和闭包的 Swift 教程 https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html并了解如何将参数传递给函数,但我仍然不清楚如何使用该函数返回的值。
这是我的代码:
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 和 Kevin Bunarjo 按要求回答了问题。
然而 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)
}