9

私の質問は、UINavigationBar と UIToolbar の UISegmentedController の違いに関するものです。次のように UISegmentedControl をナビゲーション バーにドロップすると:

navigationBar.barStyle = UIBarStyleBlackTranslucent;

すべては順調です。UISegmentedControl は、選択されたオプションを少し暗い黒で識別します。しかし、UISegmentedControl を UIToolbar にドロップすると、ツールバーから色や半透明度が取得されません。手動で tintColor を設定すると、UISegmentedControl は選択されたものと選択されていないものを区別しなくなります。

確かに、UIToolbar にドロップする前に、UISegmentedControl を UIBarButtonItem にラップする必要があります。それが UISegmentedControl が正しくないように見える (半透明の黒の背景に青) 理由の一部であるかどうか疑問に思っています。

toolbar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:segmentedControl]; 
NSArray *toolbarItems = [[NSArray alloc] initWithObjects:item,nil];
toolbar.items = toolbarItems;

確かに、内部ナビゲーションとコントローラー ツールバーを使用しているため、私のコードは正確に記述されたものではありませんが、一般的なロジックは同じです。UIToolbar の UISegmentedControl を黒の半透明スタイルにする方法がわかりません-選択したセグメントと選択していないセグメントを明確に区別します。

4

1 に答える 1

7

次のように見えます: segmentedController.tintColor = [UIColor darkGrayColor];あなたの問題を解決します。

「依存関係」を取り除くには、UISegmentedControl をサブクラス化し、コンストラクターで色合いを設定します。

CustomSegmentedControl.m

- (id)initWithItems:(NSArray*)items {
    if( self = [super initWithItems:items] ) {
         self.tintColor = [UIColor darkGrayColor];
    }
    return self;
}
于 2010-01-03T10:04:45.250 に答える