我已经确定了UILabel的界限。单行,2-3字。我必须改变字体的大小。以编程方式将内容调整为强确定矩形的最佳解决方案是什么?
发布于 2014-03-11 08:12:54
我找到了手动检查尺寸的解决方案。其他的解决方案都是不恰当的。也许这段代码会对某人有帮助。在这里,要解决的代码:
-(void) autoResizeLabel: (UILabel*) label withMaxWidth:(CGFloat)mw withMaxHeight:(CGFloat)mh
{
CGFloat fontSize = 1.f;
CGFloat outSize = fontSize;
CGFloat mDelta = 30.f;
CGFloat delta = 1.f;
BOOL activated = NO;
BOOL broken = NO;
for (float fSize = fontSize; fSize < fontSize + mDelta; fSize += delta)
{
CGRect r = [label.text boundingRectWithSize:label.frame.size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:fSize]} context:nil];
CGFloat width = r.size.width;
CGFloat height = r.size.height;
if (mw <= width || mh <= height)
{
if (activated)
{
outSize = fSize - delta;
}
broken = YES;
break;
}
activated = YES;
//NSLog(@"%f;%f;%f",fSize,mw,mh);
}
if (activated && !broken) outSize = fontSize + mDelta - delta;
[label setFont:[UIFont systemFontOfSize:outSize]];
}发布于 2014-03-06 12:00:46
设置标签的最小字体比例
_myLabel.adjustsFontSizeToFitWidth = YES;
_myLabel.minimumScaleFactor = 0.5f;发布于 2014-03-06 12:02:22
使用XIB (或以编程方式)中的“自动收缩”属性,并设置最小字体大小,您的文本将适应该空间。但要用最小字体。

https://stackoverflow.com/questions/22223805
复制相似问题