Tôi muốn thêm bóng FADED/ánh sáng ngoài vào UIImage
/UIImageView
/UIView
nhưng tôi hoàn toàn không biết Core Graphics
.Làm cách nào để thêm ánh sáng bên ngoài vào UIImage hoặc UIImageView hoặc UIView
Chỉnh sửa: Xin vui lòng trợ giúp !!
Tôi muốn thêm bóng FADED/ánh sáng ngoài vào UIImage
/UIImageView
/UIView
nhưng tôi hoàn toàn không biết Core Graphics
.Làm cách nào để thêm ánh sáng bên ngoài vào UIImage hoặc UIImageView hoặc UIView
Chỉnh sửa: Xin vui lòng trợ giúp !!
Thực hiện phương pháp được phác thảo bởi Cirrostratus, giữ một bản sao được lưu trong bộ nhớ cache của nó và sau đó áp dụng biến đổi để thay đổi kích thước và/hoặc vị trí của hình ảnh trong khi kéo.
(cảnh báo, đây không phải là chức năng kiểm tra mã /, nhưng bạn nên bắt đầu)
-(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;
}
Sau đó, trong phương pháp của bạn trong khi mở rộng quy mô, bạn sẽ làm điều gì đó như:
// 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.
Chắc chắn phải mất một nhìn vào tài liệu táo. Một nơi khởi đầu tốt là Quartz 2D Programming Guide.
Khi xem xét hiệu suất, hệ điều hành iPhone không hỗ trợ các thuộc tính shadowColor, shadowOffset, shadowOpacity và shadowRadius, mà bạn thường có thể sử dụng trong Cocoa. Hầu hết mọi người lặp lại hình dạng họ muốn phát sáng nhiều lần với mỗi lần hạ thấp độ mờ và bù đắp hình dạng một pixel tại một thời điểm để mô phỏng giao diện của ánh sáng. Nếu ánh sáng của bạn không cần phải rất lớn, bạn không thể nói sự khác biệt.
này sẽ mất rất nhiều hiệu suất nếu lượt xem đang được cập nhật nhiều lần mỗi giây. Tôi đang thay đổi kích thước bằng cách sử dụng sự kiện 'touchesMoved'. – Jaba
Bạn có thể sử dụng, đơn giản và nhanh chóng, công trình này sử dụng UIView, mở nút, vv:
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;
nếu, bạn có thể sử dụng radio, thêm này:
shadowView.layer.shadowRadius = 10.0f;
Alright, không chính xác những gì tôi muốn nhưng, tôi sẽ chấp nhận, tôi muốn một phai. – Jaba
Bạn cũng có thể sử dụng thuộc tính shadow làm sáng nếu bạn thay đổi màu. Đơn giản và dễ dàng. – zekel
Mã này sai theo nhiều cách ... –