Che ne dici di sottoclasse UIView e aggiunta di UIImage ivar (immagine chiamata)? Quindi potresti sovrascrivere -drawRect: qualcosa di simile, a patto di avere un ivar booleano chiamato premuto che è stato impostato mentre è stato toccato.
- (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);
}
}
Si vorrebbe provare con i valori RGBA sopra. E, ovviamente, le forme non rettangolari richiedono un po 'più di lavoro, come un CGMutablePathRef.
È possibile utilizzare un 'UIButton' invece? –