Вопрос по ios, objective-c, uiview – Изменить UIViewController

4

Я пытаюсь отобразить представление xib viewController с его представлением, отображаемым под фиксированным заголовком баннера (0,0,320,44), который является imageView, добавленным в окне приложения.

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

Пока что я попробовал:

Resizing the XIB view to the appropriate frame size (0,0,320,416), both with dot notation and setter.

Changing the frame in viewDidLoad with self.view.frame = CGRectMake(0, 44, 320, 416);

Но это не работает. Любое предложение?

@Mudit: мне нужно, чтобы он оставался на экране во время навигации по нескольким контроллерам представления. Это требование проекта, который я делаю. Fabrizio Prosperi
Есть ли причина для вас использовать несколько контроллеров представления? Мне кажется, вам нужно только несколько просмотров. В любом случае вы можете оставить стандартные полноэкранные режимы просмотра контроллера и добавить подпредставления под заголовком заголовка. В случае только одного контроллера представления меньше работы, чем в случае нескольких. Matic Oblak
почему вы добавляете изображение в окно приложения. вы можете добавить его в viewController xib. Mudit Bajpai
@Matic вы правы, но я хочу использовать xibs, и я не хочу возиться с загрузкой xibs из комплекта во время выполнения, поэтому я выбрал этот способ. В противном случае, вы абсолютно правы, я мог бы использовать только программно построенные представления, и изменение размера было бы проще. Fabrizio Prosperi

Ваш Ответ

2   ответа
1

IViewController не работает вviewDidLoad из-за вызова[window makeKeyAndVisible], который обычно называется после вашегоviewDidLoad, Этот вызов изменит кадрwindow.rootViewController для выравнивания рамки окна. Вы можете проверить это, изменив view.frame в UIViewController ПОСЛЕ[window makeKeyAndVisible]и изменения останутся.

viewWillAppear а такжеviewDidAppear называются в[window makeKeyAndVisible] но после изменения размера кадра представления.

Предостережение заключается в том, что только самый верхний контроллер, который являетсяrootViewController рамка его вида автоматически изменяется. Это НЕ влияет на любойchildViewControllers прикреплен кrootViewController.

16

viewWillAppear

- (void)viewWillAppear:(BOOL)animated
{
     self.view.frame = CGRectMake(0, 44, 320, 416);
    [super viewWillAppear:animated];
}
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded[super viewWillAppear];
Error: User Rate Limit Exceeded Fabrizio Prosperi
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы