6.4 CAGradientLayer 圖層

2021-09-14 16:22 更新

CAGradientLayer

CAGradientLayer是用來生成兩種或更多顏色平滑漸變的。用Core Graphics復(fù)制一個(gè)CAGradientLayer并將內(nèi)容繪制到一個(gè)普通圖層的寄宿圖也是有可能的,但是CAGradientLayer的真正好處在于繪制使用了硬件加速。

基礎(chǔ)漸變

我們將從一個(gè)簡(jiǎn)單的紅變藍(lán)的對(duì)角線漸變開始(見清單6.6).這些漸變色彩放在一個(gè)數(shù)組中,并賦給colors屬性。這個(gè)數(shù)組成員接受CGColorRef類型的值(并不是從NSObject派生而來),所以我們要用通過bridge轉(zhuǎn)換以確保編譯正常。

CAGradientLayer也有startPointendPoint屬性,他們決定了漸變的方向。這兩個(gè)參數(shù)是以單位坐標(biāo)系進(jìn)行的定義,所以左上角坐標(biāo)是{0, 0},右下角坐標(biāo)是{1, 1}。代碼運(yùn)行結(jié)果如圖6.6

清單6.6 簡(jiǎn)單的兩種顏色的對(duì)角線漸變

@interface ViewController ()

@property (nonatomic, weak) IBOutlet UIView *containerView;

@end

@implementation ViewController

- (void)viewDidLoad
{
  [super viewDidLoad];
  //create gradient layer and add it to our container view
  CAGradientLayer *gradientLayer = [CAGradientLayer layer];
  gradientLayer.frame = self.containerView.bounds;
  [self.containerView.layer addSublayer:gradientLayer];

  //set gradient colors
  gradientLayer.colors = @[(__bridge id)[UIColor redColor].CGColor, (__bridge id)[UIColor blueColor].CGColor];

  //set gradient start and end points
  gradientLayer.startPoint = CGPointMake(0, 0);
  gradientLayer.endPoint = CGPointMake(1, 1);
}
@end

圖6.7 用locations構(gòu)造偏移至左上角的三色漸變

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)