2016-09-21 20 views
0

ボタンの代わりにセグメント化されたコントロールを使用しています。選択したセグメントの背景色を設定する方法。背景色を変更しようとしていますが、色はすべてのセグメントに表示されます。iosで選択状態のセグメント制御でセグメントの色を設定する方法

+1

P1の。あなたのコードを投稿してください... –

+1

[選択したセグメントコントロールの色を変更する]の可能な複製(http://stackoverflow.com/questions/12103961/change-the-color-of-selected-segment-control) – pedrouan

答えて

0

あなたquestion.I私は3 titles.IプロパティとアクションでViewController.hするセグメントをフックアップしXIB.Alsoにおけるセグメント制御を設定するために、私は、サンプル1を試してみました。

ViewController.h

#import <UIKit/UIKit.h> 
@interface ViewController : UIViewController 
{ 
} 
@property (strong, nonatomic) IBOutlet UISegmentedControl *segmentBgColorChange; 
- (IBAction)actionChangeBGColor:(id)sender; 
@end 

ViewController.m

#import "ViewController.h" 
@interface ViewController() 
{ 
} 
@end 
@implementation ViewController 
@synthesize segmentBgColorChange; 

// Then in action methods 

- (IBAction)actionChangeBGColor:(id)sender 
{ 
    UISegmentedControl *seg = sender; 
    for (int i=0; i<[seg.subviews count]; i++) { 
    if ([[seg.subviews objectAtIndex:i]isSelected]) { 
     UIColor *bgColor = [UIColor redColor]; 
     [[seg.subviews objectAtIndex:i] setTintColor:bgColor]; 
    } else { 
     [[seg.subviews objectAtIndex:i] setTintColor:nil]; 
    } 
    } 
} 
0

まず、選択した色と選択解除した色を作成します。

UIColor *selectedColor = [UIColor blackColor]; 
UIColor *deselectedColor = [UIColor whiteColor]; 

次に、選択したセグメントインデックスを見つけて色を付けます。

for (UIControl *subview in [YourSegmentedControl subviews]) { 
    if ([subview isSelected]) 
     [subview setTintColor:selectedColor]; 
    else 
     [subview setTintColor:deselectedColor]; 
} 
+0

ここからの解決策は? http://stackoverflow.com/a/12104313/661022 – pedrouan

+0

いいえ、私のプロジェクトの1つからコピーされました。 –

+1

さて、私はそれをとにかく複製としてマークすることに投票しました、それは質の低い質問です – pedrouan

0

最初に選択したインデックスを設定すると、このコードが書き込まれます。あなたは、背景色を設定した場合

[segmentControl setSelectedSegmentIndex:0]; 

することは、あなたは色合いの色やフォントサイズを変更する場合は、このコードを書い

UIColor *selectedColor = [UIColor whiteColor]; 
    for (UIControl *subview in [segmentControl subviews]) { 

     [subview setTintColor:selectedColor]; 

    } 

このコードを記述します。

NSDictionary *attributes = @{NSFontAttributeName: [UIFont boldSystemFontOfSize:12.0f]}; 
[segmentControl setTitleTextAttributes:attributes 
           forState:UIControlStateNormal]; 

[segmentControl setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Helvetica-Bold" size:14.0], 
             NSForegroundColorAttributeName:[UIColor whiteColor]} 
           forState:UIControlStateNormal]; 
[segmentControl setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Helvetica-Bold" size:14.0], 
             NSForegroundColorAttributeName:[UIColor redColor]} 
           forState:UIControlStateSelected]; 
関連する問題