UISegmentedControl 글꼴 크기 변경
폰트 타입과 사이즈를 변경하는 방법을 가르쳐 주세요.UISegmentedControl
?
저도 같은 문제에 부딪혔어요.이 코드는 전체 세그먼트 컨트롤의 글꼴 크기를 설정합니다.폰트 타입의 설정에도, 같은 것이 기능하는 경우가 있습니다.이 기능은 iOS5+에서만 사용할 수 있습니다.
Obj 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
.
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)
스위프트 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)
@audrey-gordeev의 Swift 구현 덕분에
iOS 5.0+에서 모양 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 / UIApearance _ 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)
Swift 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, Swift 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)
인swift 5
,
let font = UIFont.systemFont(ofSize: 16)
UISegmentedControl.appearance().setTitleTextAttributes([NSAttributedString.Key.font: font], for: .normal)
// Set font-size and font-femily the way you want
UIFont *objFont = [UIFont fontWithName:@"DroidSans" size:18.0f];
// Add font object to Dictionary
NSDictionary *dictAttributes = [NSDictionary dictionaryWithObject:objFont forKey:NSFontAttributeName];
// Set dictionary to the titleTextAttributes
[yourSegment setTitleTextAttributes:dictAttributes forState:UIControlStateNormal];
문의사항이 있으시면 연락주세요.
C# / Xamarin :
segment.SetTitleTextAttributes(new UITextAttributes {
Font = UIFont.SystemFontOfSize(font_size) }, UIControlState.Normal);
2021년의 정답입니다.구문이 변경되었습니다.
12년 전 답변(편집 내용도)이 깨졌습니다.
그냥...
let _font = UIFont.systemFont(ofSize: 10)
UISegmentedControl.appearance()
.setTitleTextAttributes([NSAttributedString.Key.font: _font], for: .normal)
높이를 올바르게 변경하고 싶을 가능성이 매우 높습니다.
import UIKit
class SmallerSegmentedControl: UISegmentedControl {
override init(frame: CGRect) {
super.init(frame: frame)
common()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
common()
}
func common() {
let _font = UIFont.systemFont(ofSize: 10)
UISegmentedControl.appearance()
.setTitleTextAttributes([NSAttributedString.Key.font: _font], for: .normal)
}
override var intrinsicContentSize:CGSize {
var s = super.intrinsicContentSize
s.height = 24
return s
}
}
다니엘이 나에게 올바른 길을 가리켰다.이렇게 썼는데...
float scaleFactor = 0.8f;
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]
initWithFrame:CGRectMake(10, 70, 300/scaleFactor,35)];
[segmentedControl insertSegmentWithTitle:@"..." atIndex:0 animated:NO];
[segmentedControl insertSegmentWithTitle:@"..." atIndex:1 animated:NO];
[segmentedControl insertSegmentWithTitle:@"..." atIndex:2 animated:NO];
segmentedControl.transform = CGAffineTransformMakeScale(scaleFactor, 1);
CGPoint segmentedControlCenter = segmentedControl.center;
segmentedControlCenter.x = self.center.x;
segmentedControl.center = segmentedControlCenter;
UISegmentedControl.appearance().setTitleTextAttributes(NSDictionary(objects: [UIFont.systemFont(ofSize: 16.0)],
forKeys: [kCTFontAttributeName as! NSCopying]) as? [AnyHashable : Any],
for: UIControlState.normal)
스위프트 4
let font = UIFont.systemFont(ofSize: 16)
UISegmentedControl.setTitleTextAttributes([NSFontAttributeName: font], for: .normal)
의 내선번호UISegmentedControl
글꼴 크기를 설정합니다.
extension UISegmentedControl {
@available(iOS 8.2, *)
func setFontSize(fontSize: CGFloat) {
let normalTextAttributes: [NSObject : AnyObject]!
if #available(iOS 9.0, *) {
normalTextAttributes = [
NSFontAttributeName: UIFont.monospacedDigitSystemFontOfSize(fontSize, weight: UIFontWeightRegular)
]
} else {
normalTextAttributes = [
NSFontAttributeName: UIFont.systemFontOfSize(fontSize, weight: UIFontWeightRegular)
]
}
self.setTitleTextAttributes(normalTextAttributes, forState: .Normal)
}
}
UILabel의 실제 글꼴은 UISegmentedControl에서 시작하는 각 뷰를 반복적으로 검사하여 확인할 수 있습니다.이게 최선의 방법인지는 모르겠지만, 효과가 있어요.
@interface tmpSegmentedControlTextViewController : UIViewController {
}
@property (nonatomic, assign) IBOutlet UISegmentedControl * theControl;
@end
@implementation tmpSegmentedControlTextViewController
@synthesize theControl; // UISegmentedControl
- (void)viewDidLoad {
[self printControl:[self theControl]];
[super viewDidLoad];
}
- (void) printControl:(UIView *) view {
NSArray * views = [view subviews];
NSInteger idx,idxMax;
for (idx = 0, idxMax = views.count; idx < idxMax; idx++) {
UIView * thisView = [views objectAtIndex:idx];
UILabel * tmpLabel = (UILabel *) thisView;
if ([tmpLabel respondsToSelector:@selector(text)]) {
NSLog(@"TEXT for view %d: %@",idx,tmpLabel.text);
[tmpLabel setTextColor:[UIColor blackColor]];
}
if (thisView.subviews.count) {
NSLog(@"View has subviews");
[self printControl:thisView];
}
}
}
@end
위 코드에서는 UILabel의 텍스트 색상을 설정했을 뿐이지만, 폰트 속성을 잡거나 설정할 수도 있다고 생각합니다.
이것은 목적 c를 위해 my segmented control 대신 세그먼트 제어 이름을 추가합니다.
UIFont *font = [UIFont systemFontOfSize:11.0f];
NSDictionary *attributes = [NSDictionary dictionaryWithObject:font
forKey:UITextAttributeFont];
[mySegmentedcontrol setTitleTextAttributes:attributes forState:UIControlStateNormal];
도움이 되었으면 좋겠다
언급URL : https://stackoverflow.com/questions/2280391/change-font-size-of-uisegmentedcontrol
'source' 카테고리의 다른 글
Microsoft Excel이 .csv 파일에 Diacritics를 망칠까요? (0) | 2023.04.10 |
---|---|
맨 아래에 있는 WPF 데이터그램 빈 행 (0) | 2023.04.10 |
NSInvocation for Dummies? (0) | 2023.04.10 |
"'NSString *' 유형의 매개 변수로 'constant NSString *'을(를) 전송하면 한정자가 삭제됩니다." 경고 (0) | 2023.04.10 |
PowerShell 문자열 보간 구문 (0) | 2023.04.10 |