2012-02-28 85 views
4

我使用下面的代碼來實現,並隨後改變每個段的字體大小在UISegmented控制如何改變分段控制的字體大小和防止它變回默認的大小變化的段

//Set up segment control 
UISegmentedControl *tempSegmentControl = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@"Friends",@"Popular", nil]]; 
tempSegmentControl.frame = CGRectMake(-8, -1, 336, 30); 

self.segmentControl = tempSegmentControl; 
[self.segmentControl setWidth:168 forSegmentAtIndex:0]; 
[self.segmentControl setWidth:168 forSegmentAtIndex:1]; 
self.segmentControl.selectedSegmentIndex = 0; 
[self.segmentControl addTarget:self action:@selector(toggleControls:) forControlEvents:UIControlEventValueChanged]; 
[self.segmentControl setSegmentedControlStyle:UISegmentedControlStylePlain]; 

//TO CHANGE FONT SIZE OF EACH SEGMENT 
for (id segment in [self.segmentControl subviews]) 
{ 
    for (id label in [segment subviews]) 
    { 
     if ([label isKindOfClass:[UILabel class]]) 
     { 
      [label setTextAlignment:UITextAlignmentCenter]; 
      [label setFont:[UIFont boldSystemFontOfSize:14]]; 
     } 
    }   
} 

這個工程開始(見下圖)

enter image description here

然而,當我點擊「流行」選項卡(未激活選項卡)上,字體大小似乎回到原來的默認字體大小

enter image description here

我能做些什麼來防止字體大小更改回默認的大小?

+0

你不能設置Interface Builder中的初始字體? – Besi 2012-03-13 02:31:16

回答

9

可能不是最乾淨的方法,但它工作,如果您在UISegmentedControl控件的「值更改」事件上運行for循環。

更新: 這是正確的方式,可以在iOS 5及更高版本:

NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont boldSystemFontOfSize:14], UITextAttributeFont, nil]; 
[self.segmentControl setTitleTextAttributes:textAttributes forState:UIControlStateNormal]; 
+1

稍後將在iOS7上棄用UITextAttributeFont。改爲使用NSFontAttributeName。 – Teffi 2014-11-26 08:56:05

1

​​

退房此其ANS

codeButton.segmentedControlStyle = UISegmentedControlStyleBar; 
codeButton.momentary = YES; 
相關問題