最新の SDK を使用して iOS 5.0 以降のアプリを開発しています。
私は CoreGraphics に非常に慣れていないので、 に放射グラデーションを描画する方法がわかりませんCALayer
。
CGContextDrawRadialGradientを使用して放射グラデーションを描画する必要があることがわかりました。
Google で検索すると、放射グラデーションを CALayer のコンテンツに追加する必要があることがわかりますが、それを描画するにはCGContextが必要で、これを取得する方法がわかりませんCGContext
。
どうすればできるか知っていますか?
このチュートリアルを見つけましたが、CGContext
.
私のコードはこれです:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIView *testView;
@end
実装:
#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface ViewController ()
- (void)drawRadiantGradient;
@end
@implementation ViewController
@synthesize testView = _testView;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self drawRadiantGradient];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)drawRadiantGradient
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat redBallColors[] = {
1.0, 0.9, 0.9, 0.7,
1.0, 0.0, 0.0, 0.8
};
CGFloat glossLocations[] = {0.05, 0.9};
CGGradientRef ballGradient = CGGradientCreateWithColorComponents(colorSpace, redBallColors, glossLocations, 2);
CGRect circleBounds = CGRectMake(20, 250, 100, 100);
CGPoint startPoint = CGPointMake(50, 270);
CGPoint endPoint = CGPointMake(70, 300);
CGContextDrawRadialGradient(context, ballGradient, startPoint, 0, endPoint, 50, 0);
CGContextAddEllipseInRect(context, circleBounds);
CGContextDrawPath(context, kCGPathStroke);
}
を作成しCALayer
、放射グラデーションを描画し、これCALayer
を に追加し_testView
ます。