UILabel со скругленными углами, тенью и фоновым узором

Я пробовал каждый метод, который я нашел, но я не был в состоянии сделать это. Я просто хочу сделать этикетку с закругленными углами, тенью с фоновым узором. Тень работает, только если я не хочу закругленных углов. Я не могу собрать их обоих вместе!

Вот мой код с тенью:

label.text = msg;
label.textAlignment = UITextAlignmentCenter;
label.frame = CGRectMake(20,10,280,40);
label.backgroundColor 
    = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"msg_box_bg.png"]];

[label.layer setCornerRadius:10];
[label.layer setMasksToBounds:NO];

/* Shadow */
label.layer.shadowColor = [UIColor blackColor].CGColor;
label.layer.shadowOpacity = 0.6;
label.layer.shadowOffset = CGSizeMake(0,0);
label.layer.shadowRadius = 3;

Это дает мне тень без закругленных углов. Но если я использую

[label.layer setMasksToBounds:YES];

Это даст мне закругленные углы без теней. Я последовал совету использовать теневой путь, поэтому код с теневым путем выглядит следующим образом:

label.text = msg;
label.textAlignment = UITextAlignmentCenter;
label.frame = CGRectMake(20,10,280,40);
label.backgroundColor 
    = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"msg_box_bg.png"]];

[label.layer setCornerRadius:10];
[label.layer setMasksToBounds:YES];

/* Shadow */
label.layer.shadowColor = [UIColor blackColor].CGColor;
label.layer.shadowOpacity = 0.6;
label.layer.shadowOffset = CGSizeMake(0,0);
label.layer.shadowRadius = 3;
label.layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:label.frame cornerRadius:10]CGPath];
label.layer.shouldRasterize = YES;

Этот код дает мне скругленные углы, но не дает тени. Какие-либо предложения?

Спасибо!

8
задан hsnm 18 April 2012 в 00:37
поделиться