В моем приложении IPhone я хочу, чтобы текст в UILabel светился на секунду, а затем исчезал в течение секунды ;. Также я хочу повторить этот цикл, скажем, 3 или 4 раза.IPhone Text Glow Effect
Возможно ли это?
В моем приложении IPhone я хочу, чтобы текст в UILabel светился на секунду, а затем исчезал в течение секунды ;. Также я хочу повторить этот цикл, скажем, 3 или 4 раза.IPhone Text Glow Effect
Возможно ли это?
Да. Используйте beginAnimation ... commitAnimation и используйте значение alpha, чтобы скрасить или уменьшить ULabel. Убедитесь, что значение по умолчанию для альфа-канала UILabel начинается с 0,85 и увеличивается до 1,0, а затем уменьшается до 0,75, и когда все будет сделано, вы вернетесь к 0,85.
Есть и другие способы сделать это, например, иметь другой вид поверх ярлыка, который является серым или черным, и использовать одно и то же begin ... commitAnimation, чтобы изменить альфа на значение от 0 до 0,20 или около того.
Прочтите вопрос, пожалуйста, – SeniorShizzle
Он отвечает только на часть анимации, поэтому этот ответ в порядке. –
Существует много способов сделать это с различным качеством. Одним из способов было бы подклассы UILabel и реализовать какой-то эффект градиента в coregraphics в методе drawRect.
Вы также можете играть с тенью текста (изменить цвет и альфу) и посмотреть, сможете ли вы придумать приличное свечение.
Самый простой способ, возможно, сделать прозрачное изображение с подсветкой в фотошопе и поместить его за текст, а затем сделать так, как маджудз предлагает ... затухать изображение в и из него с помощью колларинизации.
Я отправил некоторый пример кода, который подклассифицирует UILabel и позволяет применять свечение и мягкие тени к тексту.
http://www.redrobotstudios.com/blog/2010/04/29/create-glow-soft-shadow-text-on-iphone/
На 3.2 вы есть прямая поддержка теней в SDK.
label.layer.shadowColor = [label.textColor CGColor];
label.layer.shadowOffset = CGSizeMake(0.0, 0.0);
Play с параметрами:
label.layer.shadowRadius = 3.0;
label.layer.shadowOpacity = 0.5;
И чтобы избежать тени быть обрезаются bouds метки:
label.layer.masksToBounds = NO;
Не забудьте
#include <Quartzcore/Quartzcore.h>
и ссылка на QuartzCore
или CoreGraphics
(спасибо комментаторам за указание на это).
- (UILabel *) setUpGlowLabelWithFrame: (CGRect) frame fontSize: (int)fontSize {
UILabel* label = [[UILabel alloc] initWithFrame:frame];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:fontSize];
label.textColor = [UIColor whiteColor];
label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
label.textAlignment = UITextAlignmentCenter;
label.layer.shadowColor = [label.textColor CGColor];
label.layer.shadowOffset = CGSizeMake(0.0, 0.0);
label.layer.masksToBounds = NO;
label.layer.shadowRadius = 0.5f;
label.layer.shadowOpacity = 0.95;
label.numberOfLines = 2;
label.tag = 20;
return label;
}
Я получаю эффект свечения при использовании этого.
Надеюсь, это поможет.
Счастливое кодирование :)
хороший вопрос. Я хочу сделать точные вещи. – Raptor
Вы должны принять ответ @ andrewgleave, так как он отлично работает! – msgambel