我正在尝试使用 Swift 函数在 View 的中心放置一个圆圈,因此无论屏幕大小如何,它始终位于中心。我可以在由一组任意 x 和 y 值定义的点处绘制圆,但我需要函数来提供这些值。
我创建了一个名为 screenCentre()
的函数来读取和返回两个参数,即中心坐标。然而 Xcode 警告说
“调用 screenCentre() 的结果未被使用”
我已经完成了 Swift tutorials on functions and closures并了解如何将参数传递给函数,但我仍然不清楚如何使用此函数返回的值。
这是我的代码:
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)
}
}
更新
通过声明一个常量,我可以使用这个函数返回的值。 Sam_M 和 Kevin Bunarjo 回答了问题。
但是 Daniel T 和 PEEJWEEJ 都发现了一个我没有意识到的相关问题。在我应用 fixits 后,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)
}
最佳答案
您的 screenCentre()
函数在 viewDidLoad
中不起作用,因为 view
尚未调整到屏幕大小,因此它的中心是不在屏幕中间。
改用这个:
func screenCentre() -> CGPoint {
return CGPoint(x: UIScreen.mainScreen().bounds.midX, y: UIScreen.mainScreen().bounds.midY)
}
请注意,我使用的是 CGPoint 而不是元组,但效果是一样的。此外,上述函数不需要在您的 View Controller 或任何其他类中,因为它不引用 self
。它可以是一个全局函数。
由于 Swift 风格指南鼓励在全局函数上创建方法,您可能更愿意将函数放在这样的扩展中:
extension UIScreen {
var centre: CGPoint {
return CGPoint(x: bounds.midX, y: bounds.midY)
}
}
可以这样调用:
let centre = UIScreen.mainScreen().centre
print(centre)
关于swift - 如何使用 Swift 函数返回的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39949216/