今回のお題は、iOS7がフラットデザイン風になったことで、
すっかり肩身の狭くなった感があるグラデーションについてです。
すっかり肩身の狭くなった感があるグラデーションについてです。
肩身が狭くなったとは言え、デザイン上なにかと必要になるグラデーションなのですが、
「CAGradientLayer」を使用すればUIViewに簡単にグラデーションをかける事ができます。
手順は、
1.「CGGradientLayer」を作る
2.サイズ、色、開始位置と終了位置を指定
3.UIViewのlayerにグラデーションのレイヤーを追加
これだけ。
では、実際に書いてみましょう。
//条件作成 UIView *view = [[UIView alloc]init]; view.frame = CGRectMake(50, 50, 150, 150); UIColor *startColor = [UIColor blueColor]; //開始色は青 UIColor *endColor = [UIColor yellowColor]; //終了色は黄 NSInteger angle = angle0; //角度は0度 //1.「CGGradientLayer」を作る CAGradientLayer* gradientLayer = [CAGradientLayer layer]; //2.サイズ、色、開始位置と終了位置を指定 gradientLayer.frame = view.bounds; gradientLayer.colors = [NSArray arrayWithObjects: (id)startColor.CGColor, //開始色 (id)endColor.CGColor, //終了色 nil]; CGPoint startPoint = CGPointMake(0.0f, 0.0f); CGPoint endPoint = CGPointMake(0.0f, 0.0f); //グラデーションの角度 switch (angle) { case angle0: //0度 startPoint = CGPointMake(0.5f, 0.0f); endPoint = CGPointMake(0.5f, 1.0f); break; case angle45: //45度 startPoint = CGPointMake(1.0f, 0.0f); endPoint = CGPointMake(0.0f, 1.0f); break; case angle90: //90度 startPoint = CGPointMake(1.0f, 0.5f); endPoint = CGPointMake(0.0f, 0.5f); break; default: startPoint = CGPointMake(0.5f, 0.0f); endPoint = CGPointMake(0.5f, 1.0f); break; } [gradientLayer setStartPoint:startPoint]; [gradientLayer setEndPoint:endPoint]; //3.UIViewのlayerにグラデーションのレイヤーを追加 [view.layer insertSublayer:gradientLayer atIndex:0]; [self.view addSubview:view];
簡単ですね。結果がこれです。
//グラデーションの角度 typedef enum { angle0, angle45, angle90, } angle;
角度を0度、45度、90度に変えた結果がこちら。
ちなみに、途中の「colors」に複数の色を入れると、
gradientLayer.colors = [NSArray arrayWithObjects: (id)[UIColor redColor].CGColor, (id)[UIColor orangeColor].CGColor, (id)[UIColor yellowColor].CGColor, (id)[UIColor greenColor].CGColor, (id)[UIColor blueColor].CGColor, (id)[UIColor purpleColor].CGColor, nil];
こんなこともできます。
レインボーマン。いや、なんでもないです…
ちょっとグラデったい時に試してみてはどうでしょう。
0 件のコメント:
コメントを投稿