2017-07-14 126 views
0

我试图中心我UIPickerView一个view这里面inputView内 - 看起来像这样约束内部没有inputView申请pickerView

  • inputView
    • MyView的
      • UIPickerView

问题是无论我使用什么约束都不会改变任何东西。

我试过到目前为止:

let centerXConstraint = myPickerView.centerXAnchor.constraint(equalTo: myView.centerXAnchor) 
let centerYConstraint = myPickerView.centerYAnchor.constraint(equalTo: myView.centerYAnchor) 

NSLayoutConstraint.activate([centerXConstraint, centerYConstraint]) 

而且还旧的方式:

let centerXConstraint = NSLayoutConstraint(item: myPickerView, attribute: .centerX, relatedBy: .equal, toItem: self.myView, attribute: .centerX, multiplier: 1.0, constant: 0.0) 
let centerYConstraint = NSLayoutConstraint(item: myPickerView, attribute: .centerY, relatedBy: .equal, toItem: self.myView, attribute: .centerY, multiplier: 1.0, constant: 0.0) 

NSLayoutConstraint.activate([centerXConstraint, centerYConstraint]) 

而且也是这样:

myPickerView.topAnchor.constraint(equalTo: myView.topAnchor).isActive = true 
myPickerView.bottomAnchor.constraint(equalTo: myView.bottomAnchor).isActive = true 
myPickerView.centerXAnchor.constraint(equalTo: myView.centerXAnchor).isActive = true 
myPickerView.widthAnchor.constraint(equalTo: myView.widthAnchor, multiplier: 1.0).isActive = true 

输出是这样的(不在中心)不管我做什么。我甚至可以消除这些限制,输出是一样的:

enter image description here

如果我把断点NSLayoutContraint激活线,它停在那里。如果我选择退出myViewmyPickerView默认居中inputView,但我需要myView有更多的自定义。

我该怎么办?

+0

我不喜欢选择器视图太多,但你检查它的实际宽度?也许它*是以一些填充为中心的。 – dfd

+0

检查的一个快速方法是给'inputView和'myView'不同的backgroundColors,并且如果需要的话,打印它们的帧 - 只要确保帧检查在'viewDidLayoutSubviews()'中完成。我不是说这是你的问题,只是把它扔到那里 - 你的约束对我来说很好。 – dfd

+0

@dfd它太奇怪了。我只是尝试将宽度应用于我的pickerView等于'self.view.frame.size.width',并且它正确无误。但是,为什么这些限制没有成功?如果我设置宽度,那么它只是伸展它。 –

回答

0

我解决了这个问题,通过设置pickerView的宽度等于superview宽度,像这样:myPickerView.frame.size.widt = self.view.frame.size.width。这不是我想要的解决方案,但我找不到针对该特定问题的任何其他解决方案。

我认为苹果公司不会让你用像inputView这样的组件来做事情,因为它几乎是键盘,它们不会让你改变任何与之相关的东西。而且我认为inputView拥有一些只读属性和默认内容拥抱。