作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 UILabel,通常必须显示一两个单词。
很多时候,其中一个单词无法容纳在一行中,因此我想减小字体大小,以便将每个单词至少容纳在一行中(不按字符中断)。
使用 http://beckyhansmeyer.com/2015/04/09/autoshrinking-text-in-a-multiline-uilabel/ 中描述的技术
self.numberOfLines = 2;
self.lineBreakMode = NSLineBreakByTruncatingTail;
self.adjustsFontSizeToFitWidth = YES;
self.minimumScaleFactor = 0.65;
我发现当第二个单词不能只在一行中显示时,它会发挥很好的作用。
但是当只有一个词,或者第一个词就是那个时,它就不会了那不合适。
我设法解决了一个单词的情况:
-(void)setText:(NSString *)text
{
self.numberOfLines = [text componentsSeparatedByString:@" "].count > 1 ? 2 : 1;
[super setText:text];
}
但是我该如何解决第一个单词不合适的情况呢?有什么想法吗?
最佳答案
这个怎么样?
self.numberOfLines = [text componentsSeparatedByString:@" "].count;
[self setAdjustsFontSizeToFitWidth:YES];
但是,这将排除标签文本由两个非常小的单词组成的情况,例如“how are”。在这种情况下,整个字符串将在第一行本身中可见。如果您要求在单独的行中显示每个单词,那么我建议您在每个单词后添加“\n”。这意味着您必须在将字符串分配给标签之前对其进行编辑。因此,通用解决方案可能是这样的:
NSString *string = @"how are"; //Let this be the string
NSString *modifiedString = [string stringByReplacingOccurrencesOfString:@" " withString:@"\n"];
[self setText:modifiedString];
[self setTextAlignment:NSTextAlignmentCenter];
[self setAdjustsFontSizeToFitWidth:YES];
[self setNumberOfLines:0];
self.lineBreakMode = NSLineBreakByWordWrapping;
关于ios - 带有多行的 UILabel adjustFont,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36009826/
我有一个 UILabel,通常必须显示一两个单词。 很多时候,其中一个单词无法容纳在一行中,因此我想减小字体大小,以便将每个单词至少容纳在一行中(不按字符中断)。 使用 http://beckyhan
我是一名优秀的程序员,十分优秀!