我有一个基于导航的应用程序,我将我的自定义视图放置在导航视图中。
首先,我想知道如何获取“导航视图”的框架,以便我可以正确地放置我的自定义视图。
此外,有时我会隐藏导航栏,并希望确保正确获取框架信息。(不使用[[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没有被调用。我猜这是因为在这个特定的视图中没有任何子视图?
谢谢
-编辑-
根据给出的答案,我现在知道我需要将view.frame设置为superview的bounds。
问题是我无法在viewDidLoad中访问superview。
我可以看到superview在viewWillAppear中被正确设置,但在viewDidLoad中没有。
我发现viewDidLoad在各种时候被调用,例如通过pushViewController推送或访问self.view
我有以下代码,并且当nil == controller.view.superview时,viewDidLoad会被调用。
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中访问superview,所以我无法像之前在viewDidLoad中布局视图那样做。这似乎很不方便并且过于复杂。
请问有什么建议吗?