swift 更改UIDatePicker与.compact datePickerStyle的对齐方式- iOS 14及更高版本

dpiehjr4  于 2023-03-22  发布在  Swift
关注(0)|答案(1)|浏览(188)

在iOS 14中,苹果推出了新的UIDatePicker风格。我正在UIDatePicker上为我的preferredDatePickerStyle使用.compact风格。

timedatePicker.translatesAutoresizingMaskIntoConstraints = false
timedatePicker.backgroundColor = .white
timedatePicker.clipsToBounds = true
timedatePicker.layer.cornerRadius = 8.0
timedatePicker.layer.borderWidth = 1.0
timedatePicker.layer.borderColor = UIColor.lightGray.cgColor
timedatePicker.date = selectedDate
timedatePicker.datePickerMode = .dateAndTime
timedatePicker.preferredDatePickerStyle = .compact
timedatePicker.contentHorizontalAlignment = .center
timedatePicker.maximumDate = Calendar.current.date(byAdding: .hour, value: 1, to: Date())
timedatePicker.addTarget(self, action: #selector(setDate(sender:)), for: .editingDidEnd)
view.addSubview(timedatePicker)

我在代码中设置约束:

let constraints = [
    timedatePicker.heightAnchor.constraint(equalToConstant: 32.0),
    timedatePicker.leftAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leftAnchor, constant: 32.0),
    timedatePicker.topAnchor.constraint(equalTo: timedateLabel.bottomAnchor, constant: 8.0),
    timedatePicker.rightAnchor.constraint(equalTo: view.safeAreaLayoutGuide.rightAnchor, constant: -32.0)
]
NSLayoutConstraint.activate(constraints)

这一切都可以工作,但是实际的compact内容视图 * 在UIDatePicker中 * 在view中是左对齐的,因此它被挤在左侧,右侧有大量空白,因此没有居中。

我似乎找不到一种方法来使这个居中。contentModecontentHorizontalAlignment无法影响任何更改。
有没有人有经验来解决这个问题(比如改变路线)?

zz2j4svz

zz2j4svz1#

我最快的解决方案是将DatePicker放置在UIView中,然后将选择器限制为与UIView相同的高度,centerX和centerY。然后将这个 Package 视图与已经存在的其他5个项目一起放置到UIStackView中。我不得不走这条路,因为我发现在iOS 16上DatePicker居中没有问题,但在iOS 14上我需要 Package 器。

相关问题