voglio aggiungere un bagliore ombra SBIADETTO/esterno per un UIImage
/UIImageView
/UIView
ma non so Core Graphics
a tutti.Come faccio ad aggiungere un bagliore esterno a un UIImage o UIImageView o UIView
Modifica: Please Help !!
voglio aggiungere un bagliore ombra SBIADETTO/esterno per un UIImage
/UIImageView
/UIView
ma non so Core Graphics
a tutti.Come faccio ad aggiungere un bagliore esterno a un UIImage o UIImageView o UIView
Modifica: Please Help !!
Prendere l'approccio delineato da Cirrostratus, conservarne una copia memorizzata nella cache e quindi applicare una trasformazione per modificare le dimensioni e/o la posizione dell'immagine durante il trascinamento.
(attenzione, non si tratta di codice funzionale/testato, ma dovrebbe iniziare)
-(UIImage*)addGlowToImage:(UIImage*)imageInput;
{
CGRect newSize = imageInput.bounds;
CGImageRef theImage = imageInput.CGImage;
// expand the size to handle the "glow"
newSize.size.width += 6.0;
newSize.size.height += 6.0;
UIGraphicsBeginImageContext(newSize);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextBeginTransparencyLayerWithRect(ctx, newSize, NULL);
CGContextClearRect(ctx, newSize);
// you can repeat this process to build glow.
CGContextDrawImage(ctx, newSize, theImage);
CGContextSetAlpha(ctx, 0.2);
CGContextEndTransparencyLayer(ctx);
// draw the original image into the context, offset to be centered;
CGRect centerRect = inputImage.bounds;
centerRect.origin.x += 3.0;
centerRect.origin.y += 3.0;
CGContextDrawImage(ctx, centerRect, theImage);
result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return result;
}
Poi nel metodo, mentre il ridimensionamento si dovrebbe fare qualcosa di simile:
// assumes UIImage *cachedImage = [self addGlowToImage:origImage]; has been called already.
// assumes ivars for scale exists
CGRect newRect = cachedImage.bounds;
newRect.size.width += scale;
newRect.size.height += scale;
[cachedImage drawInRect:newRect]; // image will be scaled to fill destination rectangle.
Sicuramente prendere un guarda i documenti Apple. Un buon punto di partenza è lo Quartz 2D Programming Guide.
Per quanto riguarda le prestazioni, iPhone OS non supporta le proprietà shadowColor, shadowOffset, shadowOpacity e shadowRadius, che è possibile utilizzare normalmente in Cocoa. La maggior parte delle persone duplica la forma che desidera illuminare più volte abbassando ogni volta l'opacità e compensando la forma un pixel alla volta per simulare l'aspetto di una luce. Se il tuo bagliore non ha bisogno di essere molto grande, non puoi dire la differenza.
Questo vi porterà fino alot delle prestazioni se la vista viene aggiornata più volte al secondo. Sto cambiando le dimensioni usando l'evento 'touchesMoved'. – Jaba
È possibile utilizzare questo, semplice e veloce, questo funziona utilizzando UIView, sbottonare, ecc:
UIView *shadowView = [[UIView alloc] initWithFrame:CGRectMake(100, 66, 112, 112)];
shadowView.layer.shadowColor = [[UIColor blackColor] CGColor];
shadowView.layer.shadowOpacity = .4;
shadowView.layer.shadowOffset = CGSizeZero;
shadowView.layer.masksToBounds = NO;
se, è possibile utilizzare le radio, aggiungere questo:
shadowView.layer.shadowRadius = 10.0f;
Va bene, non esattamente quello che volevo ma, accetterò, volevo una dissolvenza. – Jaba
Puoi anche usare la proprietà shadow come bagliore se cambi il colore. Semplice e facile. – zekel
Questo codice è sbagliato in molti modi ... –