具有 .compact 样式的 UIDatePicker 不尊重内容拥抱优先级

UIDatePicker with .compact style doesn't respect content hugging priority

我认为具有 .compact 样式的新 UIDatePicker(iOS 14+)无法与 AutoLayout 一起正常工作。

使用 UILabelUIDatePicker 制作一个简单的布局,其中 UIDatePicker 具有更高的内容拥抱优先级应该会导致 UILabel 被拉伸的布局如果可用的 space 太多,但事实并非如此。

这是我得到的结果:

示例代码如下:

class ViewController: UIViewController, UIGestureRecognizerDelegate {
    private let label: UILabel = {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.text = "Label"
        label.backgroundColor = .yellow
        return label
    }()
    
    private let datePicker: UIDatePicker = {
        let datePicker = UIDatePicker()
        datePicker.translatesAutoresizingMaskIntoConstraints = false
        datePicker.preferredDatePickerStyle = .compact
        return datePicker
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.addSubview(label)
        view.addSubview(datePicker)
        
        label.setContentHuggingPriority(.defaultLow, for: .horizontal)
        datePicker.setContentHuggingPriority(.defaultLow + 1, for: .horizontal)
        
        NSLayoutConstraint.activate([
            label.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 8),
            label.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 8),
            
            label.bottomAnchor.constraint(equalTo: datePicker.bottomAnchor),
            label.trailingAnchor.constraint(equalTo: datePicker.leadingAnchor, constant: -8),
            
            datePicker.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 8),
            datePicker.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -8)
        ])
    }
}

我错过了什么吗?这是一个已知问题吗?

对我来说很好用。将标签的水平内容拥抱优先级设置为 .defaultLow-1.