添加黑覆盖用0.3的不透明度超过的UIImageView(adding black overlay

2019-07-30 03:26发布

我有一个UIImageView,我想在它的上面添加一个黑色覆盖。 什么是这样做,而不必重写的drawRect的最佳方式? 我想加在它上面的一个的CALayer。 但不确定如何得到一个黑色的CALayer与0.3的alpha。

Answer 1:

像这样的事情?

UIView *overlay = [[UIView alloc] initWithFrame:CGRectMake(0, 0, myImageView.frame.size.width, myImageView.frame.size.height / 2)];
[overlay setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.3]];
[myImageView addSubview:overlay];


Answer 2:

感谢米克·麦卡勒姆

斯威夫特3版本

let overlay: UIView = UIView(frame: CGRect(x: 0, y: 0, width: cell.imageView.frame.size.width, height: cell.imageView.frame.size.height))
overlay.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.1)
cell.imageView.addSubview(overlay)

我已经使用了雨燕2.2

let overlay: UIView = UIView(frame: CGRectMake(0, 0, cell.imageView.frame.size.width, cell.imageView.frame.size.height))
overlay.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.1)
cell.imageView.addSubview(overlay)


Answer 3:

该MDT答案是正确的。 这又是另一种使用CAGradientLayerUIView 。 我认为这将让你想用更多的图形选项是什么。

首先你应该添加

#import <QuartzCore/QuartzCore.h>

ViewController.m ,并且要将此覆盖添加到您的任何地方UIImage使用:

CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = myImageView.layer.bounds;

gradientLayer.colors = [NSArray arrayWithObjects:
                        (id)[UIColor colorWithWhite:0.9f alpha:0.7f].CGColor,
                        (id)[UIColor colorWithWhite:0.0f alpha:0.3f].CGColor,
                        nil];

gradientLayer.locations = [NSArray arrayWithObjects:
                           [NSNumber numberWithFloat:0.0f],
                           [NSNumber numberWithFloat:0.5f],
                           nil];

//If you want to have a border for this layer also
gradientLayer.borderColor = [UIColor colorWithWhite:1.0f alpha:1.0f].CGColor;
gradientLayer.borderWidth = 1;
[myImageView.layer addSublayer:gradientLayer];

我希望这将帮助你把它



Answer 4:

你想添加UIView与黑色的backgroundColor和0.3阿尔法作为一个子视图到图像视图?



Answer 5:

这类似于MDT的答案,但使用的CALayer属性:

UIView *blackOverlay = [[UIView alloc] initWithFrame: imageView.frame];
blackOverlay.layer.backgroundColor = [[UIColor blackColor] CGColor];
blackOverlay.layer.opacity = 0.3f;
[self.view addSubview: blackOverlay];


文章来源: adding black overlay with 0.3 opacity over UIImageView