我希望在点击时简单地让我的UIImage“突出显示”。还不确定颜色,但为了论证,我们说蓝色。因此,您点按图片,它会短暂显示为蓝色,然后导航到详细信息页面以在另一个屏幕上编辑内容。
从最初的一些阅读开始,似乎正确的做法是使用Quartz框架并执行此操作:
imageView.layer.backgroundColor = UIColor.blueColor()
imageView.layer.opacity = 0.7
我想这个想法是你改变图像背后的图层背景,然后通过设置图像的不透明度,蓝色“渗透”一点点,给你一个略带蓝色的图像?
然而,当我尝试上述操作时,图像本身会出现蓝色边框,并且根据不透明度,蓝色可能是暗的还是浅的。实际图像不再变成蓝色,但 对不透明度做出反应(这意味着如果我将它设置为类似.1,图像非常褪色且几乎看不见)。为什么图像反应正确,但不显示蓝色?
非常感谢!
答案 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,在点击时不会触发任何方法。