Неправильно ли использовать viewController.view = newView вместо [viewController.view addSubView: newView];

Это неправильно использовать

viewController.view = newView;

вместо

[viewController.view addSubView: newView];

Первый удаляет дополнительный уровень автоматически созданного представления viewControllers, и если я создам newView, как это

UIView * newView = [[UIView alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]]; или как это UIView * newView = [[UIView alloc] initWithFrame: self.view.frame];

addSubview перемещает frame.origin.y на высоту строки состояния.

Кто-нибудь знает причину использования или неиспользования любого из методов?


person macasas    schedule 08.01.2010    source источник


Ответы (1)


Зачем тебе это нужно? Если вы хотите создать собственный интерфейс, вам следует добавить свои подпредставления в метод ViewControllers -viewDidLoad.
Я не рекомендую устанавливать представление VC вне метода -loadView.

Когда вы добавляете подпредставление и хотите, чтобы оно было точно такого же размера, как и представление VC, вам не следует использовать applicationFrame.

Я бы предпочел использовать [[UIView alloc] initWithFrame: self.view.frame];
Кроме того, вы должны обязательно применить маску автоматического изменения размера (гибкая ширина и высота) на случай изменения границ. Это, например, может произойти при отображении VC во всплывающем окне.

person Christian Schnorr    schedule 19.07.2011