У меня есть приложение на основе навигации, в котором я размещаю свои пользовательские виды в виде навигации.
Во-первых, я хочу знать, как получить фрейм "вида навигации", чтобы я мог разместить свой собственный видна нем правильно.
Кроме того, я иногда скрываю панель навигации и хочу убедиться, что я правильно получаю информацию о кадре.(не с [[UIScreen mainScreen] bounds])
Во-вторых, как вообще получить доступ к кадру суперпредставления, чтобы я мог соответственно разместить представление?
Я попытался выполнить следующее безуспешно.
-(void) loadView {
[super loadView];
UIView* myView = [[UIView alloc] initWithFrame: CGRectZero];
self.view = myView;
self.view.frame = self.view.superview.frame;
[myView release];
}
или установка фрейма в layoutSubviews, но заметил, что layoutSubviews не вызывается.Я думаю, это потому, что у меня нет никаких подпредставлений в этом конкретном представлении?
Спасибо
-Edit-
с данными ответами, теперь я знаю, что мне нужноустановите view.frame в границы superview.
Проблема в том, что я не могу получить доступ к superview внутри viewDidLoad.
Я вижу, что superview правильно установлено в viewWillAppear, но не в viewDidLoad.
Я обнаружил, что viewDidLoad вызывается в разное время, например при нажатии pushViewController или при доступе к self.view
У меня есть следующий код, и viewDidLoad вызывается из nil == controller.view.superview.
if (nil == controller.view.superview) {
CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
controller.view.frame = frame;
[scrollView addSubview:controller.view];
}
Так как я не могу получить доступ к суперпредставлению из viewDidLoad, я не могу расположить представление так, как я это делал ранее в viewDidLoad.Это кажется таким неудобным и излишне сложным.
Любое предложение, пожалуйста?