gpt4 book ai didi

ios - 将 sizeToFit 与 lineSpacing 一起使用

转载 作者:行者123 更新时间:2023-11-29 12:50:06 25 4
gpt4 key购买 nike

我有一个包含多行的 UILabel。使用 native 方法动态设置文本和我的标签高度:

[myLabel sizeToFit];

我有另一种方法可以在我的标签中设置行间距:

    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"My long dynamic text"];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:5];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];


myLabel.attributedText = attributedString;

问题是,即使我先设置行间距,然后调用sizeToFit,我的标签的新高度还是太小了。它不考虑行间距。

这确实是个问题,因为我的标签在 UIScrollView 中,我需要合适的高度。

最佳答案

要根据文本长度动态获取标签大小,请使用此方法:

/*! Returns the size of the label to display the text provided
@param text
The string to be displayed
@param width
The width required for displaying the string
@param fontName
The font name for the label
@param fontSize
The font size for the label
*/
- (CGSize)getSizeForText:(NSString *)text maxWidth:(CGFloat)width font:(NSString *)fontName fontSize:(float)fontSize {
CGSize constraintSize;
constraintSize.height = MAXFLOAT;
constraintSize.width = width;
NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:fontName size:fontSize], NSFontAttributeName,
nil];

CGRect frame = [text boundingRectWithSize:constraintSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attributesDictionary
context:nil];

CGSize stringSize = frame.size;
return stringSize;
}

关于ios - 将 sizeToFit 与 lineSpacing 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22608009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com