我具有以下单元格设计,其中数字标签会缩小,而“Overall”标签位于其正下方。
我已经正确设置了adjustFontSizeToFitWidth
和minimumFontSize
属性。字体大小正确调整。然而,将数字标签 anchor 定在底部是具有挑战性的。特别是当字体缩小时,两个标签之间的间隙会加宽,并且不会垂直居中。
我尝试了sizeToFit
,sizeThatFits
,并使用了字体的pointSize
。全部失败。
我知道sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
,但是不明白为什么我需要结合adjustFontSizeToFitWidth
来使用它。
最佳答案
嗯,所以您想将UILabels
放置在容器 View 的中间(水平和垂直方向)?
我已改写了我的答案,这样对将来的读者会更有意义。
我的代码假设您已经设置了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);
最后一点将产生类似于此图像的输出。如您所见,蓝线是整个图像的一半,并且在其中间点与黑色矩形(紧紧围绕两个标签)相交。我希望这就是你所追求的。