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 3

JQuery 改变 <img> 的色调、饱和度、伽玛?

在 Swift 中按下 uibutton 时更改色调图像颜色

UITabBar 选择的选项卡在启动时不会改变色调颜色

R语言使用magick包的image_modulate函数image_fill函数改变图像的亮度饱和度色调渲染指定位置为特定颜色(Modulate and paint an image)