Изменение размера UINavigationController? - PullRequest
3 голосов
/ 24 мая 2011

Я хочу, чтобы мой навигационный контроллер занимал только половину экрана. Это возможно? В IB, когда я перетаскиваю, это заставляет меня заполнить весь экран, я не могу изменить его размер. Если это невозможно, есть ли альтернатива? Спасибо.

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Вы можете, но вы можете сделать это только в iOS 5, потому что, когда я пытался выполнить любой тип манипуляции с прямым просмотром в контроллере UINavigation, кроме нажатия или выталкивания другого контроллера представления. Контроллер навигации не будет отображать их.

Вот что вам нужно сделать.

-(void)viewDidLoad {
     UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:[[UIViewController alloc] initWithNibName:nil bundle:nil]];
     //Used to recieve callbacks (like shouldAutorotateToInterfaceOrientation:)
     [self addChildViewController:navController];
     //View manipulation
     navController.view.frame = CGRectInset(navController.view.frame, 20, 20);
     [self.view addSubview:navController.view];
     //Calls all the standard methods (viewDidLoad,viewDidUnload,etc.)
     [navController didMoveToParentViewController:self];
}

Также, если вы являетесь зарегистрированным разработчиком, есть действительно хорошее видео о контейнерах контроллеров представления, которое может быть вам полезно с WWDC последних лет.

0 голосов
/ 04 июня 2013

Исходя из того, что вы написали, я предполагаю, что у вас есть @property в заголовочном файле.Что-то вроде:

@property (nonatomic, strong) IBOutlet UINavigationController *navController;

Затем подключите этот IBOutlet к вашему навигационному контроллеру в вашем xib-файле.В этом же файле xib есть представление, которое связано с владельцем файла.Установите размеры этого представления в конструкторе интерфейсов, чтобы в вашем случае занимать только половину экрана.Затем вы добавите navController в качестве подпредставления этого представления.Если у вас также есть viewController, уже добавленный в xib-файл в navController, то в viewDidLoad выполните:

-(void)viewDidLoad {
     [self addChildViewController:self.navController];
     [self.view addSubview:self.navController.view];
     [self.navController didMoveToParentViewController:self];
}

В противном случае, если вы программно устанавливаете rootviewcontroller, выполните:

-(void)viewDidLoad {
      self.navController = [[UINavigationController alloc] initWithRootViewController:yourViewController];
      [self addChildViewController:self.navController];
      [self.view addSubview:self.navController.view];
      [self.navController didMoveToParentViewController:self];
}

У вас естьдобавить self.navController как childViewController, чтобы он принимал размеры представления, в которое он добавляется.Добавление его в качестве подпредставления недостаточно для изменения размера представления.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...