2012-08-23 65 views
1

所以我有一些代碼,我希望將分段控制器的選定顏色設置爲我所要求的顏色,將未選定的顏色段設置爲其他顏色,請參閱如下:UISegmentedControl將不允許我編輯選定的顏色

//normal segment 
NSDictionary *normalAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
            [UIFont fontWithName:@"Rok" size:20.0],UITextAttributeFont, 
            [UIColor colorWithRed:75.0/255.0 green:75.0/255.0 blue:75.0/255.0 alpha:1.0], UITextAttributeTextColor, 
            [UIColor clearColor], UITextAttributeTextShadowColor, 
            [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, 
            nil];//[NSDictionary dictionaryWithObject: [UIColor redColor]forKey:UITextAttributeTextColor]; 
[segmentedControl setTitleTextAttributes:normalAttributes forState:UIControlStateNormal]; 

NSDictionary *selectedAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
            [UIFont fontWithName:@"Rok" size:20.0],UITextAttributeFont, 
            [UIColor whiteColor], UITextAttributeTextColor, 
            [UIColor clearColor], UITextAttributeTextShadowColor, 
            [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, 
            nil] ;//[NSDictionary dictionaryWithObject: [UIColor redColor]forKey:UITextAttributeTextColor]; 
[segmentedControl setTitleTextAttributes:selectedAttributes forState:UIControlStateSelected]; 

那麼我在做什麼錯了?直接改變選定片段的顏色非常困難真的很令人沮喪!我很想使用一排按鈕!

感謝任何人的幫助。

+0

變化UISegmentedControl選擇段色 –

回答

1

在UISegmentedControl的值更改事件添加以下代碼:

for (int i=0; i<[sender.subviews count]; i++) 
{ 
    if ([[sender.subviews objectAtIndex:i]isSelected]) 
    {    
    UIColor *tintcolor=[UIColor redColor]; //your requiremnent color here 
    [[sender.subviews objectAtIndex:i] setTintColor:tintcolor]; 
    break; 
    } 
} 
+0

這是真棒,非常感謝這一點。我怎樣才能讓它在加載時進行這種顏色調整?如果我將該代碼放入卸載方法中,它尚未更改所選的索引,因此進行了生物更新 - 理想情況下,所選段上的這種色調在首次加載時需要應用。此外,我注意到當你點擊另一個元素時,它保持紅色,你如何使調整回到先前的顏色選擇?或者是否必須明確將其設置爲新顏色才能恢復所做的更改? – Creights

+0

非常感謝你! – ThePunisher

相關問題