gpt4 book ai didi

iphone - 最小字体大小问题

转载 作者:行者123 更新时间:2023-11-28 22:44:15 26 4
gpt4 key购买 nike

我设置了一个标签,标签中有一些文本。现在我想设置所有文本适合标签的字体。我使用最小字体大小,因为标签文本每天都在变化。但是突然就不行了。我做错了什么?

这是我的代码:

CGRect infoLabelRect = CGRectMake(10, 250, 260, 350);


UILabel *infoLabel = [[UILabel alloc] initWithFrame:infoLabelRect];
infoLabel.text = @"bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla";
infoLabel.numberOfLines = 9;
infoLabel.font = [UIFont systemFontOfSize:17];
infoLabel.minimumFontSize = 12;
infoLabel.adjustsFontSizeToFitWidth = YES;
infoLabel.textColor = [UIColor whiteColor];
infoLabel.textAlignment = NSTextAlignmentCenter;
infoLabel.backgroundColor = [UIColor clearColor];
infoLabel.shadowColor = [UIColor blackColor];
infoLabel.shadowOffset = CGSizeMake(0, 1);
[infoLabel sizeToFit];

我试过 rmaddy sad 但没有显示任何文字。

这是我的代码,它不起作用。有什么建议吗?

UILabel *infoLabel = [[UILabel alloc] initWithFrame:infoLabelRect];
NSString *text = @"bla bla bla";
UIFont *font = nil;
CGFloat points = 17;
CGFloat maxHeight = infoLabel.frame.size.height;
CGFloat textHeight;
do {
font = [UIFont systemFontOfSize:points];
CGSize size = CGSizeMake(infoLabelRect.size.width, 100000);
CGSize textSize = [text sizeWithFont:font constrainedToSize:size lineBreakMode: NSLineBreakByWordWrapping];
textHeight = textSize.height;
points -= 1;
} while (textHeight > maxHeight);

infoLabel.font = font;
infoLabel.textColor = [UIColor whiteColor];
infoLabel.textAlignment = NSTextAlignmentCenter;
infoLabel.backgroundColor = [UIColor clearColor];
infoLabel.shadowColor = [UIColor blackColor];
infoLabel.shadowOffset = CGSizeMake(0, 1);
[infoLabel sizeToFit];
[contentView addSubview:infoLabel];

最佳答案

minimumFontSize 的使用只适用于一行的标签。多行或环绕标签不会尝试调整字体大小。

来自 minimumFontSize 的文档:

The default value for this property is 0.0. If you enable font adjustment for the label, you should always increase this value. This property is effective only when the numberOfLines property is set to 1.

一种解决方案是使用 NSString sizeWithFont:constrainedToSize:lineBreakMode: 方法来计算使标签的文本适合分配的空间所需的字体大小。

编辑:类似的东西应该可以工作(这没有经过测试,可能是拼写错误):

NSString *text = @"hello";
UIFont *font = nil;
CGFloat points = 17;
CGFloat maxHeight = infoLabel.frame.size.height;
CGFloat textHeight;
do {
font = [UIFont systemFontOfSize:points];
CGSize size = CGSizeMake(infoLabelRect.size.width, 100000);
CGSize textSize = [text sizeWithFont:font constrainedToSize:size lineBreakMode: NSLineBreakByWordWrapping];
textHeight = textSize.height;
points -= 1;
} while (textHeight > maxHeight);

infoLabel.font = font;

关于iphone - 最小字体大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13673643/

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