ReservoirVolumeHUDView.swift 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. //
  2. // ReservoirVolumeHUDView.swift
  3. // Naterade
  4. //
  5. // Created by Nathan Racklyeft on 5/2/16.
  6. // Copyright © 2016 Nathan Racklyeft. All rights reserved.
  7. //
  8. import UIKit
  9. public final class ReservoirVolumeHUDView: LevelHUDView, NibLoadable {
  10. override public var orderPriority: HUDViewOrderPriority {
  11. return 4
  12. }
  13. @IBOutlet private weak var volumeLabel: UILabel!
  14. public class func instantiate() -> ReservoirVolumeHUDView {
  15. return nib().instantiate(withOwner: nil, options: nil)[0] as! ReservoirVolumeHUDView
  16. }
  17. override public func awakeFromNib() {
  18. super.awakeFromNib()
  19. volumeLabel.isHidden = true
  20. }
  21. override public func levelDidChange() {
  22. super.levelDidChange()
  23. switch level {
  24. case .none:
  25. volumeLabel.isHidden = true
  26. case let x? where x > 0.25:
  27. volumeLabel.isHidden = true
  28. case let x? where x > 0.10:
  29. volumeLabel.textColor = tintColor
  30. volumeLabel.isHidden = false
  31. default:
  32. volumeLabel.textColor = tintColor
  33. volumeLabel.isHidden = false
  34. }
  35. }
  36. private lazy var timeFormatter: DateFormatter = {
  37. let formatter = DateFormatter()
  38. formatter.dateStyle = .none
  39. formatter.timeStyle = .short
  40. return formatter
  41. }()
  42. private lazy var numberFormatter: NumberFormatter = {
  43. let formatter = NumberFormatter()
  44. formatter.numberStyle = .decimal
  45. formatter.maximumFractionDigits = 0
  46. return formatter
  47. }()
  48. public func setReservoirVolume(volume: Double, at date: Date) {
  49. if let units = numberFormatter.string(from: volume) {
  50. volumeLabel.text = String(format: LocalizedString("%@U", comment: "Format string for reservoir volume. (1: The localized volume)"), units)
  51. let time = timeFormatter.string(from: date)
  52. caption?.text = time
  53. accessibilityValue = String(format: LocalizedString("%1$@ units remaining at %2$@", comment: "Accessibility format string for (1: localized volume)(2: time)"), units, time)
  54. }
  55. }
  56. public override func tintColorDidChange() {
  57. super.tintColorDidChange()
  58. volumeLabel.textColor = tintColor
  59. }
  60. }