Change font size of UISegmentedControl Change font size of UISegmentedControl ios ios

Change font size of UISegmentedControl


I ran into the same issue. This code sets the font size for the entire segmented control. Something similar might work for setting the font type. Note that this is only available for iOS5+

Obj C:

UIFont *font = [UIFont boldSystemFontOfSize:12.0f];NSDictionary *attributes = [NSDictionary dictionaryWithObject:font                                                       forKey:NSFontAttributeName];[segmentedControl setTitleTextAttributes:attributes                                 forState:UIControlStateNormal];

EDIT: UITextAttributeFont has been deprecated - use NSFontAttributeName instead.

EDIT #2: For Swift 4 NSFontAttributeName has been changed to NSAttributedStringKey.font.

Swift 5:

let font = UIFont.systemFont(ofSize: 16)segmentedControl.setTitleTextAttributes([NSAttributedString.Key.font: font], for: .normal)

Swift 4:

let font = UIFont.systemFont(ofSize: 16)segmentedControl.setTitleTextAttributes([NSAttributedStringKey.font: font],                                        for: .normal)

Swift 3:

let font = UIFont.systemFont(ofSize: 16)segmentedControl.setTitleTextAttributes([NSFontAttributeName: font],                                        for: .normal)

Swift 2.2:

let font = UIFont.systemFontOfSize(16)segmentedControl.setTitleTextAttributes([NSFontAttributeName: font],     forState: UIControlState.Normal)

Thanks to the Swift implementations from @audrey-gordeev


Use the Appearance API in iOS 5.0+:

[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"STHeitiSC-Medium" size:13.0], UITextAttributeFont, nil] forState:UIControlStateNormal];

Links:http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIAppearance_Protocol/Reference/Reference.html#//apple_ref/doc/uid/TP40010906

http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5


Here is a Swift version of the accepted answer:

Swift 3:

let font = UIFont.systemFont(ofSize: 16)segmentedControl.setTitleTextAttributes([NSFontAttributeName: font],                                        for: .normal)

Swift 2.2:

let font = UIFont.systemFontOfSize(16)segmentedControl.setTitleTextAttributes([NSFontAttributeName: font],     forState: UIControlState.Normal)