IOS/Objective-C:改变图像视图的色调
Posted
技术标签:
【中文标题】IOS/Objective-C:改变图像视图的色调【英文标题】:IOS/Objective-C: Change tint of an image view 【发布时间】:2017-07-07 20:33:17 【问题描述】:我想在用户触摸时更改图像视图的颜色。我不需要它来改变很多。但是,我希望它变成蓝色。我找到了以下代码来更改渐变,但它没有任何效果。实际上,我不需要渐变,只需要一种色调。希望有任何建议。
UIView *snapshot = [[UIImageView alloc] initWithImage:image];
snapshot.layer.masksToBounds = NO;
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.colors = @[(id)[UIColor redColor].CGColor, (id)[UIColor blackColor].CGColor];
[snapshot.layer insertSublayer:gradient atIndex:0];
【问题讨论】:
someView.backgroundColor = [UIColor blueColor];
【参考方案1】:
一种简单且非侵入性的方法是在您的图像视图中添加半透明叠加层。然后可以在按下和释放按钮时显示和隐藏它。
- (void)indicatedImageViewPressed:(UIImageView *)imageView on:(BOOL)on
UIView *overlay = [imageView viewWithTag:1]; // See if already created
if (overlay == nil)
overlay = [[UIView alloc] initWithFrame:imageView.bounds];
overlay.tag = 1; // Mark view to find it next time
overlay.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:0.3]; // Your color overlay goes here
[imageView addSubview:overlay];
overlay.hidden = !on;
【讨论】:
我将签名中的 imageView 更改为 UIView,它就像一个魅力,所以无需将视图更改为 imageview。【参考方案2】:您可以尝试给 UIImage 着色
UIImage *image = [[UIImage imageNamed:@"Your Image"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.tintColor = [UIColor clearColor]; // Or any color really you'd like would work
imageView.image = newImage;
然后在用户使用点击手势识别器触摸图像时更改该色调
【讨论】:
我从 UIView 开始,而不是图像。我还能用这个吗?另外,newImage 是指第一行中的图像吗? 您从 UIView 开始,但您将其分配为 UIImageView。如果您实际使用的是 UIView,您将如何显示图像? 视图作为其他代码的一部分被移动了很多。当我尝试时,snapshot.image 我没有在快照上找到属性图像。我不愿意将快照更改为实际的 UIImage,因为在其他代码中会发生各种事情。以上是关于IOS/Objective-C:改变图像视图的色调的主要内容,如果未能解决你的问题,请参考以下文章
数据增强-亮度-对比度-色彩饱和度-色调-锐度 不改变图像大小
在 Swift 中按下 uibutton 时更改色调图像颜色
R语言使用magick包的image_modulate函数image_fill函数改变图像的亮度饱和度色调渲染指定位置为特定颜色(Modulate and paint an image)