【发布时间】:2019-02-24 23:33:30
【问题描述】:
我的代码有问题。我的应用程序显示在 iOS 安全区域布局指南中,但是我想强制它显示“外部”。我搜索了互联网,不幸的是我发现只有“反向”问题。我不使用界面生成器,我以编程方式创建所有视图。我有一个主视图控制器,它会随应用程序自动启动,然后我从这里开始创建我所有的东西。我的界面构建器只显示了这个视图控制器和分配给它的视图。有趣的是,当在 IB 中查看时,视图似乎是全屏的。
是的,我尝试打开/关闭视图的“使用安全区域布局指南”选项。我也尝试改用 topLayoutGuide 和 bottomLayout guide 并将主视图约束到它们,但它仍然失败:
- (void)viewDidLoad {
[super viewDidLoad];
UILayoutGuide *margins = self.view.safeAreaLayoutGuide;
[NSLayoutConstraint activateConstraints:@[[self.view.topAnchor constraintEqualToAnchor:self.topLayoutGuide.topAnchor],
[self.view.bottomAnchor constraintEqualToAnchor:self.bottomLayoutGuide.bottomAnchor]
]];
//...
}
这是我在 IB 中看到的:
1) 视图
2) 安全区域 - 我无法以任何方式摆脱它:
3) 结果(模拟器/真机):
我也做过 RTFM,但是 a) 我很笨,b) 我太累了,c) 两者都有
任何帮助将不胜感激:)
【问题讨论】:
-
你使用约束吗?
-
基本上我在任何地方都使用自动布局,但我没有任何代码对此视图设置任何约束,所以我相信这是由 iOS 本身以某种方式安排的。
-
好的,我想我找到了问题所在。我创建了一个新项目,一切正常。我开始检查项目设置等方面的差异,发现新的没有使用Launchimage,但我的应用程序使用了。所以我尝试从我的应用程序中删除启动图像并开始工作。从那里我开始检查发生了什么,最后我发现我的应用程序缺少 iPhone X 的 Launchimage 资源。我添加了一个指定大小的资源,现在它工作正常,不需要额外的更改。如果没有正确的启动图像,iOS 似乎会自动回退到更小的屏幕。
标签: ios objective-c safearealayoutguide