我的iphone应用程序存在一个小问题(即使我之前已经完成了Objective-c,我对iphone编程也很陌生)。
我的主窗口中有一个名为centerView
的UIView。
我创建了一个与xib文件链接的UIViewController(我们称之为FooViewController
)的单例子类。我的目标是将相关视图作为子视图加载(使用centerView的整个框架的centerView)。
问题:FooViewController控制的视图不使用其超级视图的帧。
我试图添加:
self.view.frame = self.view.superview.frame
在fooViewController的initWithNib ...方法的“自定义初始化”部分
[[[FooViewController sharedController] view] setFrame:centerView.frame]
当我将视图添加到centerview([centerView addSubView:[[FooViewController sharedController] view]]
)时(我在此行之前和之后尝试过)
但我无法获得良好的行为(即良好的规模)。有很多问题与这类问题有关,但我无法在其中找到答案:
提前感谢您的帮助。
答案 0 :(得分:1)
从NIB加载时,视图将加载到视图控制器的loadView
方法中,而不是在初始化程序中。因为你不应该真正覆盖loadView
,尤其是如果您从NIB加载它,您应该尝试在视图控制器的self.view.frame = self.view.superview.frame
方法中执行#1(viewDidLoad
)。当然,您应该确保在执行此语句时将视图添加到超级视图中。您还需要确保此时正确设置了superview的帧。
另一个可以尝试此操作的地方是viewWillAppear:
方法。很可能那时你的视图的超级视图已经正确设置了。