【问题标题】:UILabel text to fill in the frame widthUILabel 文本填充框架宽度
【发布时间】:2015-03-15 00:15:44
【问题描述】:

我想使用 UILabel 制作排版海报

  • 左边距和边距:25
  • 320(设备宽度) - 50(边距之和) = 270(标签宽度框架)

每个标签的字体大小应更改以适应 270 帧宽度

我尝试使用 sizeToFit(),adjustsFontSizeToFitWidth=true

var margin = 0;
let label = UILabel(frame: CGRectMake(25 , 72, 270, 70));
label.backgroundColor = UIColor.clearColor();
label.textAlignment = NSTextAlignment.Left;
label.textColor = UIColor.blackColor();
label.numberOfLines = 1;
label.font = UIFont.systemFontOfSize(50.0);
label.text = "Some Text";
label.adjustsFontSizeToFitWidth = true;
self.view.addSubview(label);
margin += 60;

let label2 = UILabel(frame: CGRectMake(25 , CGFloat(72+margin), 270, 70));
label2.backgroundColor = UIColor.clearColor();
label2.textAlignment = NSTextAlignment.Left;
label2.textColor = UIColor.whiteColor();
label2.numberOfLines = 1;
label2.font = UIFont.boldSystemFontOfSize(45.0);
label2.text = "Some Text Longer";
self.view.addSubview(label2);

lable1 和 label2 时的屏幕截图 adjustsFontSizeToFitWidth=true

文本应该从第一个灰色边框的末尾开始,并在第二个灰色边框的开头结束

【问题讨论】:

  • adjustsFontSizeToFitWidth=true时,字体大小会根据帧变化。它不适合你吗?你还没有为label2设置它
  • No adjustsFontSizeToFitWidth 不起作用。文本有一个左填充,不要在 25 像素处加注星标。还有 println(label.font); font-family: ".HelveticaNeueInterface-Regular";字体粗细:正常;字体样式:正常;字体大小:50.00pt
  • label 中的文本会被剪掉吗?如果合适,fontsize 为 50 有什么问题?您已将 label 设置为 50@
  • img - i.stack.imgur.com/k6Z35.png 我希望文本从第一个灰色开始并结束第二个灰色边框
  • @EvenJohnson 你不能让字体变大吗?

标签: swift uilabel sizetofit


【解决方案1】:

adjustsFontSizeToFitWidth 不会增加标签中字体的大小以适应宽度。

根据 Apple 的文档,

adjustsFontSizeToFitWidth 是一个布尔值,指示是否 应减小字体大小以使标题字符串适合 标签的边界矩形。

通常,标签文本使用您在 字体属性。但是,如果此属性设置为 YES,并且文本 在 text 属性中超出了标签的边界矩形, 接收器开始减小字体大小,直到字符串适合或 达到最小字体大小。在 iOS 6 及更早版本中,此属性为 仅当 numberOfLines 属性设置为 1 时才有效。

您可以尝试增加字体大小以适应框架的宽度。

来源:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/instm/UIView/sizeToFit

您也可以使用下面的方法迭代找到适合标签的最大尺寸。

How to adjust font size of label to fit the rectangle?

【讨论】:

  • label.font = UIFont.systemFontOfSize(30.0); label.text = "一些文本" label.sizeThatFits(CGSizeMake(270, 40));标签.sizeToFit(); label.adjustsFontSizeToFitWidth = true; img - imageupload.co.uk/images/2015/01/16/…
  • 我不明白你的评论。你能解释一下吗?
【解决方案2】:

这应该可以在不更改许多默认值的情况下正常工作。贴出的代码没有设置adjustsFontSizeToFitWidth,如下图:

label.adjustsFontSizeToFitWidth = true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多