iOS 9对导航条的编程约束?
我试图以编程方式将约束设置到UIViewController导航栏的顶部,但我看不到如何使其正常工作。这是我的密码:iOS 9对导航条的编程约束?,ios,swift,nslayoutconstraint,programmatically-created,Ios,Swift,Nslayoutconstraint,Programmatically Created,我试图以编程方式将约束设置到UIViewController导航栏的顶部,但我看不到如何使其正常工作。这是我的密码: func setup() { let containerView = UIView() containerView.backgroundColor = .red containerView.translatesAutoresizingMaskIntoConstraints = false let payeeNameTextField = UITe
func setup() {
let containerView = UIView()
containerView.backgroundColor = .red
containerView.translatesAutoresizingMaskIntoConstraints = false
let payeeNameTextField = UITextField()
payeeNameTextField.backgroundColor = .green
payeeNameTextField.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(containerView)
view.addSubview(payeeNameTextField)
//iOS 9 Constraints
//x,y,w,h
// Constraint To Nav Bar
containerView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
containerView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
containerView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
containerView.heightAnchor.constraint(equalToConstant: 20).isActive = true
// Constraint to Bottom Anchor
payeeNameTextField.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
payeeNameTextField.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
payeeNameTextField.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
payeeNameTextField.heightAnchor.constraint(equalToConstant: 50).isActive = true
}
我知道设置topAnchor是错误的,但我试图搞乱这一点,似乎无法让红色背景显示出来
提前感谢您的任何意见 我想这对我很有用。红色视图显示在状态栏下方,它应该显示在状态栏下方。您发布的代码没有定义导航栏,只是一个红色视图,高度为20点,连接到视图控制器视图的顶部。您是对的,我知道它显示在导航栏下方。有没有关于如何从导航栏锁定的想法。我只是不能把语法放在一起,把它固定在导航栏上,而不是视图的顶部锚。这取决于一件事-导航栏是如何定义的?你是怎么创造的?在代码中,通过IB添加,还是通过IB菜单“嵌入”?(我猜这不是最后一个,因为您的代码可以工作。)我没有创建导航栏,我正在以编程方式完成所有工作。我尝试将我的导航栏定义为:
let-navBar=navigationController?.navigationItem.titleView?.topAnchor
,将其展开:guard-let-newNav=navBar-else{return}
,并将其用作y约束:containerView.topAnchor.constraint(equalTo:newNav).isActive=true
…但这似乎不起作用..我会给出一个答案-如果不起作用,我会删除它。对于我的应用程序,我通过IB菜单结束了导航控制器,您的代码运行良好。所以,如果我的答案不起作用,我会说在那里试试。我想这对我很有效。红色视图显示在状态栏下方,它应该显示在状态栏下方。您发布的代码没有定义导航栏,只是一个红色视图,高度为20点,连接到视图控制器视图的顶部。您是对的,我知道它显示在导航栏下方。有没有关于如何从导航栏锁定的想法。我只是不能把语法放在一起,把它固定在导航栏上,而不是视图的顶部锚。这取决于一件事-导航栏是如何定义的?你是怎么创造的?在代码中,通过IB添加,还是通过IB菜单“嵌入”?(我猜这不是最后一个,因为您的代码可以工作。)我没有创建导航栏,我正在以编程方式完成所有工作。我尝试将我的导航栏定义为:let-navBar=navigationController?.navigationItem.titleView?.topAnchor
,将其展开:guard-let-newNav=navBar-else{return}
,并将其用作y约束:containerView.topAnchor.constraint(equalTo:newNav).isActive=true
…但这似乎不起作用..我会给出一个答案-如果不起作用,我会删除它。对于我的应用程序,我通过IB菜单结束了导航控制器,您的代码运行良好。所以如果我的答案不起作用,我会说在那里试试。