UIPickerView - 改变组件宽度

Posted

技术标签:

【中文标题】UIPickerView - 改变组件宽度【英文标题】:UIPickerView - changing component width 【发布时间】:2010-08-10 16:25:00 【问题描述】:

在我的 iPhone 应用程序中,我想要一个包含 2 个组件的 UIPickerView。最初,左栏是宽的,右栏是窄的,以使左侧的文本易于阅读,以便从中进行选择。

选择此列后,用户将单击右列从中选择一个项目:发生这种情况时,我想调整列的大小,使左列变窄,右列变宽,以便所有文本可以阅读。

我一直在试验“pickerView widthForComponent”,但这似乎只在最初加载视图时才被调用。

有什么方法可以动态调整列的大小?

谢谢

【问题讨论】:

请参阅更新的答案。 所以,是时候接受答案了,因为它是一个正确的解决方案;) 【参考方案1】:

您可以使用 [pickerView reloadAllComponents]。

更新:

这很奇怪。您也可以尝试查看以下solution。

【讨论】:

我试过了,但 'pickerView widthForComponent' 没有被再次调用。 嗨,Kovpas - 非常感谢!该解决方案可以解决问题:-)在'didSelectRow'中添加“self.pickerView.delegate = nil; self.pickerView.delegate = self;”重置选取器的委托会导致组件宽度被重绘。【参考方案2】:

仅重新加载是行不通的。您还需要调用 setNeedsLayout

[pickerView reloadAllComponents];
[pickerView setNeedsLayout];

【讨论】:

以上是关于UIPickerView - 改变组件宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何在目标 C 中更改 UIPickerView 的宽度

触摸 UITextField 时设置 UIPickerView 的默认值

在iphone中动态设置UIPIckerView高度宽度[重复]

如何在 UIPickerView 上添加 UIToolbar? (iPhone/iPad)

iOS:UIPickerView 默认尺寸

UIPickerView 改变框架的大小和位置