2016-04-07 17 views
-1

UISegmentedControlの無効セグメントの色合いを変更する方法。 私はsegmentedControl.subviewsをソートするための解決策を得ました。以下は速いコードです。客観的なcに変換してください。UISegmentedControlの無効セグメントの色合いを変更する方法

@IBAction func indexChanged(sender: UISegmentedControl) { 

let sortedViews = sender.subviews.sort({ $0.frame.origin.x < $1.frame.origin.x }) 

for (index, view) in sortedViews.enumerate() { 
    if index == sender.selectedSegmentIndex { 
     view.tintColor = UIColor.blueColor() 
    } else { 
     view.tintColor = UIColor.lightGrayColor() 
    } 
} 

} 

let sortedViews = segmentedControlOutletVariable.subviews.sort({ $0.frame.origin.x < $1.frame.origin.x }) 
sortedViews[0].tintColor = UIColor.blueColor() 

答えて

1

チェック以下のコード:。

1.Itは、選択されたセグメントに緑色を割り当てる(セグメント2)選択されなく、それらに

2.Assigns青色は有効(セグメント1 3)。 。無効になっているセグメントの

3.Assignsライトグレー色(セグメント-4)は

-(IBAction)segmentedTapped:(UISegmentedControl*)sender{ 

for(int i=0;i<[sender.subviews count];i++) 
{ 
    if ([[sender.subviews objectAtIndex:i]isEnabled]) 
    { 


     if([[sender.subviews objectAtIndex:i]isSelected]) 
     { 
      UIColor *tintcolor=[UIColor greenColor]; 
      [[sender.subviews objectAtIndex:i] setTintColor:tintcolor]; //sets green color for selected segment which is enabled 
     } 
     else 
     { 
      [[sender.subviews objectAtIndex:i] setTintColor:[UIColor blueColor]]; //sets blue colour for remaining segments which are enabled but not selected. 

     } 
    } 
    else 
    { 
     [[sender.subviews objectAtIndex:i] setTintColor:[UIColor lightGrayColor]];//sets ight gray for disabled segment. 
    } 
} 
} 

結果は以下のようになります。 enter image description here

あなたがここから得ることができるより多くの情報が必要な場合:

UISegmentedControl selected segment color

+0

実際には、無効セグメントの色合いを変更したいです。ヘルプhelp –

+0

どのようにsegmentcontrolサブビュー配列インデックスをソートするには? –

+0

@jasonfrank:私のコードは、無効なセグメントに薄い灰色を割り当てます。よろしいですか? –

関連する問題