Динамический размер шрифта с использованием UISlider

Я создал приятный пользовательский интерфейс, и я хотел бы добавить к нему некоторую доступность. В меню настроек я добавил что-то подобное

UISlider для размера шрифта

Я хочу, чтобы пока я перемещал ползунок, показанный там символ «A» будет увеличиваться / уменьшаться в размере. Кроме того, все остальные шрифты в приложении также изменят размер. Я создал глобальную целочисленную переменную под названием «fontSizeVar», и все шрифты в моем приложении берут оттуда свое значение размера шрифта.

Проблема в том, что я не могу заставить эту штуку работать. Во-первых, он не меняет динамически размер символа «A», а также не изменяет «fontSizeVar» и текст остальной части приложения.

Вот призыв к действию

[self.fontSize addTarget:self
                        action:@selector(editFont)
              forControlEvents:UIControlEventTouchDragInside];

Вот действие

-(IBAction)editFont{
[fontTesting setFont:[UIFont fontWithName:@"System" size:self.fontSize.value]];
fontSizeVar = self.fontSize.value;
} 

Кто-нибудь знает, как это сделать?


person user1015777    schedule 04.12.2011    source источник
comment
Вы установили NSLogs или точки останова? Вызывается editFont?   -  person occulus    schedule 05.12.2011
comment
Какие значения фактически помещаются в self.fontSize.value? Сделайте NSLog этого значения. Это числа, которые являются допустимыми размерами шрифта?   -  person occulus    schedule 05.12.2011
comment
Кстати, действительно ли fontTesting подключен к фактической текстовой метке «A»? Возможно, вы определили его как IBOutlet, но на самом деле не подключили его через построитель интерфейса.   -  person occulus    schedule 05.12.2011
comment
Я использовал NSLogs, и значения достигли действия. Я также подключил fontTesting через конструктор интерфейса. Но опять же не получается.   -  person user1015777    schedule 05.12.2011
comment
Я понял, что значение, которое я вижу в NSLog, является действительным числом, например 16,543. Это проблема? Я имею в виду, размер шрифта принимает только целые числа? и из-за того, что ползунок выдает числа с плавающей запятой, возникает проблема? Как сделать так, чтобы ползунок выдавал только целые числа?   -  person user1015777    schedule 05.12.2011
comment
Размеры шрифта указаны с плавающей запятой. У элемента, для которого вы меняете размер шрифта, настраиваете ли вы needsDisplay?   -  person Stripes    schedule 05.12.2011
comment
Размеры UIFont могут быть не целыми числами, так что это не проблема. См., Например, stackoverflow.com/questions/8235852/uifont-possible-sizes для получения дополнительной информации.   -  person occulus    schedule 05.12.2011
comment
В начале editFont добавьте это: 'NSLog (@ fontTesting =% d, fontTesting);' Что вы видите на выходе? Это 0 (т.е. ноль)?   -  person occulus    schedule 05.12.2011
comment
@Stripes, когда я писал, как мне это сделать, это было для needDisplay   -  person user1015777    schedule 05.12.2011
comment
Я сделал вещь NSLog, и значение равно 16 и изменяется в соответствии с изменениями ползунка.   -  person user1015777    schedule 05.12.2011
comment
Хорошо, это означает, что ваш лейбл действительно подключен, просто хотел убедиться.   -  person occulus    schedule 05.12.2011
comment
[labelObject setNeedsDisplay: YES] - односторонний (при условии, что labelObject - это то, что вы меняете размер)   -  person Stripes    schedule 05.12.2011
comment
@Stripes SetNeedsDisplay не работает. Это дает мне сообщение об ошибке, в котором говорится, что тип приемника UILabel, например, сообщение не объявляет метод с селектором setNeedsDisplay   -  person user1015777    schedule 05.12.2011


Ответы (3)


Хитрость в том, чтобы использовать UIControlEventValueChanged. В противном случае может быть опубликовано только первое значение.

Размеры шрифта имеют тип CGFloat, так что проблем нет. Возможно, попробуйте использовать systemFontOfSize: вместо fontWithName.

person Mundi    schedule 05.12.2011

Попробуйте изменить название шрифта с @"System" на @"System Bold".

person occulus    schedule 05.12.2011

Тип шрифта по умолчанию в iOS - Helvetica. Итак, чтобы определить его для использования:

UIFont *font = [UIFont fontWithName:@"Helvetica" size:15];
person Vincent    schedule 25.10.2012