刻印文字っぽいのその1
2011/10/18
cocoa
iphone
objective-c
刻印文字っぽいのにチャレンジ
CGContextSetShadowWithColorをいろいろ駆使するとコーディングでいろいろ表現できる。
CSS3?のtext-shadow?で表現していることを参考にしています。
- (void)drawRect:(CGRect)rect
{
NSLog(@"*** override drawRect!!");
// コンテキストをゲット
CGContextRef context = UIGraphicsGetCurrentContext();
{
/*
* グラデーション
*/
// コンテクスト保存
CGContextSaveGState(context);
if(TRUE){// CGGradientを生成する
CGGradientRef gradient;
CGColorSpaceRef colorSpace;
size_t num_locations = 2;
CGFloat locations[2] = { 0.0, 1.0 };
// FFA500 FF4500
CGFloat components[8] = { 0xFF/255., 0xA5/255., 0x00/255., 1.0, // Start color
0xFF/255., 0x45/255., 0x00/255., 1.0 }; // End color
colorSpace = CGColorSpaceCreateDeviceRGB();
gradient = CGGradientCreateWithColorComponents(colorSpace, components,
locations, num_locations);
CGPoint startPoint = CGPointMake(self.frame.size.width/2, 0.0);
CGPoint endPoint = CGPointMake(self.frame.size.width/2, self.frame.size.height);
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
// GradientとColorSpaceを開放する
CGColorSpaceRelease(colorSpace);
CGGradientRelease(gradient);
}
// コンテクスト復元
CGContextRestoreGState(context);
}
{
/*
* 文字列を描画して影付けしている
*
*/
// コンテクスト保存
CGContextSaveGState(context);
UIColor *color1 = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.2];
UIColor *color2 = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.8];
CGContextSetShadowWithColor(context, CGSizeMake(-1.0f, 1.0f), 0.0f, [color1 CGColor]);
CGContextSetShadowWithColor(context, CGSizeMake(1.0f, 1.0f), 0.0f, [color2 CGColor]);
CGContextSetRGBFillColor (context, 0, 0, 0, 1); //
UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:40];
NSString *str = @"HelooWorkd";
[str drawAtPoint:CGPointMake(10, 10) withFont:font];
// コンテクスト復元
CGContextRestoreGState(context);
}
}
: