如何获取UILabel的字体大小和字体名称?

111

我有一个UILabel,我在Interface Builder中设置了它的字体大小和字体名称。现在我需要在我的ViewController中读取这两个值。

我应该如何做?


这个方法已经在iOS7中被弃用,请查看以下文章:https://dev59.com/4GIk5IYBdhLWcg3wl_LE - Maria
4个回答

265
在你的视图控制器的.h文件中添加一个属性:
@property (nonatomic, retain) IBOutlet UILabel *label;

在界面构建器中,在“文件所有者”出口下将标签链接到此IBOutlet。如果不使用ARC,请确保在-dealloc中释放它。

- (void)dealloc
{
    [self.label release];
    [super dealloc];
}

然后要获取字体名称和字号,你所需要的只有:

NSString *fontName = self.label.font.fontName;
CGFloat fontSize = self.label.font.pointSize;

4
无法正常工作。我可以在其中编写文本,但字体名称和字号为空。 - Tim
你的意思是说你可以通过编程更改标签的文本,但无法访问fontName和pointSize吗?我编辑了上面的答案,包括self.label,而不仅仅是label,因为我没有提到为label创建实例变量。 - Ned
另外,请确保在Interface Builder中使用IBOutlet将标签与File's Owner(视图控制器)中创建的IBOutlet连接起来。 - Ned
2
啊,我忘记在IB中与文件所有者建立连接了。 - Tim

37

Swift:

var currentFontSize = button.titleLabel?.font.pointSize

他们本可以将其命名为 font.size,为什么要用 pointSize?当你创建字体时,使用 size,例如 UIFont(name: ..., size: ...) - Luka Samkharadze

16

字号大小(Pointsize)的值并不是在UIFont大小属性中使用的字体大小。例如,如果您将接口生成器字体大小设置为14并打印pointSize,则只会得到11。


看起来现在能正常工作了。如果我在界面生成器/故事板编辑器中将标签的字体大小设置为17...myLabel.font.pointSize会返回17。 - Derek Soike

2
您需要将其附加到一个UILabel IBOutlet,然后,label.font...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接