使用 UIPickerView 时出现约束错误
Constraints error when using a UIPickerView
每当我单击我创建的其中一个选择器视图时,我都会在控制台中记录以下错误:
[LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
我知道这个错误通常在存在冲突约束时发生,但我不知道在这种情况下冲突约束是什么。 pickerview 仍然可以正常工作,但我仍然想摆脱这个错误。
代码:
@IBAction func showDatePicker(_ sender: PickerField){
let datePicker = UIDatePicker
let datePickerField = sender
datePicker.translatesAutoresizingMaskIntoConstraints = false
datePicker.datePickerMode = .time
let toolbar = UIToolbar()
toolbar.translatesAutoresizingMaskIntoConstraints = false
toolbar.sizeToFit()
let finishedButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(donedatePicker))
finishedButton.tag = sender.tag
let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelDatePicker))
cancelButton.tag = sender.tag
toolbar.setItems([cancelButton,spaceButton,finishedButton], animated: false)
datePickerField.inputView = datePicker
datePickerField.inputAccessoryView = toolbar
}
(仅供参考,我已尝试为选择器和工具栏打开和关闭 translatesAutoResizingMaskIntoConstraints,但错误仍然存在)
约束错误是由UIToolBar
引起的。这似乎是当前 OS 的问题。要消除警告,请将 UIToolbar
初始化为指定宽度 100,它仍会拉伸到边框。
let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 100.0, height: 44.0))
您不需要使用 .sizeToFit()
,也不需要 .translatesAutoresizingMaskIntoConstraints = false
每当我单击我创建的其中一个选择器视图时,我都会在控制台中记录以下错误:
[LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
我知道这个错误通常在存在冲突约束时发生,但我不知道在这种情况下冲突约束是什么。 pickerview 仍然可以正常工作,但我仍然想摆脱这个错误。
代码:
@IBAction func showDatePicker(_ sender: PickerField){
let datePicker = UIDatePicker
let datePickerField = sender
datePicker.translatesAutoresizingMaskIntoConstraints = false
datePicker.datePickerMode = .time
let toolbar = UIToolbar()
toolbar.translatesAutoresizingMaskIntoConstraints = false
toolbar.sizeToFit()
let finishedButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(donedatePicker))
finishedButton.tag = sender.tag
let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelDatePicker))
cancelButton.tag = sender.tag
toolbar.setItems([cancelButton,spaceButton,finishedButton], animated: false)
datePickerField.inputView = datePicker
datePickerField.inputAccessoryView = toolbar
}
(仅供参考,我已尝试为选择器和工具栏打开和关闭 translatesAutoResizingMaskIntoConstraints,但错误仍然存在)
约束错误是由UIToolBar
引起的。这似乎是当前 OS 的问题。要消除警告,请将 UIToolbar
初始化为指定宽度 100,它仍会拉伸到边框。
let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 100.0, height: 44.0))
您不需要使用 .sizeToFit()
,也不需要 .translatesAutoresizingMaskIntoConstraints = false