Ios 包括导航栏时将视图放置在顶部的约束

Ios 包括导航栏时将视图放置在顶部的约束,ios,swift,uiviewcontroller,uipickerview,nslayoutconstraint,Ios,Swift,Uiviewcontroller,Uipickerview,Nslayoutconstraint,关于这个问题的各种答案都在堆栈溢出上,但我似乎无法让它工作 我希望UIPickerView的宽度等于superview帧宽度的90%,高度等于superview帧宽度的35% 框架高度,水平居中 并使其顶部与superview顶部相等,但位于导航栏下方(最后一个约束是我遇到的困难) 此时,选择器视图的顶部似乎位于导航栏的后面。我已经尝试添加了edgesForExtendedLayout=.Top和extendedLayoutIncludesOpaqueBars=false,以便选择器视图位于导航

关于这个问题的各种答案都在堆栈溢出上,但我似乎无法让它工作

我希望
UIPickerView
的宽度等于superview帧宽度的90%,高度等于superview帧宽度的35% 框架高度,水平居中 并使其顶部与superview顶部相等,但位于导航栏下方(最后一个约束是我遇到的困难)

此时,选择器视图的顶部似乎位于导航栏的后面。我已经尝试添加了
edgesForExtendedLayout=.Top
extendedLayoutIncludesOpaqueBars=false
,以便选择器视图位于导航栏下。我还尝试向约束添加一个常量
NSLayoutConstraint(项:somePickerView,属性:.Top,relatedBy:.Equal,toItem:superview,属性:.TopMargin,乘数:1.0,常数:navigationController?.navigationBar.frame.height)
但这并没有充分移动选择器视图

class ViewController: UIViewController {

    let superview = self.view

    override func viewDidLoad() {

        super.viewDidLoad()

        edgesForExtendedLayout = .Top
        extendedLayoutIncludesOpaqueBars = false

        somePickerView = UIPickerView()
        somePickerView.translatesAutoresizingMaskIntoConstraints = false

        superview.addSubview(somePickerView)

        superview.addConstraint(NSLayoutConstraint(item: somePickerView, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .Width, multiplier: 1, constant: superview.frame.width * 0.90))
        superview.addConstraint(NSLayoutConstraint(item: somePickerView, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .Height, multiplier: 1, constant: superview.frame.height * 0.35))
        superview.addConstraint(NSLayoutConstraint(item: somePickerView, attribute: .CenterX, relatedBy: .Equal, toItem: superview, attribute: .CenterX, multiplier: 1, constant: 0))

        // the following constraint's not working as expected:
        superview.addConstraint(NSLayoutConstraint(item: somePickerView, attribute: .Top, relatedBy: .Equal, toItem: superview, attribute: .TopMargin, multiplier: 1.0, constant: 0))

    }
}

是否有限制将拾取器视图放置在顶部但在导航栏下方的建议?

请考虑在问题文本(段落等)中添加一些格式,因为很难看到你实际上在问什么。另外,您所说的“superview”是视图控制器的视图吗?TroyT是的superview是视图控制器的self.view(代码在viewDidLoad方法中执行)。约束在上面的代码中:.CenterX、.CenterY和.Top。