Chcę dodać FADED Cień/Outer Glow do UIImage
/UIImageView
/UIView
ale nie znam Core Graphics
w ogóle.Jak mogę dodać zewnętrzną blask do UIImage i UIImageView lub UIView
Edytuj: Proszę o pomoc!
Chcę dodać FADED Cień/Outer Glow do UIImage
/UIImageView
/UIView
ale nie znam Core Graphics
w ogóle.Jak mogę dodać zewnętrzną blask do UIImage i UIImageView lub UIView
Edytuj: Proszę o pomoc!
Take podejścia przedstawionego przez cirrostratus, zachować w pamięci podręcznej kopię, a następnie zastosować transformację, aby zmienić rozmiar i/lub położenie obrazu podczas przeciągania.
(uwaga, to nie jest funkcjonalny/code testowane, ale powinno Ci zacząć)
-(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;
}
Następnie w metodzie podczas skalowania byś zrobił coś takiego:
// 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.
Zdecydowanie wziąć spójrz na docs jabłkowy. Dobrym miejscem początkowym jest Quartz 2D Programming Guide.
Pod względem wydajności iPhone OS nie obsługuje właściwości shadowColor, shadowOffset, shadowOpacity i shadowRadius, których można normalnie używać w Cocoa. Większość ludzi powtarza kształt, który chcą kilkakrotnie poświecić, za każdym razem obniżając krycie i przesuwając kształt o jeden piksel na raz, aby zasymulować wygląd blasku. Jeśli Twój blask nie musi być bardzo duży, nie możesz odróżnić.
To zajmie dużo wydajności, jeśli widok jest aktualizowany wiele razy na sekundę. Zmieniam rozmiar za pomocą zdarzenia 'touchesMoved'. – Jaba
Można to wykorzystać, prosty i szybki, to działa przy użyciu UIView, rozpiąć, etc:
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;
jeśli można użyć radia, dodać to:
shadowView.layer.shadowRadius = 10.0f;
W porządku, nie dokładnie to, co chciałem, ale zaakceptuję, chciałem zniknąć. – Jaba
Możesz także użyć właściwości shadow jako blasku, jeśli zmienisz kolor. Proste i łatwe. – zekel
Ten kod jest błędny na tak wiele sposobów ... –