Как я могу получить размер шрифта и имя шрифта UILabel?

105

У меня есть UILabel, в котором я устанавливаю размер шрифта и имя шрифта с помощью Interface Builder. Теперь мне нужно прочитать значения обоих в моем ViewController.

Как я могу это сделать?

Тим
источник
Этот метод устарел iOS7, взгляните на эту статью stackoverflow.com/questions/19128797/…
Мария

Ответы:

254

Добавьте свойство в файл .h вашего контроллера представления:

@property (nonatomic, retain) IBOutlet UILabel *label;

Свяжите ярлык с этим IBOutlet под выходами «Владелец файла» в Interface Builder. Если не используете ARC, убедитесь, что вы выпустили его в -dealloc

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

Затем, чтобы получить название и размер шрифта, все, что вам нужно, это

NSString *fontName = self.label.font.fontName;
CGFloat fontSize = self.label.font.pointSize;
Нед
источник
3
Не работает. Я могу писать в нем текст, но fontName и pointSize имеют значение null.
Тим
Вы имеете в виду, что вы можете программно изменить текст метки, но не можете получить доступ к fontName и pointSize? Я отредактировал приведенный выше ответ, включив в него self.label, а не просто label, поскольку я не упомянул о создании переменной экземпляра для label.
Нед
Кроме того, убедитесь, что вы подключили метку в Interface Builder к IBOutlet, который вы создали в File's Owner (контроллер представления).
Нед
2
Ах, я забыл связь в IB с владельцем файла.
Тим
29

Swift:

var currentFontSize = button.titleLabel?.font.pointSize
Esqarrouth
источник
15

Значение Pointsize не является размером шрифта, используемым в свойстве размера UIFont. Скажем, если вы установите размер шрифта в конструкторе интерфейса на 14 и распечатаете pointSize, вы получите только 11.

ctd
источник
Кажется, сейчас работает. Если я установил размер шрифта метки в конструкторе интерфейса / редакторе раскадровки на 17 ... myLabel.font.pointSizeвозвращает 17.
Дерек Сойк,
1

вам нужно прикрепить его к UILabel IBOutlet, а затем label.font ...

Гай Ефрем
источник