之前的两个答案都是正确的,但有些不完整。他们确实引导我朝着正确的方向前进。我最后做的是:
根据我的阅读,为这个视图创建一个单独的 xib 文件更容易(其余的我使用故事板)。
创建一个扩展 UIView 的子类(在我的情况下为 PrefsBarView),并在界面构建器中将此类分配给 UIView。
在父视图中,执行以下操作:
(xib 名称是 PrefsBar)
PrefsBarView *prefsBarView = [[[NSBundle mainBundle] loadNibNamed:@"PrefsBar" owner:self options:nil] objectAtIndex:0];
[prefsBarView populatePrefsBar];
在这种情况下,populatePrefsBar 是我创建的用于填充首选项状态的方法。
prefsBarView.frame = CGRectMake(
self.navigationController.view.frame.size.width - prefsBarView.frame.size.width,
self.navigationController.view.frame.size.height - prefsBarView.frame.size.height - self.navigationController.navigationBar.frame.size.height - [UIApplication sharedApplication].statusBarFrame.size.height,
prefsBarView.frame.size.width, prefsBarView.frame.size.height );
[_myMainView addSubview:prefsBarView];
上述步骤用于确保视图位于可见区域的底部。您必须考虑状态栏的大小(在屏幕的最顶部)和导航栏的大小(如果您使用的话)。此外,您不应该对值进行硬编码......它可能不适用于视网膜显示器。
理想的情况是 PrefsBarView 内发生所有调整大小,但是根据 Apple 文档,您不应该访问父视图的导航控制器(或者我理解),因此在所有视图控制器中都会重复此操作。