代码如下 typedef enum { GradientLayerKindLeftRight = 2000, GradientLayerKindUpDown, GradientLayerKindLBRT,//左下-右上 GradientLayerKindLTRB //左上-右下 }GradientLayerKind; //-------------------------------------------------------------- // 创建矩形渐变图层 // // @param frame 渐变图层的frame // @param startColor 起始颜色(设置起止颜色的时候可以设置颜色的透明度达到透明度渐变的效果) // @param endColor 终止颜色 // @param kind 渐变类型 // GradientLayerKindLeftRight = 1,//左-右 // GradientLayerKindUpDown, //上-下 // GradientLayerKindLBRT, //左下-右上 // GradientLayerKindLTRB //左上-右下 // @return 渐变色layer //---------------------------------------------------------- - (CALayer*)ct_getGradientLayerWithFrame:(CGRect)frame StartColor:(UIColor *)startColor endColor:(UIColor*)endColor andKind:(GradientLayerKind)kind{ //渐变图层 CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.frame = frame; [gradientLayer setColors:[NSArray arrayWithObjects:(id)[startColor CGColor],(id)[endColor CGColor], nil]]; if (kind == GradientLayerKindUpDown) { [gradientLayer setLocations:@[@0,@1]]; [gradientLayer setStartPoint:CGPointMake(0.5, 0)]; [gradientLayer setEndPoint:CGPointMake(0.5, 1)]; }else if (kind == GradientLayerKindLeftRight){ [gradientLayer setLocations:@[@0,@1]]; [gradientLayer setStartPoint:CGPointMake(0, 0.5)]; [gradientLayer setEndPoint:CGPointMake(1, 0.5)]; }else if (kind == GradientLayerKindLTRB){ [gradientLayer setLocations:@[@0,@1]]; [gradientLayer setStartPoint:CGPointMake(0, 0)]; [gradientLayer setEndPoint:CGPointMake(1, 1)]; }else if (kind == GradientLayerKindLBRT){ [gradientLayer setLocations:@[@0,@1]]; [gradientLayer setStartPoint:CGPointMake(0, 1)]; [gradientLayer setEndPoint:CGPointMake(1, 0)]; } return gradientLayer; } 使用:viewcontroller的viewdidload中 for (int i = 0; i < 4; i++) { NSInteger hang = i%2,lie=i/2; CGFloat w=self.view.frame.size.width/2.0,h=(self.view.frame.size.height-64)/2.0; CGRect frame = CGRectMake(hang*w, lie*h, w, h); [self.view.layer addSublayer:[self ct_getGradientLayerWithFrame:frame StartColor:[self rgb:0 g:0 b:0 a:0.9] endColor:[self rgb:255 g:255 b:255 a:0.1] andKind:i+2000]]; } 设置颜色方法: -(UIColor*)rgb:(NSInteger)r g:(NSInteger)g b:(NSInteger)b a:(CGFloat)alpha{ return [UIColor colorWithRed:r%256/256.0 green:g%256/256.0 blue:b%256/256.0 alpha:alpha]; } 效果图如图所示:(可以发现图层下的label和按钮都可以显示,并且按钮的点击事件正常响应)