UIView
に、中央から左右に透明なグラデーションの効果を持たせたいと考えています。この例のように:どのように透明なグラデーションの効果を持つUIViewを作るには?
ワード籍
が所望の効果を有します。このビューはクラスMarqueeLabelによって実現されます。ソースコードを調べたところ、クラスCALayer
で実装されている可能性があります。
UIView
に、中央から左右に透明なグラデーションの効果を持たせたいと考えています。この例のように:どのように透明なグラデーションの効果を持つUIViewを作るには?
ワード籍
が所望の効果を有します。このビューはクラスMarqueeLabelによって実現されます。ソースコードを調べたところ、クラスCALayer
で実装されている可能性があります。
CAGradientLayer
を以下のように使用できます。
gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = baseView.bounds;
gradientLayer.startPoint = CGPointMake(0.5,0.0);
gradientLayer.endPoint = CGPointMake(0.5,1.0);
gradientLayer.locations = @[@(0.0), @(0.2), @(1.0)];
gradientLayer.colors = @[(id)[UIColor colorWithWhite:1.0 alpha:0.9].CGColor,
(id)[UIColor colorWithWhite:1.0 alpha:0.3].CGColor,
(id)[UIColor colorWithWhite:1.0 alpha:0.0].CGColor];
[baseView.layer addSublayer:gradientLayer];
CAGradientLayer
例えばlocations
とcolors
によって色カーブを変更、startPoint
とendPoint
により勾配方向を設定するように、自然の勾配を作るためにいくつかのプロパティをサポートします。
また、色のアルファチャンネルを使用して透明効果を作ります。
スクリーンショット3
let mask = CAGradientLayer()
mask.startPoint = CGPointMake(0.0, 0.5)
mask.endPoint = CGPointMake(1.0, 0.5)
let whiteColor = UIColor.whiteColor()
mask.colors = [whiteColor.colorWithAlphaComponent(0.0).CGColor,whiteColor.colorWithAlphaComponent(1.0),whiteColor.colorWithAlphaComponent(1.0).CGColor]
mask.locations = [NSNumber(double: 0.0),NSNumber(double: 0.2),NSNumber(double: 1.0)]
mask.frame = label.bounds
label.layer.mask = mask
スウィフト
スウィフトコード:
let mask = CAGradientLayer()
mask.startPoint = CGPoint(x: 0, y: 0.5)
mask.endPoint = CGPoint(x:1.0, y:0.5)
let whiteColor = UIColor.white
mask.colors = [whiteColor.withAlphaComponent(0.0).cgColor,whiteColor.withAlphaComponent(1.0),whiteColor.withAlphaComponent(1.0).cgColor]
mask.locations = [NSNumber(value: 0.0),NSNumber(value: 0.2),NSNumber(value: 1.0)]
mask.frame = view.bounds
view.layer.mask = mask
質問はフラグが付けられたObjective-Cの、迅速ではありません。 – catalandres
@catalandres大丈夫です。そうですか。レオはすでに迅速なバージョンを提案しています。だから私は私の答えを編集しないかもしれない。 :-)客観的なバージョンが必要な人がいるなら、助けになるでしょう。あなたの答えは –
Thxです。私はあなたの思考によって迅速にコードを書き直し、成功します。 :-) Thx、もう一度。 –