在UIImage上添加一层颜色

时间:2015-03-01 22:00:54

标签: ios swift ios8 xcode6

我希望在点击时简单地让我的UIImage“突出显示”。还不确定颜色,但为了论证,我们说蓝色。因此,您点按图片,它会短暂显示为蓝色,然后导航到详细信息页面以在另一个屏幕上编辑内容。

从最初的一些阅读开始,似乎正确的做法是使用Quartz框架并执行此操作:

   imageView.layer.backgroundColor = UIColor.blueColor()
   imageView.layer.opacity = 0.7

我想这个想法是你改变图像背后的图层背景,然后通过设置图像的不透明度,蓝色“渗透”一点点,给你一个略带蓝色的图像?

然而,当我尝试上述操作时,图像本身会出现蓝色边框,并且根据不透明度,蓝色可能是暗的还是浅的。实际图像不再变成蓝色,但 对不透明度做出反应(这意味着如果我将它设置为类似.1,图像非常褪色且几乎看不见)。为什么图像反应正确,但不显示蓝色?

非常感谢!

4 个答案:

答案 0 :(得分:5)

据我所知,更改不透明度将改变整个视图的不透明度,这意味着不仅仅是UIImageView所拥有的UIImage。因此,不要褪色以显示UIImageView的背景颜色,而是在您看到时整个视图的不透明度会降低。

你可以做的另一种方法是在你的UIImageView上添加一个最初透明的UIView,改为改变它的不透明度:

UIView *blueCover = [[UIView alloc] initWithFrame: myImageView.frame];
blueCover.backgroundColor = [UIColor blueColor];
blueCover.layer.opacity = 0.0f;
[self.view addSubview: blueCover];

[UIView animateWithDuration:0.2f animations^{
  blueCover.layer.opacity = 0.5f
}];

答案 1 :(得分:2)

以下是我使用Swift -

在IOS 9中使用色调和色调不透明度的方法
//apply a color to an image
//ref - http://stackoverflow.com/questions/28427935/how-can-i-change-image-tintcolor
//ref - https://www.captechconsulting.com/blogs/ios-7-tutorial-series-tint-color-and-easy-app-theming
func getTintedImage() -> UIImageView {

    var image     : UIImage
    var imageView : UIImageView

    image = UIImage(named: "someAsset")!
    let size  : CGSize = image.size
    let frame : CGRect = CGRectMake((UIScreen.mainScreen().bounds.width-86)/2, 600, size.width, size.height)

    let redCover : UIView = UIView(frame: frame)

    redCover.backgroundColor = UIColor.redColor()
    redCover.layer.opacity = 0.75

    imageView       = UIImageView()
    imageView.image = image.imageWithRenderingMode(UIImageRenderingMode.Automatic)

    imageView.addSubview(redCover)

    return imageView
}

答案 2 :(得分:0)

您可以尝试更改色调颜色:

    UIImage *image = [UIImage imageNamed:@"yourImageAsset"];
    image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
    imageView.tintColor = [UIColor blueColor];
    imageView.image = image;

答案 3 :(得分:0)

这个点击是否可以用UIButton做点什么? UIButton具有所有这些状态,并且可能更容易使用,特别是如果在您点击它之后实际需要发生的事情。最糟糕的情况是你有一个UIButton,在点击时不会触发任何方法。