UIPickerView 奇怪的图形问题

Weird graphical issue with UIPickerView

我尝试将 UIPickerView 放入 UIViewController 并使用以下代码在其中显示一个简单的项目:

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 3
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return 10
}

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
    let pickerLabel = UILabel()
    pickerLabel.textColor = UIColor.black
    pickerLabel.text = "10"
    pickerLabel.textAlignment = NSTextAlignment.center
    pickerLabel.sizeToFit()
    return pickerLabel
}

一切都很好,但是当我将 numberOfComponents 更改为 2 选择器视图时,显示不正确。为什么会这样?(Xcode 8 iOS 10)

这里有两点需要注意:

  1. 您已使用:pickerLabel.sizeToFit() 将根据其内容调整标签大小。
  2. 接下来是,如果您发表评论 pickerLabel.sizeToFit() 并为您的标签添加背景色。你会得到以下结果

正如您在此处看到的那样,PickerView 的曲率和单元格之间的距离导致了此问题。所以解决方案是你可以给你的标签一个宽度而不是尺寸来适应并在测试你的结果时应用背景并得出最佳组合。

例如,检查 iOS 本机时钟定时器:

"They have tried playing around with width of label and index"

请注意:

曲率导致宽度减小,标签居中对齐,因此它沿着宽度减小的路径移动,如果你明白我在这里想说的话。

这个应该可以解释清楚了。

干杯!