TZSpeedometer lets you display the meter with both positive & negative readings. It also supports marking to be shown inside or outside the gauge/meter. Highly customizable and easy to use.



To run the example project, clone the repo, and run pod install from the Example directory first.


  • Swift 4.2 and above
  • iOS 11 and above


TZSpeedometer is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod 'TZSpeedometer'

For Carthage, Add this to Cartfile

github "tahseen0amin/TZSpeedometer"


Please check code in Example Project to see how you can customize the TZSpeedometer.

For creating a new TZSpeedometer

let purpleMeter = TZSpeedometer(frame: CGRect(x: 0, y: 30, width: self.view.bounds.width, height:  height))
purpleMeter.backgroundColor = .purple

You can also customize the UI of the TZSpeedometer using : MeterAppearance. Some of the examples are below

var apperance = MeterAppearance()
apperance.indicators.positiveIndicatorColor =
apperance.indicators.baseGirth = 25
apperance.indicators.indicatorGirth = 10
apperance.readingText.gaugeBackgroundColor = UIColor.brown
apperance.readingText.font = UIFont(name: "Menlo", size: 22)!
apperance.markingsText.textColor = .black
apperance.markingsText.font = UIFont(name: "Menlo", size: 11)!
purpleMeter.appearance = apperance

You can also customize the maximum and minimum reading of the meter and provide scale delta using Meter.

let meter = Meter(minimumReading: -80, maximumReading: 100, unitText: "km/hr")
meter.scaleDelta = 10
purpleMeter.meter = meter

Also, keep in mind, to use the delta which will divide the meter marking in a way that maximum and minimum reading are visible on the meter. Make sure (maximumReading - minimumReading) / scaleDelta is Int.

(NOTE: unit Text label is not shown in the screenshot below. please check Example project for more options.)

Simply Set the reading on the meter.

purpleMeter.reading = 50