web-dev-qa-db-ja.com

UIImageViewに0.3の不透明度の黒いオーバーレイを追加

UIImageViewがあり、その上に黒いオーバーレイを追加したいと思いました。 drawRectをオーバーライドせずにこれを行う最良の方法は何ですか?その上にCALayerを追加することを考えていました。しかし、.3アルファの黒いCALayerを取得する方法がわかりません。

18
xonegirlz

このようなもの?

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];
50
Mick MacCallum

おかげで Mick MacCallum

Swift 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)

私はSwift 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)
16
swiftBoy

MDTの答えは正しいです。これは、CAGradientLayerの横にUIViewを使用するもう1つの方法です。私はそれがよりグラフィカルなオプションであなたが望むものを作ると思います。

最初に追加する必要があります

#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];

これがあなたがそれを作るのを助けることを願っています

8
nfarshchi

これは、CALayerプロパティを使用することを除いて、MDTの回答に似ています。

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

画像ビューのサブビューとして、backgroundColorが黒で、アルファが0.3のUIViewを追加することを考えましたか?

4
DrummerB