2015-06-19 3 views
1

Я попытался подклассов UILabel со следующим кодом .. но не смог получить вид, похожий на Label with DropShadowтень UILabel

- (void) drawRect:(CGRect)rect { 
    CGSize myShadowOffset = CGSizeMake(4, -4); 
    CGFloat myColorValues[] = {0, 0, 0, .8}; 

    CGContextRef myContext = UIGraphicsGetCurrentContext(); 
    CGContextSaveGState(myContext); 

    CGColorSpaceRef myColorSpace = CGColorSpaceCreateDeviceRGB(); 
    CGColorRef myColor = CGColorCreate(myColorSpace, myColorValues); 
    CGContextSetShadowWithColor (myContext, myShadowOffset, 5, myColor); 

    self.layer.shadowOffset = CGSizeMake(0, 1); 
    self.layer.shadowOpacity = 0.5; 
    self.shadowColor = [UIColor blackColor]; 

    [super drawTextInRect:rect]; 

    CGColorRelease(myColor); 
    CGColorSpaceRelease(myColorSpace); 

    CGContextRestoreGState(myContext); 
} 
+1

'shadowOffset' должно быть' CGSizeMake (0, -2) '. –

+0

Не забудьте установить backgroundColor в '[UIColor clearColor]' иначе у вас не будет такого результата. – 0yeoj

ответ

2
self.layer.shadowOffset = CGSizeMake(0, -2.5); 
self.layer.shadowRadius = 1; 
self.layer.shadowOpacity = 0.5; 
self.layer.shadowColor = [UIColor blackColor].CGColor; 

Here is the output

1

UILabel класса имеют теневые свойства по умолчанию.

levelLbl.shadowColor = [[UIColor blackColor] colorWithAlphaComponent:1]; levelLbl.shadowOffset = CGSizeMake(2, 2);

P.S. для тени, как показано выше, вы должны установить shadowRadius над layer.

P.S.2 Не забудьте указать #import <QuartzCore/QuartzCore.h>, если вы не используете Xcode 6 или новее.

+0

Не забудьте '' '#import ' '' –

+0

Да, если вы не используете 'Xcode 6'. –

Смежные вопросы