Как насчет создания подкласса UIView и добавления UIImage ivar (называемого image)?Затем вы можете переопределить -drawRect: что-то вроде этого, при условии, что у вас есть булевский ивар с именем press, который был установлен во время касания.
- (void)drawRect:(CGRect)rect
{
[image drawAtPoint:(CGPointMake(0.0, 0.0))];
// if pressed, fill rect with dark translucent color
if (pressed)
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
CGContextSetRGBFillColor(ctx, 0.5, 0.5, 0.5, 0.5);
CGContextFillRect(ctx, rect);
CGContextRestoreGState(ctx);
}
}
Вы можете поэкспериментировать со значениями RGBA выше.И, конечно же, непрямоугольные формы потребуют немного больше работы - как CGMutablePathRef.