ทุกคนได้โปรดบอกฉันว่าฉันจะเปลี่ยนประเภทตัวอักษรและขนาดได้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: สำหรับสวิฟท์ 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)
ขอบคุณการใช้งาน Swift จาก @ audrey-gordeev
[mySegmentedControl setTintColor:onColor forTag:kTagOnState];
ไป[mySegmentedControl setTintColor:offColor forTag:kTagOffState];
แล้วก็ใช้ [mySegmentedControl setTitleTextAttributes:attributes forState:UIControlStateNormal];
สีที่ฉันเพิ่งจะหายไป
NSDictionary *attributes = @{NSFontAttributeName: [UIFont boldsystemFontOfSize:12.0f]};
boldSystemFontOfSize:
(เมืองหลวง S สำหรับระบบ)
ใช้ Appearance API ใน 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
UITextAttributeFont
ถูกคิดค่าเสื่อมราคา - ใช้NSFontAttributeName
แทน
UISegmentedControl
s
นี่คือคำตอบที่ได้รับการยอมรับในเวอร์ชัน 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)
[NSFontAttributeName: font]
ที่นี่ฉันได้อัปเดตสำหรับ 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)
// 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];
หากคุณมีข้อสงสัยใด ๆ ติดต่อฉัน
nil
ค่า
C # / Xamarin:
segment.SetTitleTextAttributes(new UITextAttributes {
Font = UIFont.SystemFontOfSize(font_size) }, UIControlState.Normal);
สวิฟต์ 4
let font = UIFont.systemFont(ofSize: 16)
UISegmentedControl.setTitleTextAttributes([NSFontAttributeName: font], for: .normal)
Instance member 'setTitleTextAttributes' cannot be used on type 'UISegmentedControl'; did you mean to use a value of this type instead?
iOS13 / Swift5
ดาเนียลชี้ให้ฉันเห็นวิธีที่ถูกต้อง ฉันใช้มันแบบนี้ -
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
การตั้งค่าขนาดตัวอักษร
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)
}
}
UISegmentedControl.appearance().setTitleTextAttributes(NSDictionary(objects: [UIFont.systemFont(ofSize: 16.0)],
forKeys: [kCTFontAttributeName as! NSCopying]) as? [AnyHashable : Any],
for: UIControlState.normal)
ในswift 5
,
let font = UIFont.systemFont(ofSize: 16)
UISegmentedControl.appearance().setTitleTextAttributes([NSAttributedString.Key.font: font], for: .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 เพิ่มชื่อควบคุมแบ่งส่วนของคุณในตำแหน่งของmysegmentedcontrol
UIFont *font = [UIFont systemFontOfSize:11.0f];
NSDictionary *attributes = [NSDictionary dictionaryWithObject:font
forKey:UITextAttributeFont];
[mySegmentedcontrol setTitleTextAttributes:attributes forState:UIControlStateNormal];
หวังว่ามันจะช่วย