我想做一個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
支持幾種屬性,使自然梯度,例如通過startPoint
和endPoint
設置梯度方向,通過locations
和colors
變色曲線。
您還可以通過使用alpha通道的顏色來製作透明效果。
截圖
SWIFT代碼
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
夫特3:
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
問題被標記目標c,而不是迅速。 – catalandres
@catalandres沒關係。我懂了。獅子座已經提出了一個迅速的版本。所以我可能不會編輯我的答案。 :-)如果有人需要objective-c版本,它會有幫助。 –
Thx爲您的答案。我用你的思想迅速重寫代碼,併成功。 :-) Thx,再次。 –