10

So I have the following code to set the segmented control background color:

UISegmentedControl * segmentedCtrl = [[UISegmentedControl alloc] initWithFrame:CGRectMake(0, 0, 150, 35)];
[segmentedCtrl setBackgroundImage:[UIImage imageNamed:@"btn-gradient-brown"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[segmentedCtrl setBackgroundImage:[UIImage imageNamed:@"btn-gradient-brown"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[segmentedCtrl insertSegmentWithImage:[UIImage imageNamed:@"icon-home.png"] atIndex:0 animated:NO];
[segmentedCtrl insertSegmentWithImage:[UIImage imageNamed:@"icon-star.png"] atIndex:1 animated:NO];

It all works fine except that when I click on the segment I can see the blue button highlighted. How do I disable this highlight? Here's a screenshot of my problem:

enter image description here

D-eptdeveloper
  • 2,430
  • 1
  • 16
  • 30
adit
  • 32,574
  • 72
  • 229
  • 373

2 Answers2

15

UISegmentControl has a Divider between two segments. By using the following code you can change the divider background.

[segmentedCtrl setDividerImage:[UIImage imageNamed:@"divider_selected.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[segmentedCtrl setDividerImage:[UIImage imageNamed:@"divider_normal.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

Where divider_selected.png is a image which you used for selected state. Where as divider_normal.png is a image which you used for normal state.

Hope this will help....

Nandha
  • 6,746
  • 2
  • 23
  • 33
  • what would be the size of divider image ?? – nr5 Dec 06 '13 at 06:51
  • I had 5 × 56. In this height may vary according to your segment control height. – Nandha Dec 09 '13 at 05:24
  • I am doing that, but my segmentedCtrl's frame gets enlarged by 5 pixels! What am I doing wrong? Are there any *requirements* for the divider image (like transparency, etc)? – Gik Apr 14 '14 at 14:00
2

Set your same background images for the highlighted state:

[segmentedCtrl setBackgroundImage:[UIImage imageNamed:@"btn-gradient-brown"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
Amy Worrall
  • 16,250
  • 3
  • 42
  • 65