带有几个小数位的倒计时,在 Swift 中使用 NSTimer

2023-12-12

例如,我想制作一个具有从 10.0000000 开始的计时器的应用程序,并且我希望它能够完美倒计时 到目前为止,这是我的代码:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var labelTime: UILabel!

    var counter = 10.0000000

    var labelValue: Double {
        get {
            return NSNumberFormatter().numberFromString(labelTime.text!)!.doubleValue
        }
        set {
            labelTime.text = "\(newValue)"
        }
    }


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        labelValue = counter
        var timer = NSTimer.scheduledTimerWithTimeInterval(0.0000001, target: self, selector: ("update"), userInfo: nil, repeats: true)
    }

    func update(){
        labelValue -= 0.0000001
    }


}

发生的情况是,我的倒计时非常慢,它不起作用,需要 1 小时才能达到 0 秒,而不是 10 秒。有任何想法吗?我应该对我的代码进行哪些更改? 谢谢


定时器并不是非常精确,NSTimer 的分辨率约为 1/50 秒。

另外,iPhone 屏幕的刷新率为 60 帧/秒,因此让计时器运行得更快是完全没有意义的。

不要尝试使用计时器在每次触发时递减某些内容,而是创建一个每秒触发 50 次的计时器,并让它使用时钟数学根据剩余时间更新显示:

var futureTime: NSTimeInterval 

override func viewDidLoad() {
    super.viewDidLoad()
    labelValue = counter

    //FutureTime is a value 10 seconds in the future.
    futureTime = NSDate.timeIntervalSinceReferenceDate() + 10.0 

    var timer = NSTimer.scheduledTimerWithTimeInterval(
      0.02, 
      target: self, 
      selector: ("update:"), 
      userInfo: nil, 
      repeats: true)
}

func update(timer: NSTimer)
{
  let timeRemaining = futureTime - NSDate.timeIntervalSinceReferenceDate()
  if timeRemaining > 0.0
  {
    label.text = String(format: "%.07f", timeRemaining)
  }
  else
  {
    timer.invalidate()
    //Force the label to 0.0000000 at the end
    label.text = String(format: "%.07f", 0.0)
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有几个小数位的倒计时,在 Swift 中使用 NSTimer 的相关文章

  • 为什么我们在 @synchronized 块中传递 self ?

    我猜 synchronized 块不依赖于对象 而是依赖于线程 对吗 既然如此 我们为什么要传递 self 呢 synchronized是语言提供的用于创建同步作用域的构造 因为使用简单的全局共享互斥锁效率非常低 因此序列化每个单独的互斥锁
  • 我可以在 NS_SWIFT_NAME 中使用保留关键字吗?

    我正在尝试使 Objective C 委托协议更漂亮以便在 Swift 中使用 但我在弄清楚如何使用时遇到了一些麻烦NS SWIFT NAME 是否可以使用NS SWIFT NAME指定 Swift 名称中与 Objective C 关键字
  • 应用程序图标未刷新

    我更改了新版本应用程序中的图标图像 并且我在设备中安装了旧版本应用程序 然后我安装了新版本 它在 iOS 5 中运行良好 但在 iOS 6 中 图标没有刷新 它仍然显示旧版本图标 徽标 如果没有安装旧版本应用程序 该设备在 iOS 5 和
  • 如何在 Swift 中使用 substringToIndex? [复制]

    这个问题在这里已经有答案了 我在这一行收到编译器错误 UIDevice currentDevice identifierForVendor UUIDString substringToIndex 8 类型 String Index 不符合协
  • 自动调整大小完成后如何获取帧大小

    我想知道 如何以及何时 viewDidLoad viewWillAppear viewDidAppear 可以获得自动调整大小以适合其父视图的 UIViews 框架大小 从你的问题中不清楚你为什么想要它 但我想这是为了布局你的子视图 幸运的
  • Swift 数组设置索引值不起作用

    我有一个方法 下面的内容 其中queue2只是一个 Int 我打印了很多东西 看看一切是否都正常 public func cool item Int println item println back queue2 insert item
  • iOS Swift 检测键盘事件

    我能以某种方式检测来自 iOS 键盘的事件吗 我想检测此类事件UIViewController哪个没有UITextField或任何此类物体 我只有四个圆圈UIView我想在按下键盘上的按钮时将它们涂成不同的颜色 您没有任何对象可以从键盘获取
  • 使用 Push Transition 效果更改 RootViewcontroller

    在我的iOS应用程序中 我需要更改应用程序之间窗口的rootviewController 因此 当我动态更改我的rootviewcontroller时 它会在更改之前轻拂视图 但我想要的是在更改rootviewcontroller时提供平滑
  • iOS 解决方案仅当图像尚未使用 SDWebImage 缓存在内存中时才加载带有动画的图像

    我已经为这个问题苦苦挣扎了几天 以前我使用 AFNetworking 类别来加载和缓存图像 但它的回调中没有提供缓存类型 所以我过去常常在每个控制器中跟踪哪些图像已经加载 我浏览了 SDWebImage 它提供了我正在寻找的东西 SDIma
  • iOS App布局错误,调用状态栏

    在主动通话和应用程序布局期间面临状态栏问题 我正在使用自动布局 当我运行应用程序 然后开始通话时 一切正常 UI 会随着状态栏的更改而正确缩放 但是 如果我首先开始通话 然后运行应用程序 应用程序屏幕会移动到底部 20pt 就像它们对新状态
  • 使用 UIImagePickerController 的应用程序在拍照后选择“使用照片”时冻结

    我现在正在开发一个简单的照片和视频捕获应用程序 该应用程序成功地允许用户按下按钮即可拍摄照片或视频 但是 一旦您完成拍摄照片或视频 它就会提供 2 个选项 重新拍摄 和 使用照片 或 使用视频 具体取决于您使用的选项 如果用户点击 重新拍摄
  • 尝试从独立的 Apple Watch 应用发出网络请求

    当应用程序是独立应用程序时 Apple Watch 是否无法进行网络通话 即使手表已连接到 iPhone 我正在使用新的独立应用程序目标 它没有附带可以发出 WatchConnectivity 请求的配对 iOS 应用程序 我十有八九收到
  • 在 Mac OS X Yosemite 10.10.1 上包含搜索路径

    我只是为了更改包含搜索路径顺序 我相信 I d like to change the include search path Especially I need usr local include first 但它不会因为重复而改变 我怎样
  • swift 中的负数模

    负数模如何在 swift 中工作 当我执行 1 3 时 它给出 1 但余数是 2 其中有什么问题 雨燕余数运算符 计算余数 整数除法 a b a a b b where 是截断整数除法 在你的情况下 1 3 1 1 3 3 1 0 3 1
  • Swift 如何设计 UIWebView 在 Story Board 中自动调整全屏大小

    我在 StoryBoard 中设计了一个 320x500 的 UIWebView 但是当在 Iphone 6 Plus 模拟器中运行时 我想要这个 webview 全屏或随设备屏幕缩放 如何在故事板中制作它 我在 ViewDidLoad 中
  • 在模拟器中运行应用程序时删除本地通知的 iOS 权限警报

    我正在尝试编写验收测试KIF https github com kif framework KIF在一个很早就要求本地通知权限的应用程序上 不幸的是 由于 iOS 模拟器安全原因无法使用 KIF 自动接受 iOS 权限警报 https gi
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • 如何自动为 Swift 类创建初始化程序?

    UPDATE 使用结构而不是类 struct 在很多方面都更好 它有自己的初始化器 这是我的模型课 是否有可能创建init自动方法 每次我都必须将所有变量一一初始化 这会花费很多时间 class Profile var id String
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self

随机推荐

  • Cordova本地通知Android插件2.2升级

    我正在使用 Phonegap Cordova 2 2 在 Android 上开发 提醒 应用程序 用户输入一个具体的提醒日期 我应该准时通知他 我使用 Android 的通知插件 但它支持早期版本的手机间隙 我按照本教程解决了cordova
  • Xamarin.Forms 中选项卡式页面中的标题截止

    Android 中的标签页标题被截断 但在 iOS 设备上运行良好 我正在使用这个代码 public Tabbar this BarTextColor Color Maroon New Feed var navigationNewFeed
  • 嵌套函数的实现

    我最近发现gcc允许定义嵌套函数 在我看来 这是一个很酷的功能 但我不知道如何实现它 虽然通过传递上下文指针作为隐藏参数来实现对嵌套函数的直接调用当然并不困难 但 gcc 还允许获取指向嵌套函数的指针并将该指针传递给任意其他函数 该函数又可
  • 向表中的每一行插入一个随机数

    我目前有一个包含大约 600 000 行的 oracle 表 lovalarm 我需要能够运行一个查询 该查询将循环遍历每一行并将字段 lovsiteid 更新为 14300 到 17300 之间的随机数 到目前为止我有 update lo
  • 一天的时间跨度怎么可能只有 8 个小时?

    我保存了以分钟为单位的持续时间 并希望输出 1 天 5 小时 30 分钟 目前 我将分钟添加到时间跨度中并执行如下操作 TimeSpan ts new TimeSpan 0 0 1800 0 Response Write ts Days d
  • 如何使用Beautifulsoup解析网站

    我是网络抓取新手 我想获取页面的 html 但是当我运行该程序时 我得到 html 为空并且控制台显示 javascript from bs4 import BeautifulSoup import requests import urll
  • 未指定网络安全配置,使用平台默认值

    我正在尝试打印值列表ListView来自网页 我有这两个权限
  • 在 Jquery 中创建无限循环

    HTML结构是这样的 ul class innerfade li style display none some Text li li style display none bla bla bla li li style display n
  • 如何在psql中切换数据库?

    在MySQL中 我使用了use database name 什么是psql相等的 在 PostgreSQL 中 您可以使用 connect客户端工具psql的元命令 connect DBNAME 或者简而言之 c DBNAME
  • 使用 NEST C# 在 Elastic Search 中使用多个索引进行全文搜索

    我正在尝试使用 NEST 客户端搜索多个索引 Elasticsearch 我只需点击以下链接 叠加帖子 如何使用 Nest ElasticSearch 在多个索引内进行搜索 唯一的区别是我的索引已经存在但没有返回 示例代码 using Sy
  • 单击子元素也会触发其父元素的单击事件[重复]

    这个问题在这里已经有答案了 Scenario 我的主干应用程序中的视图由几个部分组成boxes which are div elements 当用户单击一个框并按住鼠标按钮 500 毫秒时 我想显示一个delete左上角的按钮 当用户点击其
  • C++ 委托构造函数

    你好 我对 Java 比 C 更熟悉 test h class Test private int a b c public Test int a int b int c test c Test Test int a int b int c
  • 如何使用 FTP 下载 R 包

    我需要在无法访问 Internet 的 Windows 7 PC 上支持 R 环境 我想下载 最终下载到 DVD 所有 5 000 个软件包的当前版本 以供这台 PC 上的 R 用户使用 是否有 FTP 脚本或其他好方法来下载 R 包的所有
  • 如何每500ms获取一次相机预览帧

    我正在开发示例应用程序 它通过 android 中的相机为我提供指向图像或对象的颜色代码 我的应用程序与此应用程序类似 我正在使用this为此的应用程序代码 使用此应用程序代码 我可以连续获取相机预览帧 并为我提供当前预览帧的颜色代码 我想
  • NotificationHub推送通知返回:从Token Provider获取的Token错误

    我有 Wp8 1 Silverlight 应用程序 它从 Mobileservice 旧的 azure 服务 接收推送通知 WNS 因此 由于新功能 我想更新到新服务 我现在已经创建 升级了一个新服务器以使用应用程序服务 移动应用程序 并使
  • 使用 Grand Central Dispatch,我如何检查是否有一个块已经在运行?

    我正在使用 GCD 从互联网上进行一些后台加载 除了一点缺陷之外 这效果很好 在我的应用程序中 我有 3 个选项卡 当单击任何选项卡时 GCD 开始为相应的选项卡进行后台加载 如果用户决定从第一个选项卡转到第二个选项卡 当 GCD 已开始下
  • 为什么这个 Powershell ForEach 循环每次迭代都会变慢?

    我的代码按预期工作 我真的很想知道是否有人知道为什么我下面描述的事情可能会发生 也就是说 如果有人有任何进一步优化日常工作的想法 我会本着每天都是上学日的精神感激地接受他们 该脚本正在查询我们所有的域控制器以获取最新的最后登录特定 OU 中
  • 为什么 PHP 需要显式引用“$this”来调用成员函数?

    差不多就这样了 大多数面向对象编程语言中的作用域可以很好地解析符号 而无需显式引用当前实例 即 PHP 中的 this 为什么 PHP 要求我在每次调用同一个类中的成员函数之前都加上 this 来解析函数调用的范围 考虑 this gt s
  • 为什么数据未绑定到我的 WPF 应用程序中的标签

    我正在做一个简单的DataBinding应用在WPF 在这个应用程序中 无论我输入什么TextBox named txtName 应该出现在Label 为此 我使用了绑定WPF 但它没有受到约束
  • 带有几个小数位的倒计时,在 Swift 中使用 NSTimer

    例如 我想制作一个具有从 10 0000000 开始的计时器的应用程序 并且我希望它能够完美倒计时 到目前为止 这是我的代码 import UIKit class ViewController UIViewController IBOutl