Как программно обеспечить глянцевый вид UIButtons? - PullRequest
3 голосов
/ 14 сентября 2010

Я хотел бы добавить 3D или глянцевый вид на некоторые кнопки iPhone UIB, но сделать это без использования PNG или растягиваемых изображений. У меня есть множество кнопок различных форм и размеров с большим количеством цветов, которые создаются на лету, поэтому в моем случае предварительно неиспользуемые изображения невозможны.

Как бы вы нарисовали глянец на этих кнопках программно?

Ответы [ 3 ]

3 голосов
/ 14 сентября 2010

В этом ответе я предоставляю некоторый код для рисования градиента глянца над UIView, но Ответ Мирко на тот же вопрос показывает более эффективный способ сделать это.

В качестве примера для моего курса я создал более сложный стиль трехмерных кнопок с глянцем и тенями.Код этой трехмерной кнопки является частью пакета, который можно загрузить здесь (ищите подкласс MATCGlossyButton UIButton).Я описываю рисунок этого элемента в видео для класса Quartz 2D из весеннего семестра моего курса по разработке для iPhone на iTunes U .

1 голос
/ 14 сентября 2010

Один из способов сделать это программно - изменить свойства слоя UIButton.Например, вы можете добавить экземпляр CAGradientLayer в качестве подслоя, установить радиус угла слоя, изменить его границу и т. Д. Мэтт Лонг написал отличную статью об этом:

http://www.cimgf.com/2010/01/28/fun-with-uibuttons-and-core-animation-layers/

0 голосов
/ 29 ноября 2012
UIButton *button1                 =   [[UIButton alloc] initWithFrame:CGRectMake(10, 10, 200, 40)];
button1.backgroundColor           =   [UIColor blackColor];

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = button1.bounds;
gradient.colors = [NSArray arrayWithObjects: (id)[[UIColor grayColor] CGColor],(id)[[UIColor blackColor] CGColor], nil];
[button1.layer insertSublayer:gradient atIndex:0];
...