在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
中是左对齐的,因此它被挤在左侧,右侧有大量空白,因此没有居中。
我似乎找不到一种方法来使这个居中。contentMode
和contentHorizontalAlignment
无法影响任何更改。
有没有人有经验来解决这个问题(比如改变路线)?
1条答案
按热度按时间zz2j4svz1#
我最快的解决方案是将DatePicker放置在UIView中,然后将选择器限制为与UIView相同的高度,centerX和centerY。然后将这个 Package 视图与已经存在的其他5个项目一起放置到UIStackView中。我不得不走这条路,因为我发现在iOS 16上DatePicker居中没有问题,但在iOS 14上我需要 Package 器。