Your CustomSegmentedControl and CustomSegmentedControlsViewController are closely connected. So it takes a lot of time to recreate the first one as a separate control.
Why did you transfer a half of parameters from the first class to the second one? Such as offset, CapLocation.
Some extra parameters: TAG_VALUE
Why do you declare buttons as array of dictionaries of arrays and even make it static?
And finally WHY do you customise the buttons of your custom segmented control completely outside it? Ponder "custom segmenter control" meaning.