1

我的应用程序有大量世界各地不同城市的图像,问题是,其中一些图像与右下角的白色标签效果不太好,我想知道是否有某种方法可以模糊或遮蔽角落并且仅遮蔽那个角落,以使所有图像与标签看起来都很好。示例:(是的,我知道标签与城市不匹配,我还没有导入所有城市。)

那个可能看起来不错。

在此处输入图像描述

但是这个可以使用一些阴影。无论如何,我要让 UIImageView 在右下角有某种模糊/遮蔽阴影效果,以使所有图像看起来都不错,而无需对数百张单张照片进行 Photoshop 处理?非常感谢你们。

4

2 回答 2

1

您可以使用CILinearGradient仅在一个角落获得渐晕效果:

在此处输入图像描述

- (CIImage*) processPhoto:(CIImage*)image {
    CGFloat width = [image extent].size.width;
    CGFloat height = [image extent].size.height;

    CIFilter* gradient = [CIFilter filterWithName:CILinearGradient];

    [gradient setValue:
        [CIVector vectorWithX:width*0.75 Y:height*0.5]
                forKey:@"inputPoint0"];

    [gradient setValue:
        [CIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:0]
                forKey:@"inputColor0"];

    [gradient setValue:
        [CIVector vectorWithX:width*0.85 Y:0]
                forKey:@"inputPoint1"];

    [gradient setValue:
        [CIColor colorWithRed:0 green:0 blue:0 alpha:0.7]
                forKey:@"inputColor1"];

    CIImage* croppedImage =
        [gradient.outputImage imageByCroppingToRect:[image extent]];

    CIFilter* composite = [CIFilter filterWithName:CIHardLightBlendMode];
    [composite setValue:croppedImage forKey:kCIInputImageKey];
    [composite setValue:image forKey:kCIInputBackgroundImageKey];
    return composite.outputImage;
}

您可能想要更多地调整端点和渐变以获得最佳结果。

或者,如果您更喜欢方形外观,您可以在文本和具有黑色背景且不透明度约为 0.4 的图像之间粘贴一个 UIView:

在此处输入图像描述

设计方面,我认为这是一种更好的方法,但代码并不那么有趣!

于 2013-01-30T05:15:41.460 回答
-1

您可以更改图像的 CALayer 属性..这是非常有效和强大的试试这个:

UIView *view = [[UIView alloc] initWithFrame:frame];

view.layer.shadowColor = [[UIColor COLOR] CGColor];

view.layer.shadowRadius = 5.0;

view.layer.cornerRadius = 5.0;

于 2013-01-30T05:13:12.803 回答