Ho provato ogni singolo metodo trovato ma non sono riuscito a farlo. Voglio semplicemente creare un'etichetta con angoli arrotondati, un'ombra esterna con un motivo di sfondo. L'ombra funziona solo se non voglio angoli arrotondati. Non riesco a prenderli entrambi insieme!Un UILabel con angoli arrotondati, ombra esterna e motivo di sfondo
Ecco il mio codice con l'ombra:
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;
Questo mi dà ombra angoli arrotondati. Ma se io uso
[label.layer setMasksToBounds:YES];
Questo mi darà angoli arrotondati senza ombra. Ho preso i consigli di utilizzare un percorso di ombra, in modo che il codice con il percorso ombra appare così:
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;
Questo codice dà me gli angoli arrotondati, ma nessuna ombra. Qualche suggerimento?
Grazie!
http://stackoverflow.com/questions/3690972/why-maskstobounds-yes-prevents-calayer-shadow –