【问题标题】:How to add a safe area programmatically如何以编程方式添加安全区域
【发布时间】:2018-05-25 20:27:51
【问题描述】:

当您打开视图时,它会如下图所示,

i Phone x open view

i Phone 8 open view

对于 iphone x,我想以编程方式在当前视图中添加一个安全区域。

尝试的源码如下。

UIView *view = self.view;

if (@available(iOS 11.0, *)) {
    UILayoutGuide * guide = view.safeAreaLayoutGuide;
    [view.topAnchor constraintEqualToAnchor:guide.topAnchor].active = YES;
    [view.bottomAnchor constraintEqualToAnchor:guide.bottomAnchor].active = YES;
}

我想应用这个来源,但我不知道该怎么做。

请回答我的问题!

【问题讨论】:

  • 这个来源似乎也适用。 UIWindow *window = UIApplication.sharedApplication.keyWindow; CGFloat topPadding = window.safeAreaInsets.top; CGFloat bottomPadding = window.safeAreaInsets.bottom;

标签: ios objective-c ios11 xcode9 safearealayoutguide


【解决方案1】:

这是安全区域布局的示例代码。在 Objective-C 中试试这个,看看:

UIView * myView = // initialize view using IBOutlet or programtically

myView.backgroundColor = [UIColor red];
myView.translatesAutoresizingMaskIntoConstraints = NO;

UILayoutGuide * guide = self.view.safeAreaLayoutGuide;
[self.myView.leadingAnchor constraintEqualToAnchor:guide.leadingAnchor].active = YES;
[self.myView.trailingAnchor constraintEqualToAnchor:guide.trailingAnchor].active = YES;
[self.myView.topAnchor constraintEqualToAnchor:guide.topAnchor].active = YES;
[self.myView.bottomAnchor constraintEqualToAnchor:guide.bottomAnchor].active = YES;

// Refresh myView and/or main view
[self.view layoutIfNeeded];
//[self.myView layoutIfNeeded];

参考来自:Use Safe Area Layout programmatically

结果:

【讨论】:

  • myView.translatesAutoresizingMaskIntoConstraints = NO;如果使用这个源,画面会完全乱码。
  • @Nam - 我已经实际尝试过这段代码,这是它的结果(红色视图)。它对我来说很好。
  • @Krunal 不要一遍又一遍地重新发布您的答案,您应该投票以重复关闭问题。
猜你喜欢
  • 1970-01-01
  • 2018-05-26
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多