【问题标题】:measure the amout of adjustsFontSizeToFitWidth for a UILabel or textField测量 UILabel 或 uitextField 的 adjustsFontSizeToFitWidth 的数量
【发布时间】:2012-08-03 13:52:42
【问题描述】:

UILabels 和 textFields 可以自动缩放它们的字体以适应视图的空间(例如,随着文本的累积)。有没有办法测量所执行的规模的数量?看起来,在自动缩放时,无论文本的显示比例如何,myLabel.font.pointsize 或 myTextField.font.pointSize 的值都保持不变。

【问题讨论】:

  • UIFont 对象是不可变的,您需要获取底层的CTFontRef 对象才能从字体对象中获取此类信息。
  • 有趣的问题;你为什么想知道这个?除了根据没有缩放的文本大小和 UILabel 的大小来估计它之外,我没有看到任何直接获取该信息的方法。
  • 原因是我可以根据字体的比例移动标签以保持文本元素之间的视觉间距。

标签: ios xcode fonts uitextfield uilabel


【解决方案1】:

NSString 的 UIKit 添加中有一种方法可以做到这一点:

- (CGSize)sizeWithFont:(UIFont *)font minFontSize:(CGFloat)minFontSize actualFontSize:(CGFloat *)actualFontSize forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode

因此,如果您使用的是 UILabel,则可以使用以下代码:

CGFloat actualFontSize;
UILabel *label = [self label];
CGSize size = [[label text] sizeWithFont:[label font]
                             minFontSize:[label minimumFontSize]
                          actualFontSize:&actualFontSize
                                forWidth:[label bounds].size.width
                           lineBreakMode:[label lineBreakMode]];

此时,size 将包含绘制文本的大小,actualFontSize 将是标签用于绘制的字体的实际大小。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多