UIPickerView 在将内容加载到选取器后更改内容文本大小

Posted

技术标签:

【中文标题】UIPickerView 在将内容加载到选取器后更改内容文本大小【英文标题】:UIPickerView change content text size after loading content into picker 【发布时间】:2013-08-27 18:19:10 【问题描述】:

关于我所拥有的东西的一个小解释:

我有一个包含多个组件(列)的 UIPickerView,并且所有组件都填充了 INTEGER_MAX 行,以提供“无限循环”方面。每个组件的内容来自该特定组件的 NSArray 字符串。 字符串(单词)有不同的大小,有些被截断(例如,“Imagination”变成了“Imaginat...”,而“Smart”保持不变)。 在每个组件的每一行中,我都使用 UILabel 来显示文本,并且我正在使用

tLabel.textAlignment = NSTextAlignmentCenter;
tView.adjustsFontSizeToFitWidth = YES;

以确保文本适合并对齐。

关于我需要什么的小说明:

我需要使所有标签 (INTEGER_MAX * nr_of_components) 具有相同的文本大小。 但是,在选择器中填充了自动调整文本大小的标签之前,我无法分辨哪一个是其中最小的 font.size。

关于我的想法和未能实现的小解释:

我考虑加载之前解释过的选择器,然后扫描第一个 [arrayX count] 行以找到该组件所需的最小字体大小,然后将其与其他组件进行比较,直到需要“绝对”最小字体大小被发现。 之后,需要访问所有组件上的所有标签,并将 font.size 更改为所需的最小尺寸。

这应该动态完成,因为它不会知道应用程序是在 iPhone、iPod 还是 iPad 上运行。

嗯,非常欢迎任何帮助。 提前致谢!

【问题讨论】:

【参考方案1】:

如果我正确理解了您的问题,您可能需要查看this answer。

策略基本上是截断(省略号)而不是字体缩小。


编辑(基于评论)

我会强烈建议不要将所有文本设置为最小字体。假设你有这样的元素:

梨 桃子

好的,到目前为止,这些都非常适合您的标签,并且字体大小合适。现在您添加一个更长的项目:

梨 桃子 草莓 菠萝

现在你所有的项目都小了一点,但仍然可读,所以可以接受。然后出现一个巨大的项目,例如:

梨 桃子 草莓 菠萝 SomeKindOfExoticFruitThatHasAnIncredibleLongName

这将使您的选择器中的所有项目变得非常小,并且难以阅读。

但如果你还想走那条路,我建议你看看font sizing from text。这个question 也可能有帮助。

【讨论】:

感谢您的回复,但我已经在标签上默认设置了这种行为,正如我之前解释的那样。但是,我想要的是让它们都具有相同的大小,而不是截断(省略)。我的想法是更改所有标签,但这并不容易。

以上是关于UIPickerView 在将内容加载到选取器后更改内容文本大小的主要内容,如果未能解决你的问题,请参考以下文章

用 nltk 训练我自己的分类器后,如何将它加载到 textblob 中?

如何在表格视图中调用选取器视图内容?

加载着色器后清除内存

如何设置 UIPickerView 的动画持续时间?

将 CoreData 对象的字符串属性加载到 UIPickerView

如何在将数据加载到 UIViewConroller Swift 时创建正在加载的 UIView