ios - UILabel - 已弃用方法的替代方法 "adjustsLetterSpacingToFitWidth"

标签 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

最佳答案

首先,如图所示,您的 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 中的各种方法。 . (这个意图的猜测是基于原问题中的措辞。)

关于ios - UILabel - 已弃用方法的替代方法 "adjustsLetterSpacingToFitWidth",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21923763/

相关文章:

c# - 更新 Monotouch.Dialog RootElement

ios - UITableView 自己滚动

c++ - 使用 Autotool 在 Windows 和 Mac 上编译

c# - 将项目转换为 Xamarin 统一 api : "Failed to load output manifest for actool for the file..."

ios - [NSLocale preferredLanguages] 是否返回空值?

objective-c - 在iOS中将文本插入字符串

ios - UITableView如何操作队列并发下载

uiviewcontroller - 是否可以在 UIViewController 的子类中实现 topLayoutGuide 和 bottomLayoutGuide?

ios - 约束更改时的自动布局 UIView 不会为 iOS 7 设置动画

ios - UIButton 没有在 ios7 上注册