I’m using a UISegmentedControl to show headers for a table view. When the orientation changes, the headers are resized depending on the labels in the table view underneath. Despite being connected up in IB, I have to move the phone around a bit to fire a orientationChanged notification and update the widths. I’ve even tried setting the first segment width to 0 in IB, then again in viewDidLoad, but all headers are the same width when the view loads. I’ve tried using performSelector:afterDelay to make sure the view is actually on screen, and also calling setNeedsLayout and setNeedsDisplay, but nothing seems to work. I simply have to jiggle the phone around.
Is this a bug anyone has experience with or am I making a daft mistake?
I’m setting the width as below:
[segSortOrder setWidth:0.0 forSegmentAtIndex:0];
The only solution I came up with for this was to use
performSelector:afterDelayand usingself.view.bounds.size.widthwith a variable amount of padding (how much is trial and error for each ViewController. Not ideal but it does the job.