UILabel - 不推荐使用方法的替代方法“adjustsLetterSpacingToFitWidth”

时间:2014-02-21 02:01:18

标签: ios objective-c ios7 uilabel

所以在我的代码中,我正在检查我的字符是否适合我的标签,并且有以下几行:

return self.adjustsLetterSpacingToFitWidth;

这被置于UILabel的实施中。有人能告诉我这个的确切替代方案是什么?文档说 - 使用NSKernAttributeName,但我无法理解这一点。有人可以帮我吗?

在更广泛的意义上 - 该方法被称为:

xLab.adjustLetterSpacingToFitWidth = YES;

在我的代码中,我有:

@implementation UILabel ()
- (BOOL) getter {
    return self.adjustsLetterSpacingToFitWidth;
}

- (void) setter:(BOOL) setVal {
     self.adjustsLetterSpacingToFitWidth = setVal;
}
@end

1 个答案:

答案 0 :(得分:8)

首先,您的gettersetter完全是多余的,如图所示;无论您拨打getter和/或setter,都可以直接获取/设置adjustsLetterSpacingToFitWidth

关于如何使用NSKernAttributeName进行自动字距调整的问题,Apple的文档说:“要打开标签中的自动字距调整,请将字符串的NSKernAttributeName设置为[NSNull null] “,即你会做类似的事情:

NSMutableAttributedString *s;
s = [[NSMutableAttributedString alloc] initWithString:my_uilabel.text];
[s addAttribute:NSKernAttributeName
          value:[NSNull null]
          range:NSMakeRange(0, s.length)];
my_uilabel.attributedText = s;

但是如果您不想自动调整字母间距,而是查明文本是否适合标签,您可能需要检查NSString UIKit additions中的各种方法。 (这种意图的猜测是基于原始问题中的措辞。)