標籤:
代碼如下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和按鈕都可以顯示,並且按鈕的點擊事件正常響應)
IOS 建立漸層圖層