我有一个加载非常简单的 View :

self.splashView = [[[NSBundle mainBundle] loadNibNamed:@"DownloadingData"
                                                        owner:nil options:nil] objectAtIndex:0];
[self.view addSubview:self.splashView];

它是纵向模式下的全高 4"视网膜 View ,状态栏、顶部栏和底部栏设置为无。它具有约束,使图像沿底部对齐。我在应用程序其他地方的 Controller 中使用类似的 View ,并调整它们的大小进入可用空间(使用 NavigationBar 和 TabBar)绝对没问题。但是,直接从 Nib 加载然后添加的这个 View 似乎忽略了约束。

该 View 旨在用于各种情况,例如有/没有导航栏/标签栏的任何组合。

我已经在 splashView 上尝试了 setNeedsLayoutsetNeedsUpdateConstraints 的各种组合。我还尝试在 View 本身上调用 layoutSubviews

任何人都可以提供一些建议吗?在这种情况下,我应该换一种方式吗?也许使用 viewController,或者在代码中手动添加约束?

最佳答案

好吧,我想这很明显:

self.splashView = [[[NSBundle mainBundle] loadNibNamed:@"DownloadingData"
                                                 owner:nil options:nil] objectAtIndex:0];
[self.view addSubview:self.splashView];
[self.splashView setFrame:self.view.frame];

然后自动调整大小/约束按预期工作。

关于objective-c - 从 NIB 加载并显示 addSubView 的 View 不遵循约束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12915370/

10-16 10:30