0
下一个代码在ios6中正常工作。它应该在视图中应用顶部和底部的内部alpha梯度:layer.mask渐变在iOS7中为实体
CAGradientLayer * gradient = [CAGradientLayer layer];
gradient.frame = self.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor clearColor] CGColor],
(id)[[UIColor whiteColor]CGColor],
(id)[[UIColor whiteColor]CGColor],
(id)[[UIColor clearColor] CGColor],
nil];
gradient.startPoint = CGPointMake(0.5, 0.0);
gradient.endPoint = CGPointMake(0.5, 1.0);
gradient.locations = [NSArray arrayWithObjects:@0,@(val),@(1.-val),@1,nil];
self.layer.mask = gradient;
但是!如果我在iOS7中运行此代码,而不是一个很好的混合alpha梯度,渐变的“透明”部分是纯白色。
我在使用内置颜色时遇到的一个问题是颜色具有的颜色成分的数量。白色,灰色和黑色有2种颜色分量,而其他颜色有4种。尝试将白色改为“[UIColor colorWithRed:green:blue:alpha]”,而不是内置颜色。它可能没有帮助,但可以尝试。 – Putz1103
感谢您的回复。我想: 'gradient.colors = [NSArray的arrayWithObjects: (ID)[[的UIColor colorWithRed:0绿:0蓝色:0阿尔法:0] CGColor], (ID)[[的UIColor colorWithRed:0绿色:0 blue:0 alpha:1] CGColor], (id)[[UIColor colorWithRed:0 green:0 blue:0 alpha:1] CGColor], (id)[[UIColor colorWithRed:0 green:0 blue: 0 alpha:0] CGColor], nil];' 但得到了同样的结果。 – Mephes