Animating UILabel Font Size Change Animating UILabel Font Size Change ios ios

Animating UILabel Font Size Change


You can change the size and font of your UILabel with animation like bellow .. here I just put the example of how to change the font of UILabel with transform Animation ..

    yourLabel.font = [UIFont boldSystemFontOfSize:35]; // set font size which you want instead of 35    yourLabel.transform = CGAffineTransformScale(yourLabel.transform, 0.35, 0.35);     [UIView animateWithDuration:1.0 animations:^{        yourLabel.transform = CGAffineTransformScale(yourLabel.transform, 5, 5);    }];

I hope this helpful to you..


For 2017 onwards....

Swift 3.0, 4.0

UIView.animate(withDuration: 0.5) {     label.transform = CGAffineTransform(scaleX: 1.1, y: 1.1) //Scale label area }

Critical:

The critical point to avoid blurring is you must begin with the biggest size, and shrink it. Then expand to "1" when needed.

For quick "pops" (like a highlight animation) it's OK to expand beyond 1 but if you are transitioning between two sizes, make the larger size the "correct" normal one.


I've created UILabel extension in Swift.

import UIKitextension UILabel {    func animate(font: UIFont, duration: TimeInterval) {        // let oldFrame = frame        let labelScale = self.font.pointSize / font.pointSize        self.font = font        let oldTransform = transform        transform = transform.scaledBy(x: labelScale, y: labelScale)        // let newOrigin = frame.origin        // frame.origin = oldFrame.origin // only for left aligned text        // frame.origin = CGPoint(x: oldFrame.origin.x + oldFrame.width - frame.width, y: oldFrame.origin.y) // only for right aligned text        setNeedsUpdateConstraints()        UIView.animate(withDuration: duration) {            //L self.frame.origin = newOrigin            self.transform = oldTransform            self.layoutIfNeeded()        }    }}

Uncomment lines if the label text is left or right aligned.