UILabelに影をつけるには通常、shadowColorプロパティとshadowOffsetプロパティを設定します。
暗めの背景色で、shadowColorを白、shadowOffsetを下に1ピクセルずらすと、立体感のあるラベルになります。
label.shadowColor = [UIColor whiteColor]; label.shadowOffset = CGSizeMake(0, 1);
shadowColorをグレー、shadowOffsetを縦横4ピクセルずらすと、次のようになります。
label.shadowColor = [UIColor grayColor]; label.shadowOffset = CGSizeMake(6, 6);
UILabelのプロパティでは、Blur効果のついた影(境界がぼやっとした影)を設定することはできません。
影にBlurを設定するにはQuartz 2DのCGContextSetShadow関数を使用します。
void CGContextSetShadow (
CGContextRef context,
CGSize offset,
CGFloat blur
);
Quartzを使って描画するので、UILabelを継承してdrawRect:メソッドをオーバーライドします。
#import <UIKit/UIKit.h> @interface ShadowStyleLabel : UILabel { } @end @implementation ShadowStyleLabel - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSaveGState(context); CGContextSetShadow(context, CGSizeMake(4.0f, -4.0f), 6.0f); [super drawRect:rect]; CGContextRestoreGState(context); } @end