不在inputView内部应用于p​​ickerView的约束

时间:2017-07-14 13:05:44

标签: swift autolayout

我正在尝试将UIPickerView置于view内的inputView内 - 看起来像这样

  • 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进行更多自定义。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

我通过将pickerView宽度设置为超级视图宽度来解决此问题,如下所示:myPickerView.frame.size.widt = self.view.frame.size.width。这不是我想要的解决方案,但我找不到针对该特定问题的任何其他解决方案。

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