我正在寻找一种方法来为视图编写类似上图(来自Groupon应用程序)的效果。使用下面的代码,我试图让阴影进展,但它不起作用。我正在寻找的效果是从上到下变暗的视图。任何人都可以告诉我我做错了什么,以及如何更接近Groupon得到的效果?
view.layer.shadowColor = [[UIColor blackColor] CGColor];
view.layer.shadowRadius = 8.0f;
view.layer.shadowOpacity = 0.75f;
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:view.bounds cornerRadius:4.0];
view.layer.shadowPath = path.CGPath;
答案 0 :(得分:3)
您正在寻找的效果称为渐变。 (在iOS术语中,阴影是某些对象的复制品,模糊,着色和偏移。)
您可以使用CAGradientLayer来获得您正在寻找的那种效果;尝试添加其中一个作为视图的子图层。
答案 1 :(得分:0)
重申Jesse Rusak上面的解决方案,在你的UIView的Drawrect中你创建一个从clear到black的渐变并将它添加到你视图的子层中:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
UIColor * darkerColor = [UIColorcolorWithWhite:0.0alpha:0.5];
CGContextSetFillColorWithColor(context, darkerColor.CGColor);
CGContextFillRect(context, self.bounds);
NSArray *colors = [NSArrayarrayWithObjects:
((id)[self.backgroundColorcolorWithAlphaComponent:0.0f].CGColor),
((id) [UIColorcolorWithWhite:0.0alpha:1.0].CGColor), nil];
gradientLayer = [[CAGradientLayeralloc] init];
gradientLayer.startPoint = CGPointMake(0.5, 0);
gradientLayer.endPoint = CGPointMake(0.5,1);
gradientLayer.frame = self.frame;
gradientLayer.colors = colors;
[self.layerinsertSublayer:gradientLayeratIndex:0];
}