我有一个NSString并希望将其装入矩形。矩形具有指定的大小,例如width = 150和height = 30。当String很短并且只有一个字符时,它可以和矩形一样高。更具体:它可以有一个很大的字体大小。但是如果字符串有太多字符并且超出矩形的边界,它必须变小。更具体:它的字体大小必须变小,以便它不会超过矩形的边界。有没有办法做到这一点而不搞乱核心图形?
出于某种原因,UILabel的adjustsFontSizeToFitWidth属性无效。即使有足够的空间,文本仍然很小。
我已将其设置为
label.adjustsFontSizeToFitWidth = YES;
但没有任何反应。我希望还有另一种方法可以做到这一点......
答案 0 :(得分:6)
UILabel
有几个部分可以实现这一点,但首先您必须知道是否要截断字符串或使字体更小以适应矩形。
对于这两种情况,您都希望将UILabel
的{{1}}属性设置为numberOfLines
,允许标签尽可能多地换行。然后,您需要设置0
的{{1}}以匹配您想要适合的矩形。从那里你可以选择以下两条路径之一:
frame
属性设置为UILabel
,lineBreakMode
,UILineBreakModeClip
或UILineBreakModeHeadTruncation
,具体取决于截断行为您正在寻找。 UILineBreakModeTailTruncation
设置为UILineBreakModeMiddleTruncation
或“UILineBreakModeCharacterWrap”。然后你需要输入一个循环来确定正确的字体大小。从合理的字体大小开始(例如,12)和:
lineBreakMode
的{{1}}属性设置为与UILineBreakModeWordWrap
匹配的font
UILabel
了解UIFont
。- (void) sizeToFit
的{{1}}:
对于后一个选项,您需要确保不要将文本压缩为遗忘,因此您需要在字体大小上设置最小大小。
答案 1 :(得分:4)
adjustsFontSizeToFitWidth
调整字体大小向下,而不是向上。
将UILabel上的字体设置为适当大的尺寸,UILabel会在必要时将其缩小以适应其范围。
答案 2 :(得分:0)
minimumFontSize
财产)adjustsFontSizeToFitWidth
设为
YES
。如果您需要多行,请将lineCount
设置为0,如另一张海报所示。