Ein UILabel mit abgerundeten Ecken, Schatten und hintergrund-Muster

Ich habe versucht, jede einzelne Methode, die ich gefunden, aber ich war nicht in der Lage, es zu machen. Ich möchte einfach, um ein Etikett mit abgerundeten Ecken, einen Schatten mit einem hintergrund-Muster. Der Schatten funktioniert nur, wenn ich nicht will, abgerundete Ecken. Ich kann nicht Sie beide zusammen!

Hier ist mein code mit dem Schatten:

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;

Das gibt mir Schatten, ohne abgerundete Ecken. Aber wenn ich

[label.layer setMasksToBounds:YES];

Das wird mir abgerundete Ecken mit keine Schatten. Ich habe die raten, die Verwendung einer shadow-Pfad, also den code mit dem Schatten-Pfad sieht wie folgt aus:

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;

Dieser code gibt mir abgerundeten Ecken, aber kein Schatten.
Irgendwelche Vorschläge?

Dank!

InformationsquelleAutor hsnm | 2012-04-18
Schreibe einen Kommentar