我有以下单元格设计,其中数字标签缩小,“整体”标签直接位于下方。
我已正确设置adjustFontSizeToFitWidth
和minimumFontSize
属性。字体正确调整大小。但是,将数字标签锚定到底部是一项挑战。特别是当字体缩小时,两个标签之间的间隙变宽并且不会垂直居中。
我尝试了sizeToFit
,sizeThatFits
,并使用了字体pointSize
。一切都没有成功。
我知道sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
,但不明白为什么我需要将它与adjustFontSizeToFitWidth
结合使用。
答案 0 :(得分: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
后设置标签的框架。
第一行定位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);
相应地定位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);
阅读完您的评论后,我认为您已经解决了这个问题。如果你想让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);
最后一点将产生类似此图像的输出。如您所见,蓝线是整个图像的一半,并在其中点与黑色矩形(两个标签周围紧贴)相交。我希望这就是你所追求的。
答案 1 :(得分:0)
而不是使用两个标签,而是使用CATextLayer
。您可以轻松地将一部分变为BOLD而另一部分正常。相对于放置两个标签,一层的位置和调整大小将是容易的。阴影设置,换行模式,字体,你将能够精美地调整一切:)