I have a UILabel
which shows the output of a timer in the format MM:ss:SS
(minutes, seconds, centiseconds), however it "shakes" from left to right as the width of the centiseconds changes - "11" is narrower than "33" for example.
Is there any way I can mitigate this? I've tried centring it, giving it a fixed width but they haven't seemed to help.
Since iOS 9.0, the system font uses proportional digits. If you want monospaced digits, there's a variant font which you can obtain using +[UIFont monospacedDigitSystemFontOfSize:weight:]
. This only works for the system font.
If you want to work with another font, you try to ask for a monospaced variant, but there may not be one. Given a UIFont
, you can request its fontDescriptor
, then ask that for a similar font descriptor that's monospaced (not just for digits) using -[UIFontDescriptor fontDescriptorWithSymbolicTraits:]
and UIFontDescriptorTraitMonoSpace
. You can then create a new font by passing the new font descriptor to +[UIFont fontWithDescriptor:size:]
.
However, I doubt there's a monospace variant of Impact. It's not suitable for your purpose.