繁体   English   中英

UIView 从 xib 作为子视图加载:如何正确设置框架/大小?

[英]UIView loaded from xib as subview : How to set the frame/size properly?

我的 iphone 应用程序有一个小问题(即使我之前已经完成了 objective-c,我对 iphone 编程还是很陌生)。

我的主 window 中有一个名为centerView的 UIView。 我创建了一个与 xib 文件链接的 UIViewController 的 singleton 子类(我们称之为FooViewController )。 我的目标是将关联视图加载为子视图(使用 centerView 的整个框架的 centerView)。

问题:FooViewController 控制的视图不使用其父视图的框架。

我试图添加:

  • self.view.frame = self.view.superview.frame self.view.superview.frame initWithNib的“自定义初始化”部分... FooViewController的方法

  • [[[FooViewController sharedController] view] setFrame:centerView.frame]当我将视图添加到 centerview 时( [centerView addSubView:[[FooViewController sharedController] view]] )(我在这条线之前和之后都试过)

但我无法获得良好的行为(即良好的尺寸)。 有多个与此类问题相关的问题,但我无法在其中找到答案,因此:

  • 你知道我该如何解决吗?
  • [可选] 与 xib 链接的 UIViewController 的实例化如何工作? 必须有一个资源文件,其中指明了 xib 的名称? 或者它是否在寻找与 class 同名的 xib?

在此先感谢您的帮助。

从 NIB 加载时,视图会在视图控制器的loadView方法中加载,而不是在初始化程序中。 由于您不应该真正覆盖loadView ,尤其是。 如果您从 NIB 加载它,您应该尝试在视图控制器的viewDidLoad方法中执行 #1 ( self.view.frame = self.view.superview.frame )。 当然,您应该确保在执行此语句时将视图添加到超级视图中。 您还需要确保此时已正确设置超级视图的框架。

另一个可以尝试的地方是viewWillAppear:方法。 到那时,您的视图的超级视图很可能已经正确设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM