Ho preso uno sguardo a questa domanda: UIImage Shadow TroubleCrea nuovo UIImage con l'aggiunta di ombra per UIImage esistente
Ma la risposta accettata non ha funzionato per me.
Quello che sto cercando di fare è prendere una UIImage e aggiungere un'ombra ad essa, quindi restituire un UIImage intero, ombra e tutto.
Questo è quello che sto cercando:
- (UIImage*)imageWithShadow {
CGColorSpaceRef colourSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef shadowContext = CGBitmapContextCreate(NULL, self.size.width, self.size.height + 1, CGImageGetBitsPerComponent(self.CGImage), 0,
colourSpace, kCGImageAlphaPremultipliedLast);
CGColorSpaceRelease(colourSpace);
CGContextSetShadow(shadowContext, CGSizeMake(0, -1), 1);
CGContextDrawImage(shadowContext, CGRectMake(0, 0, self.size.width, self.size.height), self.CGImage);
CGImageRef shadowedCGImage = CGBitmapContextCreateImage(shadowContext);
CGContextRelease(shadowContext);
UIImage * shadowedImage = [UIImage imageWithCGImage:shadowedCGImage];
CGImageRelease(shadowedCGImage);
return shadowedImage;
}
Il risultato è che ho esattamente la stessa immagine di prima ho messo attraverso questo metodo.
Sto facendo questo nel modo corretto, o c'è qualcosa di ovvio che mi manca?
Perfetto! In realtà stavo aggiungendo 1 all'altezza per disegnare l'ombra, ma l'altra roba (l'impostazione dell'ombra, il sistema di coordinate capovolto) era azzeccata. –
Dove dovrebbe essere implementato questo codice e come lo chiamereste per aggiungere un'ombra a un'immagine? –
Il metodo presuppone che la classe possa fornire un CGImage e le sue dimensioni. Puoi invece modificare il metodo per prendere i parametri (CGImage e CGSize). –