以编程方式布局视图时 UIViewController 中的前 20px 填充

Posted

技术标签:

【中文标题】以编程方式布局视图时 UIViewController 中的前 20px 填充【英文标题】:Top 20px padding in UIViewController when laying out view programatically 【发布时间】:2018-12-24 08:43:03 【问题描述】:

我有一个自定义视图,我要在 viewDidLoad() 中添加到视图控制器 -

var customView : CustomView = CustomView()

override func viewDidLoad()
  super.viewDidLoad()
  self.view.addSubView(customView)
  customView.topAnchor.constraint(equalTo : view.safeAreaLayoutGuide.topAnchor).isActive = true //Tried this but nothing happens
 

我在视图顶部有一个奇怪的 20 像素填充。我希望自定义子视图从导航栏下方开始。我尝试了多种方法,但无法让 20px 顶部填充消失。如何始终将视图的顶部限制在导航栏下方?

【问题讨论】:

【参考方案1】:

不要依赖viewDidLoad 方法中的safeAreaLayoutGuide - 因为视图尚未在其中布局。如果你在viewDidLayoutSubviews 中这样做(比方说),你应该得到有效值。

【讨论】:

以上是关于以编程方式布局视图时 UIViewController 中的前 20px 填充的主要内容,如果未能解决你的问题,请参考以下文章

多个时如何以编程方式访问相对布局中的文本视图或进度条?

以编程方式修改自动布局约束时视图不更新

以编程方式更改视图尺寸时,自动布局似乎不起作用

以编程方式添加控制器视图时自定义自动布局约束被破坏

当以编程方式完成时,视图不会反映任何变化

以编程方式设置滚动视图的布局参数时出现异常