Ios 是否可以固定UIView';从导航栏的顶部到底部是什么?
我试图将UIView设置为导航栏下的20pt,但当我将其相对于视图控制器上的视图设置时,它仍然位于导航栏下的20pt,我不想硬编码它Ios 是否可以固定UIView';从导航栏的顶部到底部是什么?,ios,cocoa-touch,uiview,autolayout,nslayoutconstraint,Ios,Cocoa Touch,Uiview,Autolayout,Nslayoutconstraint,我试图将UIView设置为导航栏下的20pt,但当我将其相对于视图控制器上的视图设置时,它仍然位于导航栏下的20pt,我不想硬编码它 是否可以将其放置在远离导航栏的位置?以便您的UIView位于UIViewController中,对吗 当您为该UIViewController定义初始内部UIView时,能否将其坐标设置为离开ViewController顶部20px 例如: // // ViewControllerEx.swift // import UIKit class ViewCont
是否可以将其放置在远离导航栏的位置?以便您的UIView位于UIViewController中,对吗 当您为该UIViewController定义初始内部UIView时,能否将其坐标设置为离开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)
}
}
尝试使用TopLayoutGuide添加约束 TopLayoutGuide和self.view之间的主要区别在于,top layout guide以状态栏底部+导航栏底部(如果存在)开始,但对于半透明导航栏,self.view始终从iOS 7中的(0,0)坐标开始 所以,在您的情况下,您应该尝试从顶部布局指南固定
要以编程方式执行此操作,请使用视图控制器的
topLayoutGuide
:
override func viewDidLoad() {
...
myView.topAnchor.constraint(equalTo: self.topLayoutGuide.bottomAnchor).isActive=true
...
}
在iOS 11.0中,您可以通过编程方式使用查看。安全区域布局指南:
override func viewDidLoad() {
...
label.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive=true
}
您将如何以编程方式执行此操作?UIViewController已提供类别属性以访问topLayoutGuide和bottomLayoutGuide接口UIViewController(UILayoutSupport)//这些对象可以用作NSLayoutConstraint API属性(非原子、只读、保留)id topLayoutGuide NS\u AVAILABLE\u IOS(7\u 0)中的布局项;属性(非原子、只读、保留)id bottomLayoutGuide NS\u可用\u IOS(7\u 0);请看下面的答案: