Начинается так, что мне нравится:
Но потом я добавляю сегмент и происходит вот это:
Ширина задается в IB, а не в коде.
Все, что мне нужно, это метод расчета ширины на лету. В итоге получится что-то вроде этого:
control.width = (labelWidths + marginWidths);
// where marginWidths = (marginWidth * control.numberOfSegments)