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];
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)