Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Make a segment of a segmented control invisible

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

like image 661
Xavi Valero Avatar asked Nov 21 '11 08:11

Xavi Valero


People also ask

How do you hide a segment in Swift?

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.

What is a segmented control?

A segmented control is a linear set of two or more segments, each of which functions as a button. Within a segmented control, all segments are usually equal in width. Like buttons, segments can contain text or images. Segments can also have text labels beneath them (or beneath the control as a whole).


2 Answers

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];
like image 84
Tibidabo Avatar answered Sep 19 '22 20:09

Tibidabo


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.

like image 21
EmptyStack Avatar answered Sep 23 '22 20:09

EmptyStack