Kronos is an NTP client library written in Swift. It supports sub-seconds precision and provides a stable monotonic clock that won’t be affected by changes in the clock.
This is an example app that displays the monotonic Clock.now
on the left and the system clock (initially out of date) on the right.
Calling Clock.sync
will fire a bunch of NTP requests to up to 5 of the servers on the given NTP pool (default is time.apple.com
). As soon as we get the first response, the given closure is called but the Clock
will keep trying to get a more accurate response.
Clock.sync { date, offset in
// This is the first sync (note that this is the fastest but not the
// most accurate run
print(date)
}
Clock.now
is a monotonic NSDate that won’t be affected by clock changes.
NSTimer.scheduledTimerWithTimeInterval(1.0, target: self,
selector: #selector(Example.tick),
userInfo: nil, repeats: true)
@objc func tick() {
print(Clock.now) // Note that this clock will get more accurate as
// more NTP servers respond.
}
Add Kronos to your Podfile
:
pod ‘Kronos’
Add Kronos to your Pacakge.swift
:
.package(name: “Kronos”, url: “https://github.com/MobileNativeFoundation/Kronos.git”, .upToNextMajor(from: “TAG”)),
Add Kronos to your WORKSPACE
:
http_archive(
name = “Kronos”,
sha256 = “”,
strip_prefix = “Kronos-TAG/”,
url = “https://github.com/MobileNativeFoundation/Kronos/archive/TAG.tar.gz”,
)
If you want to have a custom camera using SwiftUI and not using the UIPickerController that will display the original ...
CameraView allows you to have a SnapChat-style screen on your SwiftUI app that gives a realtime view of the iPhone ...
SwiftUI has proven to be a really awesome new framework to build and design apps in a quick and reliable ...
See the swiftui branch for updates. An iOS calendar library for displaying calendar events in a week view.