Swift:如何在模式设置为“仅限时间”的情况下调整日期选择器的宽度

Swift: How to adjust width of Date Picker with mode set to Time Only

日期选择器组件右侧似乎有些浪费space:

而且我增加或减少它的框架width/height的值都没有关系;它保持标准尺寸。

    let datePicker = UIDatePicker(frame: CGRect(x: 20, y: 100, width: 500, height: 200))
    datePicker.datePickerMode = .date
    view.addSubview(datePicker)
    

我的问题是,可以调整吗?

编辑:所以我设法找到了它的简短形式,但那只能通过故事板添加。

视图如下:

最上面的第一个选择器以编程方式添加,第二个通过故事板添加。出于某种原因,我无法缩小以编程方式创建的选择器...

您可以直接询问日期选择器哪个大小合适 ;)

选项 A

let datePicker = UIDatePicker()
datePicker.datePickerMode = .date

// Let it size itself to its preferred size
datePicker.sizeToFit()
// Set the frame without changing the size
datePicker.frame = .init(x: 20, y: 100, width: datePicker.bounds.size.width, height: datePicker.bounds.size.height)

view.addSubview(datePicker)

选项 B

let datePicker = UIDatePicker()
datePicker.datePickerMode = .date

// Ask the picker for its preferred size
let datePickerPreferredSize = datePicker.systemLayoutSizeFitting(view.bounds.size)
// Set the frame using that size
datePicker.frame = .init(x: 20, y: 100, width: datePickerPreferredSize.width, height: datePickerPreferredSize.height)

view.addSubview(datePicker)