Как сделать так, чтобы текст в UILabel был размытым? - PullRequest
1 голос
/ 24 августа 2009

Есть ли способ получить размытый или светящийся эффект для текста? Или мне нужно получить графический контекст слоя и затем применить какой-нибудь алгоритм Гаусса к пикселям? Я искал документацию по этому вопросу, но кажется, что тени не выглядят размытыми, и в NSString, UIFont или UILabel нет методов, которые могли бы помочь это сделать.

Ответы [ 4 ]

3 голосов
/ 25 августа 2009

CGContextSetShadowWithColor можно использовать (ab) для рисования размытого текста. Поскольку он может быть медленным, лучше всего нарисовать его в буфере и затем использовать это:

UIFont *font = [UIFont systemFontOfSize:18.0f];
UIGraphicsBeginImageContext(CGSizeMake(200.0f, 50.0f));
CGContextSetShadowWithColor(UIGraphicsGetCurrentContext(), CGSizeMake(0.0f, -500.0f), 2.0f, [[UIColor blackColor] CGColor]);
[@"Blurred Text!" drawAtPoint:CGPointMake(5.0f, -500.0f) withFont:font];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[imageView setImage:image];

Старый ответ: Простым вариантом является рисование текста несколько раз и смещение координат x / y на 1 каждый раз. Чтобы ускорить его, вы можете кэшировать его в буфере за пределами экрана.

1 голос
/ 25 августа 2009

Вы можете намеренно расположить метку на половине пикселя, и вы получите размытый эффект. Вы не будете иметь большого контроля над этим, но это будет выглядеть размытым:

UILabel *labelOnWholePixel = [[UILabel alloc] 
                   initWithFrame:CGRectMake(20.0f, 20.0f, 280.0f, 25.0f)];
[labelOnWholePixel setText:@"Whole Pixel"];
[labelOnWholePixel setBackgroundColor:[UIColor clearColor]];

UILabel *labelOnHalfPixel = [[UILabel alloc] 
                  initWithFrame:CGRectMake(20.5f, 50.5f, 280.0f, 25.0f)];
[labelOnHalfPixel setText:@"Half Pixel"];
[labelOnHalfPixel setBackgroundColor:[UIColor clearColor]];

[[self view] addSubview:labelOnWholePixel];
[[self view] addSubview:labelOnHalfPixel];

Я не уверен, но мне кажется, что чем ближе вы к целому числу в обоих направлениях, тем яснее оно становится, поэтому вы можете немного его контролировать.

0 голосов
/ 25 августа 2009

Используйте Photoshop или другой графический редактор для создания четкого, размытого наложения. Сохранить как PNG. Загрузите этот PNG в UIImageview и нарисуйте его поверх UILabel. Настройте альфа-канал, чтобы изменить эффект.

Вы даже можете создать специализированный подкласс UILabel, чтобы справиться с этим с несколькими степенями размытия.

0 голосов
/ 24 августа 2009

Помимо сглаживания UILabel не поддерживает размывание текста (или его тени). Вам придется кодировать его вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...