如何使用 Swift 函数返回的值

2024-04-13

我正在尝试使用 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)
}

Your screenCentre()功能将无法工作viewDidLoad因为view尚未调整到屏幕大小,因此其中心不在屏幕中间。

使用这个代替:

func screenCentre() -> CGPoint {
    return CGPoint(x: UIScreen.mainScreen().bounds.midX, y: UIScreen.mainScreen().bounds.midY)
}

请注意,我使用的是 CGPoint 而不是元组,但效果是相同的。此外,上述函数不需要位于视图控制器或任何其他类中,因为它不引用self。它可以是全局函数。

由于 Swift 风格指南鼓励在全局函数上创建方法,因此您可能更喜欢将函数放入扩展中,如下所示:

extension UIScreen {
    var centre: CGPoint {
        return CGPoint(x: bounds.midX, y: bounds.midY)
    }
}

可以这样调用:

let centre = UIScreen.mainScreen().centre
print(centre)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Swift 函数返回的值 的相关文章

随机推荐

  • Facebook - 发布到多个朋友墙上

    我正在使用 Javascript SDK 将一些内容发布到用户朋友墙上 var publish method stream publish message Some kind of test uid uid target id friend
  • 模态 Segue 链

    我有一个具有登录视图的 iOS 应用程序 LognnViewController 一旦用户成功通过身份验证 他们就会被带到另一个视图 DetailEntryViewController 输入一些简单的详细信息 输入详细信息后 用户将进入应用
  • 将 Matplotlib 图形嵌入 Tkinter 在 Python 3.5 上崩溃

    将 Python 2 7 脚本移植到 Python 3 5 时 此代码在 Windows Anaconda 2 4 1 64 位 中崩溃 import tkinter as Tk import matplotlib pyplot as pl
  • 如何找到文本所涉及的 wikidata(或 freebase 或 DBpedia)主题列表?

    我正在寻找一种解决方案来提取文本 或 html 文档所涉及的概念列表 我希望这些概念成为 wikidata 主题 或 freebase 或 DBpedia 例如 Bad 是迈克尔 杰克逊的歌曲 应该返回 Michael Jackson 艺术
  • 创建独立的 Lua 可执行文件

    有没有一种简单的方法可以从 Lua 脚本创建独立的 exe 文件 基本上这将涉及链接 Lua 解释器和脚本 我相信这是可能的 PLT 方案允许以相同的方式创建独立的可执行文件 但是到底是如何实现的呢 查看srlua http www tec
  • Rake db:setup 或 rake db:create 应用错误的用户名/错误的数据库

    使用 Mac OSX Yosemite 10 10 4 rails v gt Rails 4 2 3 ruby v gt ruby 2 2 2p95 遵循这些说明的组合 https www digitalocean com communit
  • 如何创建 Haar Cascade(.xml 文件)以在 OpenCV 中使用? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如果您熟悉 OpenCV 库 您就会知道 Haar Cascade 图像目标检测是什么 我所说的图像对象检测是指 比如人脸检测或其他东
  • 每个日期的 SQL 计数

    我有以下需求 我有一个记录表 记录每天生成的一些潜在客户 现在 我需要获取过去 10 天内每天的潜在客户数量报告 假设表格如下所示 tbl leads id int first name nvarchar 100 last name nva
  • 对文本文件中的行进行分组并将相应的行聚合到列

    对文本文件中的行进行分组并将相应的行聚合到列 现有文本文件 John Life John Temp John Admin Peter Life Peter Admin Matt Life Matt Admin Matt Temp 所需输出
  • 使用 Storyboard 检测 WatchKit 上所有四个方向的滑动

    我正在尝试检测 AppleWatch 上所有四个方向的滑动 但我不清楚如何为我插入情节提要中的 WKSwipeGestureRecognizer 的方向分配许多值 我尝试过 swiper direction right left up do
  • 复制构造函数初始化列表

    我知道 如果您将某个成员保留在无参数构造函数的初始化列表之外 则将调用该成员的默认构造函数 复制构造函数是否同样调用成员的复制构造函数 还是也调用默认构造函数 class myClass private someClass a someOt
  • 有没有Delphi DFM 到Delphi 源代码的转换工具?

    Delphi 表单设计器非常好 但我们需要直接从源代码开始工作 是否有工具或脚本可以获取一批 DFM 文件并将它们转换为 Delphi 源代码 您可以使用ComponentsToCode函数来自GExperts http www gexpe
  • 我需要 log4j 1.2 和 2.5 共存于同一个 web 应用程序中

    我有一个 java web 应用程序 它使用 Crystal 的 Business Objects 运行时来运行以该技术编码的报告 问题在于 Crystal 的猴子直接引用了 log4j 1 2 类中的方法 此方法不是 log4j 1 2
  • 等待(长超时)和加入(长毫秒)之间的区别?

    当线程 1 在线程 2 上调用 wait 和 join 方法时 线程 1 会等待线程 2 一段时间或直到线程 2 完成 如果我们使用这些方法的重载版本 即 wait long timeout 和 join long millis 那么 在
  • 如何在 Sublime Text 2 中插入一列递增的数字?

    text text text text 编辑后 这些文本变成 1 text 2 text 3 text 4 text 在 Notepad 中使用列编辑器很容易 但我不知道如何在 Sublime Text 2 中做同样的事情 The 文字糕点
  • 使用 C# 访问 Sharepoint - 在哪里可以找到参考库?

    我目前正在用 C 编写一个 Windows 应用程序 它将向文档库列表添加文档 我试图引用 Microsoft Sharepoint 但是我没有看到 Visual Studio 2005 添加引用列表中的 COM 或 NET 库 我需要引用
  • Mac OS 上的 Ada 编译器 GNAT

    我正在尝试使用 mac 上的终端编译 ada 但总是收到此错误 错误 x ada 中的 ada 值无效 有人知道如何解决这个问题吗 你可能没有安装Ada编译器 OSX自带的gcc不支持Ada 目前 有两种适用于 OSX 且支持 Ada 的免
  • css-显示页脚下方有大量空间

    请参阅此链接中的图像 https docs google com document d 1r9L9eLBddMOdHAP3KfAx8ND SF8b8zBl53o88aUbHT4 edit pli 1 https docs google co
  • 核心蓝牙发送数据包时速度变慢

    我遇到一个问题 即使用 peripheral writeValue dataPacket forCharacteristic writeChar type CBCharacteristicWithResponse 并且 iOS 设备实际物理
  • 如何使用 Swift 函数返回的值

    我正在尝试使用 Swift 函数将一个圆放置在视图的中心 这样无论屏幕大小如何 它始终位于中心 我可以在由一组任意 x 和 y 值定义的点处绘制圆 但我需要函数来提供这些值 我创建了一个名为的函数screenCentre 读取并返回两个参数