[ios] UISegmentedControl의 글꼴 크기 변경

누구든지 글꼴 유형과 크기를 UISegmentedControl어떻게 변경할 수 있습니까?



답변

나는 같은 문제에 부딪쳤다. 이 코드는 전체 세그먼트 컨트롤의 글꼴 크기를 설정합니다. 글꼴 유형을 설정하는 데 비슷한 기능이있을 수 있습니다. iOS5 이상에서만 사용할 수 있습니다.

오브제 C :

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

편집 : UITextAttributeFont더 이상 사용되지 않습니다- NSFontAttributeName대신 사용하십시오.

편집 # 2 : Swift 4의로 NSFontAttributeName변경되었습니다 NSAttributedStringKey.font.

스위프트 5 :

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

스위프트 4 :

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

스위프트 3 :

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

스위프트 2.2 :

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

@ audrey-gordeev의 Swift 구현 덕분에


답변

iOS 5.0 이상에서 Appearance API를 사용하십시오.

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

링크 :
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


답변

허용되는 답변의 Swift 버전은 다음과 같습니다.

스위프트 3 :

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

스위프트 2.2 :

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


답변

다른 옵션은 컨트롤에 변환을 적용하는 것입니다. 그러나 컨트롤 테두리를 포함하여 모든 것을 축소합니다.

segmentedControl.transform = CGAffineTransformMakeScale(.6f, .6f);


답변

스위프트 스타일 :

UISegmentedControl.appearance().setTitleTextAttributes(NSDictionary(objects: [UIFont.systemFontOfSize(14.0)], forKeys: [NSFontAttributeName]), forState: UIControlState.Normal)


답변

여기에 iOS8 용으로 업데이트되었습니다

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


답변

XCode 8.1, 스위프트 3

import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        UISegmentedControl.appearance().setTitleTextAttributes(NSDictionary(objects: [UIFont.systemFont(ofSize: 24.0)],
        forKeys: [NSFontAttributeName as NSCopying]) as? [AnyHashable : Any],
        for: UIControlState.normal)
    }
}

숫자 값을 변경하십시오. (ofSize: 24.0)

시사