2013-12-23 3 views
0

Я создал форму алмаза через CoreGraphics, которая будет использоваться как UIButton. У меня возникают проблемы с настройкой его нажатого состояния, установка цвета фона при выборе оттенков всего кадра, а так как кнопка с бриллиантовой формой рисуется, изображение не используется для выбранного состояния. Как я могу получить его так, что когда нажата кнопка с бриллиантовой формой, только алмаз в представлении UIButton меняет цвет?Как создать цвет выбранного цвета для UIButton с рисунком CoreGraphics?

ответ

0

Если у вас есть изображение для алмаза, почему бы не сделать выбранное изображение состояния и использовать [UIButton setImage: forState:]?

Если вы делаете все чертеж самостоятельно, вам нужно закрепить рисунок на алмазе. ctx - это объект CGContext, к которому вы обращаетесь.

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
CGContextRef maskCtx = CGBitmapContextCreate(NULL, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedFirst); 
CGColorSpaceRelease(colorSpace); 

UIBezierPath* path = CreateADiamondBezierPath(); 

CGContextSetRGBFillColor(maskCtx, 0, 0, 0, 1); 
CGContextBeginPath(maskCtx); 
CGContextAddPath(maskCtx, path.CGPath); 
CGContextFillPath(maskCtx); 

CGImageRef maskImg = CGBitmapContextCreateImage(maskCtx); 

//Clip to the mask 
CGContextClipToMask(ctx, scaledFrame, maskImg); 

//Now fil in your ctx with the selected color 
CGContextSetRGBFillColor(ctx, 1, 0, 0, 1); //this does red 

CFRelease(maskImg); 
CFRelease(maskCtx); 
Смежные вопросы