将内容加载到选择器后,UIPickerView会更改内容文本大小

时间:2013-08-27 18:19:11

标签: ios objective-c uipickerview

关于我的内容的一个小解释:

我有一个带有多个组件(列)的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 个答案:

答案 0 :(得分:0)

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

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


修改(根据评论)

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

好的,到目前为止,这些将完美贴合您的标签,并具有良好的字体大小。现在添加一个更长的项目:

  • 草莓
  • 菠萝

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

  • 草莓
  • 菠萝
  • SomeKindOfExoticFruitThatHasAnIncredibleLongName

这将使你的选择器内的所有物品变得非常小,并且难以阅读。

但是如果你还想走这条路,我建议你看一下font sizing from text。这个question也可以提供帮助。