There is no "space-filling behaviour" for UIViews in general. They get the size they are assigned. All you can do is:
- set their autoresizing mask to control how they are resized if their
parent view changes its size
- set their UIViewContentMode to control how they resize their content
(important for UIImageViews, for example)
In your case, you could do the following to get a UIToolbar containing a UISegmentedControl that is as wide as the toolbar:
(void)viewDidLoad
{
[super viewDidLoad];
// Create the toolbar; place it at the bottom of the view.
UIToolbar *myToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height-44, self.view.bounds.size.width, 44)];
myToolbar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
[self.view addSubview:myToolbar];
// Create the UISegmentedControl with two segments and "Bar" style. Set frame size to that of the toolbar minus 6pt margin on both sides, since 6pt is the padding that is enforced anyway by the UIToolbar.
UISegmentedControl *mySegmentedControl = [[UISegmentedControl alloc] initWithFrame:CGRectInset(myToolbar.frame, 6, 6)];
// Set autoresizing of the UISegmentedControl to stretch horizontally.
mySegmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
[mySegmentedControl insertSegmentWithTitle:@"First" atIndex:0 animated:NO];
[mySegmentedControl insertSegmentWithTitle:@"Second" atIndex:1 animated:NO];
mySegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
// Create UIBarButtonItem with the UISegmentedControl as custom view, and add it to the toolbar's items
UIBarButtonItem *myBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:mySegmentedControl];
myToolbar.items = [NSArray arrayWithObject:myBarButtonItem];
}