Make a segment of a segmented control invisible

扶醉桌前 提交于 2019-12-04 19:23:15


Is it possible to make one segment of a segmented control invisible?


Though it seems there is no way to hide a segment in a segment control, you could remove a segment from the segment control using removeSegmentAtIndex:animated: method. You need either insertSegmentWithImage:atIndex:animated: or insertSegmentWithTitle:atIndex:animated: method to insert the segment again.

Instead of hiding/showing a segment you could consider enabling/disabling it using setEnabled:forSegmentAtIndex: method.


You can't hide it but you can make its width very very small which will make it invisible for the user. It has to be > 0 because 0 = automatic width.

[yourSegmentedControl setWidth:0.1 forSegmentAtIndex:1];

To be in the safe side, also disable it to reduce the chance of selection to zero.

[mapTypeSC setEnabled:NO forSegmentAtIndex:1];


Yes ,try this it's working for me ,It's only one line of code ,

Objective C

 [self.segmentControl removeSegmentAtIndex:0 animated:NO];


 segmentControl.removeSegment(at: 0, animated: false)

The code remove 0 index segment and show only one segment invisible.

Hope this helps.


If you want only one segment then why to use segment control, you can directly use a button..