我试图在UILabel中显示一个attributedString,并将"firstLineHeadIndent“属性添加到它的属性中。
16个字符的"国",应该分成两行。但是UILabel只在一行中显示了14个字符,如图片“16个字符不正确”所示。
当使用17 characters.Can时,它可以正确显示,谁能告诉我为什么??下面是我的代码:
- (void)viewDidLoad {
[super viewDidLoad];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, 300, 80)];
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordWrapping;
[self.view addSubview: label];
NSMutableParagraphStyle *paraStyle = [NSMutableParagraphStyle new];
paraStyle.firstLineHeadIndent = 40;
paraStyle.lineBreakMode = NSLineBreakByWordWrapping;
NSDictionary *attrs = @{
NSParagraphStyleAttributeName:paraStyle,
NSFontAttributeName:[UIFont systemFontOfSize:17 weight:UIFontWeightBold],
NSKernAttributeName:@.9f
};
label.attributedText = [[NSAttributedString alloc] initWithString:@"国国国国国国国国国国国国国国国国" attributes:attrs];}
16个字符不正确:
正确显示17个字符:
发布于 2017-04-20 13:05:33
已更新答案
将此行更改为:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, 300, 80)];
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByCharWrapping;
label.adjustsFontSizeToFitWidth=YES;
label.backgroundColor=[UIColor redColor];
label.textAlignment=NSTextAlignmentLeft;
[self.view addSubview: label];
NSMutableParagraphStyle *paraStyle = [NSMutableParagraphStyle new];
paraStyle.firstLineHeadIndent = 20;
paraStyle.lineBreakMode = NSLineBreakByWordWrapping;
NSDictionary *attrs = @{
NSParagraphStyleAttributeName:paraStyle,
NSFontAttributeName:[UIFont systemFontOfSize:16 weight:UIFontWeightBold],
NSKernAttributeName:@.9f
};
label.attributedText = [[NSAttributedString alloc] initWithString:@"国国国国国国国国国国国国国国国国" attributes:attrs];
解决方案2 :
删除段落:事物
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, 300, 80)];
label.numberOfLines = 0;
label.text=@"国国国国国国国国国国国国国国国国国国";
label.lineBreakMode = NSLineBreakByWordWrapping;
label.adjustsFontSizeToFitWidth=YES;
label.backgroundColor=[UIColor redColor];
label.textAlignment=NSTextAlignmentCenter;
[self.view addSubview: label];
发布于 2020-05-21 15:47:48
我也遇到了这个问题,我认为这是UILabel
的一个bug。所以我试着把它改成UITextView
,它起作用了。
发布于 2020-09-02 10:45:49
我认为你可以使用透明图像的NSTextAttachment
来增加额外的空间。
https://stackoverflow.com/questions/43510585
复制相似问题