我正在尝试构建一个自定义UIPickerView
替换类,主要用于学习目的,但为了在我正在开发的应用程序中实现它。我在我的应用程序的 UI 上投入了大量时间和精力,但现在默认设置UIPickerView
不合适。
我看到这个Dribble模拟了一个看起来非常漂亮的日期/时间选择器,但我意识到在UIPickerView
没有一些重大黑客攻击的情况下,没有机会可以如此大量地自定义。
经过大量阅读和调查,我发现它的组件UIPickerView
使用UITableView
s 而不是UIScrollView
我最初假设的平原。这令人困惑,原因有两个:
定制UITableViewCell
s 是 derriere 的一大痛点。并不是说它很辛苦,只是费力并且很少产生所需的结果。尽管开销很小,但不知何故UIPickerView
设法做到了这一点。我会假设组件中的每一行只使用UITableViewCellStyleDefault
一个自定义视图,contentView
但你知道他们对假设的看法。
让我失望的第二件事是UIPickerView
符合UITableViewDataSource
协议,但不符合UITableViewDelegate
协议。这似乎有点奇怪,因为委托负责提供正确的高度,– tableView:heightForRowAtIndexPath:
UIPickerView
但是确实允许您通过设置组件的大小– pickerView:rowHeightForComponent:
与此一致,使用表格视图似乎也是一个奇怪的选择,因为它们本身不会像滚动视图那样“捕捉”到指定的行pagingEnabled
。
谁能解释为什么默认值UIPickerView
不符合上述委托?用 a 来实现我的自定义选择器会更容易,UIScrollView
还是应该UITableView
提供所需的功能?