我有一个UIPickerView
,包含2个组件:
然而隐藏的行向中心移动。我认为这与UIPickerView
在'轮子'之间放置的空间有关。
我没有在iOS中看到任何简短的文档,讨论如何防止这种情况。
这是我的代码:
func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat
{
return self.currenciesPicker.width / 2
}
func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat
{
return 50.0
}
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView
{
var cell: CurrencyPickerCell
if view == nil
{
let width = self.pickerView(pickerView, widthForComponent: component)
let height = self.pickerView(pickerView, rowHeightForComponent: component)
cell = CurrencyPickerCell(frame: CGRect(x: 0.0, y: 0.0, width: width, height: height))
}
else
{
cell = view as! CurrencyPickerCell
}
let code = self.codes[row]
cell.nameLabel.text = Currency.names[code]
cell.symbolLabel.text = Currency.symbols[code]
return cell
}
当我让widthForComponent
返回选择器大小减去20的一半时,单元格只显示小20点。这会在选取器视图的左端和右端创建空边框。它并没有改变这种奇怪的“视差”。
有没有人知道造成这种情况的原因以及如何预防?
我应该如何计算widthForComponent
(正确的选择器宽度的一半)?
答案 0 :(得分:1)
不幸的是,这就是UIPickerView控件的设计方式。它应该看起来像是从正上方看到的几个并排坐着的轮子。考虑到苹果公司所做的所有平面设计风格,但没有办法改变它,这有点奇怪。
唯一真正的选择是自己动手,完全手动或可能继承UIPickerView并自己处理绘图,或者使用第三方控件。