2012-11-27 63 views
4

我有一个UILabel设置系统粗体字体14.0,最小字体大小为12. 我想要标签填充7行,如果太大,缩小文本降至12像素,在这种情况下,它可能超过7行,但仍然适合它的原始帧。UILabel - 缩小文本而不是截断尾部

我已经尝试将行数设置为7并设置为0.无论哪种方式,文本只是填充默认大小(14)的7行并截断尾部。我怎样才能让文字缩小到12px,以便我可以看到更多的文字?

(我会发布更多的代码,但其中大部分都是在IB中设置的)。

编辑:我有Autoshrink选项设置为“最小字体大小”与12的大小。即使我将此设置为明显像8,没有收缩发生。

+0

你说你设置了最小字体大小为12.你是怎么做到的?您是否通过IB在UILabel的“Autoshrink”检查器属性中执行此操作? – ninjaneer

+0

是的,请参阅上面的修改。 – soleil

回答

4

请与

sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode: 

[labelText sizeWithFont:labelFont 
        minFontSize:12.0 
        actualFontSize:&returnFontSize 
        forWidth:frame.size.width 
        lineBreakMode:UILineBreakModeWordWrap]; 

有关详细信息check apple documentation for NSStringNSString还有其他一些便利方法。

更新: 根据您的编辑,周围的工作对你的问题是设置以下属性,

label.adjustsFontSizeToFitWidth = YES; 
+0

这似乎是我应该能够在IB做的事情。为什么有一个Autoshrink选项,如果它没有做任何事情? – soleil

+0

只看现在你的编辑问题。所以你想在IB中设置它。我以为你正在寻找这样做以编程方式。 – iDev

+0

@soleil,尝试设置你的'label.adjustsFontSizeToFitWidth = YES;' – iDev

1

因此很明显,自动收缩,最小字体大小,只等工作1-在线UILabel。我找到了一个解决方案here,虽然如果你可以在IB或UILabel API中处理这个问题,那将会很不错。

+0

这是通过编程来完成的。类似于我的建议。但在你的情况下,你应该使用'sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:'因为你想设置最小字体为12像素作为你的问题。 – iDev

2

您可以使用.adjustsFontSizeToFitWidth=YES这将调整字体大小以适应标签的宽度。例如,如果您的标签有numberOfLines=2且文字太长,则标签的字体大小将缩小以适合所有文字。

+0

这会做什么?你能解释一下这其实是什么意思吗? – nycynik

+0

@nycynik谢谢你,现在更新。 – DevC