2013-03-22 14 views
13

私は デフォルトのUISegmentedControlの外観を元に戻す方法は?

、次のコードを使用して

UIImage *segmentSelected = [[UIImage imageNamed:@"Segment_Unselected.png"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 12)]; 
UIImage *segmentUnselected = [[UIImage imageNamed:@"Segment_Selected.png"] 
           resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 12)]; 

[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected 
              forState:UIControlStateNormal 
             barMetrics:UIBarMetricsDefault]; 
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected 
              forState:UIControlStateSelected 
             barMetrics:UIBarMetricsDefault]; 

[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
                 [UIColor colorWithRed:77.0/255.0 green:45.0/255.0 blue:8.0/255.0 alpha:1],UITextAttributeTextColor, 
                 [UIColor clearColor], UITextAttributeTextShadowColor, 
                 [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset, 
                 [UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0], UITextAttributeFont, nil] forState:UIControlStateNormal]; 

[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
                 [UIColor whiteColor],UITextAttributeTextColor, 
                 [UIColor clearColor], UITextAttributeTextShadowColor, 
                 [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset, 
                 [UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0], UITextAttributeFont, nil] forState:UIControlStateSelected]; 

[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"SegmentedControl_Divider.png"] 
          forLeftSegmentState:UIControlStateNormal 
           rightSegmentState:UIControlStateNormal 
             barMetrics:UIBarMetricsDefault]; 
をUISegmentedControlの外観を設定していると私は完璧な出力 enter image description here

を得たが、今、私は enter image description here

よう UISegmentのデフォルトの外観を設定したいです

私は何をしなければならないのですか?

+0

@BillWoodger私はこのコードを実装していましたが、私が実際に見つけたものを変更しました。コードにはっきりと見えるものがありました。コピーペーストエラーだと思われます。私はこのコードを使用しようとする人はすべて間違いを見つけるだろうと知っていますが、他の時間を節約しようとしていました:-) –

+0

@BillWoodgerあなたは正しいです。私はちょうどここでコメントの問題を言及している必要があります。間違った画像は上記の 'segmentSelected'と' segmentUnselected'変数に割り当てられます。 –

+0

@AdilMalikあなたはいつでもあなた自身を答えとして追加することができます。答えはコメントよりも目に見えます。質問を編集すると、答えが質問を反映していない理由が不思議な将来の読者を混乱させる可能性があります(この例では必ずしもそうではありません)。私はあなたが答えを追加することをお勧めします、そして私たちは物事をきれいに保つためにこれらのコメントをすべて削除することができます。 –

答えて

14

あなたはセグメントの画像を設定し、デフォルトのコントローラ

UIImage *segmentSelected = [[UIImage imageNamed:nil]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 12)]; 
UIImage *segmentUnselected = [[UIImage imageNamed:nil]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 12)]; 
    
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected 
                                forState:UIControlStateNormal 
                                barMetrics:UIBarMetricsDefault]; 
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected 
                                forState:UIControlStateSelected 
                                barMetrics:UIBarMetricsDefault]; 
        
[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
           [UIColor colorWithRed:77.0/255.0 green:45.0/255.0 blue:8.0/255.0 alpha:1],UITextAttributeTextColor, 
           [UIColor clearColor], UITextAttributeTextShadowColor, 
           [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset, 
           [UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0], UITextAttributeFont, nil] forState:UIControlStateNormal]; 
        
[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
           [UIColor whiteColor],UITextAttributeTextColor, 
           [UIColor clearColor],UITextAttributeTextShadowColor,  
           [NSValue valueWithUIOffset:UIOffsetMake(0, 0)],UITextAttributeTextShadowOffset, 
           [UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0], UITextAttributeFont, nil] forState:UIControlStateSelected]; 
         
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:nil] 
           forLeftSegmentState:UIControlStateNormal 
           rightSegmentState:UIControlStateNormal 
           barMetrics:UIBarMetricsDefault]; 
+0

これはまさに私の言うことです... – wasim

+0

@tosa ?? –

+0

@WasimMalek:行った。 –

2

割り当てた画像のコードを削除します。上記のコードでnilに

+0

しかし、私は1つのビューのためのデフォルトのセグメントを使用したい、他の私はカスタムセグメントをしたい、 私はアプリのrootviewcontrollerでこのコードを返すので、どのようにデフォルトのセグメントの外観をリロードする? –

+0

他のビューの場合は、コードをそのまま残します。デフォルトのセグメントを表示するには、インタフェースビルダーを使用するか、コードごとにデフォルトのセグメントを追加します。 –

+0

私はこれをインタフェースビルダーで試してみましたが、デフォルトのセグメントを表示していますが、アプリを実行すると、以前の設定のセグメントが表示されます。 :( –

4

セットimagenameのと、デフォルトの動作

2

にしたいのViewControllerにこのコードを入れたいビューの上に置きますコントローラをゼロにする。その後、一度シミュレータをきれいにしてから実行してください。 ....

関連する問題