6

我有以下单元格设计,其中数字标签缩小,“整体”标签直接位于下方。

在此处输入图像描述

我已经正确设置了adjustFontSizeToFitWidthminimumFontSize属性。字体大小调整正确。然而,将数字标签锚定到底部是具有挑战性的。特别是当字体缩小时,两个标签之间的间隙会变宽并且不会出现垂直居中。

我试过sizeToFit,sizeThatFits和使用字体的pointSize. 都失败了。

我知道sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:,但不明白为什么我需要将它与adjustFontSizeToFitWidth.

4

2 回答 2

2

啊,所以你想将UILabels放置在容器视图的中间(水平和垂直)?

我已经改写了我的答案,以便对未来的读者更有意义。

我的代码假设您设置了 3 个 IBOutlets:

UIView *containerView; //Your nice view containing the two textfields.
UILabel *points; //The label containing the number.
UILabel *overall; //The textfield containing the text 'overall'.

您可以分配文本并调用sizeToFit.

  1. 第一行定位UILabel点,唯一的变化是 y 坐标是containerView其自身高度的一半减去一半。

    points.frame = CGRectMake(points.frame.origin.x, (containerView.frame.size.height / 2) - (points.frame.size.height / 2), points.frame.size.width, points.frame.size.height);
    
  2. 相应地定位overall- 假设数字和整体标签之间的距离为 6:

    int space = 6;
    
    overall.frame = CGRectMake(overall.frame.origin.x, points.frame.origin.y + points.frame.size.height + space, overall.frame.size.width, overall.frame.size.height);
    
  3. 阅读您的评论后,我认为您正在寻求此解决方案。如果您希望两者都UILabels出现在中间;(overall.frame.size.height / 2) + (space / 2)像这样从 y 值中减去points(下面是数字 2 的代码):

    int space = 6;
    points.frame = CGRectMake(points.frame.origin.x, ((containerView.frame.size.height / 2) - (points.frame.size.height / 2)) - ((overall.frame.size.height / 2) + (space / 2)), points.frame.size.width, points.frame.size.height);
    overall.frame = CGRectMake(overall.frame.origin.x, points.frame.origin.y + points.frame.size.height + space, overall.frame.size.width, overall.frame.size.height);
    

最后一点将产生像这个图像这样的输出。如您所见,蓝线是整个图像的一半,并在其中点与黑色矩形(紧贴在两个标签周围)相交。我希望这就是你所追求的。

图像描绘效果

于 2013-02-14T15:13:11.677 回答
0

不要使用两个标签,CATextLayer而是使用。您将能够轻松地将一个部分设为粗体,而将另一部分设为正常。相对于放置两个标签,加上一层的位置和调整大小将很容易。阴影设置,换行模式,字体你将能够漂亮地调整一切:)

于 2013-02-14T15:58:29.540 回答