Как я могу получить размер шрифта и имя шрифта 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 с владельцем файла.
Тим


15

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


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.