我试图将UIView定位在导航栏下方20pt,但是当我相对于视图控制器上的视图设置它时,它仍然位于20pt的导航栏下方,我不知道#39;我想硬编码。
是否可以将其远离导航栏?
答案 0 :(得分:4)
尝试在TopLayoutGuide中添加约束,
TopLayoutGuide和self.view之间的主要区别在于,顶部布局指南以bottom of status bar + bottom of navigation bar(if exist)
开头,但self.view始终从iOS 7中的(0,0)坐标开始,用于半透明导航栏。
因此,在您的情况下,您应该尝试从顶部布局指南固定。
答案 1 :(得分:2)
要以编程方式执行此操作,请使用视图控制器的topLayoutGuide
:
override func viewDidLoad() {
...
myView.topAnchor.constraint(equalTo: self.topLayoutGuide.bottomAnchor).isActive=true
...
}
答案 2 :(得分:0)
从iOS 11.0以编程方式可以使用view.safeAreaLayoutGuide
:
override func viewDidLoad() {
...
label.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive=true
}
答案 3 :(得分:-2)
所以你的UIView位于UIViewController中,对吗?
当您将初始内部UIView定义为该UIViewController时,是否可以将其坐标设置为距ViewController顶部20px?
例如:
//
// ViewControllerEx.swift
//
import UIKit
class ViewControllerExample: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var innerContainer = UIView(frame: CGRectMake(0, 20, self.view.bounds.width, self.view.bounds.height-20))
self.view.addSubview(innerContainer)
}
}