我的应用程序有大量世界各地不同城市的图像,问题是,其中一些图像与右下角的白色标签效果不太好,我想知道是否有某种方法可以模糊或遮蔽角落并且仅遮蔽那个角落,以使所有图像与标签看起来都很好。示例:(是的,我知道标签与城市不匹配,我还没有导入所有城市。)
那个可能看起来不错。
但是这个可以使用一些阴影。无论如何,我要让 UIImageView 在右下角有某种模糊/遮蔽阴影效果,以使所有图像看起来都不错,而无需对数百张单张照片进行 Photoshop 处理?非常感谢你们。
我的应用程序有大量世界各地不同城市的图像,问题是,其中一些图像与右下角的白色标签效果不太好,我想知道是否有某种方法可以模糊或遮蔽角落并且仅遮蔽那个角落,以使所有图像与标签看起来都很好。示例:(是的,我知道标签与城市不匹配,我还没有导入所有城市。)
那个可能看起来不错。
但是这个可以使用一些阴影。无论如何,我要让 UIImageView 在右下角有某种模糊/遮蔽阴影效果,以使所有图像看起来都不错,而无需对数百张单张照片进行 Photoshop 处理?非常感谢你们。
您可以使用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:
设计方面,我认为这是一种更好的方法,但代码并不那么有趣!
您可以更改图像的 CALayer 属性..这是非常有效和强大的试试这个:
UIView *view = [[UIView alloc] initWithFrame:frame];
view.layer.shadowColor = [[UIColor COLOR] CGColor];
view.layer.shadowRadius = 5.0;
view.layer.cornerRadius = 5.0;