Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change the width of Master in UISplitViewController

The iPad programming guide says that the splitView's left pane is fixed to 320 points. But 320 pixels for my master view controller is too much. I would like to reduce it and give more space to detail view controller. Is it possible by anyway?

Link to the document which speaks about fixed width.

like image 439
Raj Pawan Gumdal Avatar asked Jun 01 '10 10:06

Raj Pawan Gumdal


1 Answers

If you subclass UISplitViewController, you can implement -viewDidLayoutSubviews and adjust the width there. This is clean, no hacks or private APIs, and works even with rotation.

- (void)viewDidLayoutSubviews {     const CGFloat kMasterViewWidth = 240.0;      UIViewController *masterViewController = [self.viewControllers objectAtIndex:0];     UIViewController *detailViewController = [self.viewControllers objectAtIndex:1];      if (detailViewController.view.frame.origin.x > 0.0) {         // Adjust the width of the master view         CGRect masterViewFrame = masterViewController.view.frame;         CGFloat deltaX = masterViewFrame.size.width - kMasterViewWidth;         masterViewFrame.size.width -= deltaX;         masterViewController.view.frame = masterViewFrame;          // Adjust the width of the detail view         CGRect detailViewFrame = detailViewController.view.frame;         detailViewFrame.origin.x -= deltaX;         detailViewFrame.size.width += deltaX;         detailViewController.view.frame = detailViewFrame;          [masterViewController.view setNeedsLayout];         [detailViewController.view setNeedsLayout];     } } 
like image 136
jrc Avatar answered Sep 21 '22 08:09

jrc