2012-04-04 9 views
3

UIAppearanceを使用して、iOSアプリのグローバルスタイルを設定しています。私は明るい灰色のスタイルを構想しています。どのようにしてUISegmentedControlの選択されたセグメントをより暗くしますか?

[[UINavigationBar appearance] 
    setTintColor:[UIColor colorWithWhite:0.95 alpha 1.0] 
]; 

[[UISegmentedControl appearance] 
    setTintColor:[UIColor colorWithWhite:0.90 alpha 1.0] 
]; 

enter image description here

問題がUISegmentedControlの選択されたセグメント(ウノ)は、通常のセグメント(DOS)よりはるかに暗いではないということです。通常のセグメントはすでに右の暗闇にありますが、選択したセグメントのみを暗くしたいので、2つのセグメントの違いを人が分かります。暗い色合いは、同時に両方を暗くするので、うまくいかないでしょう。

答えて

1

最も簡単な方法は、セグメント化されたコントローラーのサブビューのリストを繰り返し、選択されたサブビューを見つけたら選択したサブビューを見つけたら、色合いを濃く調整する必要があります。

for (int x= 0; x <[aSegementedController.subviews count]; x++) 
{ 
    UIBarButtonItem *subview = [aSegementedController.subviews objectAtIndex:x]; 
    if ([subview isSelected]) 
    {    

     [subview setTintColor:darkerColor]; 
    } 
} 

これはUIAppearanceでは機能しませんが、私はそのレベルでカスタマイズ可能であるとは思われません。

+0

私はUISegmentedControlをサブクラス化しました。このサブクラス内から、どのように変更イベントをリッスンしてサンプルコードを実行できますか? UISegmentedControlが独自のスタイルを扱うのは、UIViewControllerが変更をリッスンしてからUISegmentedControlにその色合いを変更するように指示するのではなく、より洗練されたものになると思います。 – JoJo

+0

心配しないでください。私は、イベントを理解するために、モデルビューコントローラのパラダイムに反することに気付きました。 – JoJo

関連する問題