C'est iOS 6, maintenant, les choses ont peut être changé. TheSquad la réponse n'a pas fonctionné pour moi jusqu'à ce que j'ai réussi à ajouter une ligne view2.layer.masksToBounds = NO;
, sinon l'ombre ne montre pas. Bien que la documentation, dit - masksToBounds
est PAS par défaut, mon code montre le contraire.
Voici comment je fais un angle arrondi bouton avec de l'ombre, qui est parmi les plus couramment utilisés extrait de code dans mon application.
button.layer.masksToBounds = YES;
button.layer.cornerRadius = 10.0f;
view.layer.masksToBounds = NO; // critical to add this line
view.layer.cornerRadius = 10.0f;
view.layer.shadowOpacity = 1.0f;
// set shadow path to prevent horrible performance
view.layer.shadowPath =
[UIBezierPath bezierPathWithRoundedRect:_button.bounds cornerRadius:10.0f].CGPath;
[view addSubview:button];
MODIFIER
Si les points de vue doivent être animés ou décalés, masksToBounds = YES
de l'impôt les performances de façon significative, ce qui signifie que l'animation sera probablement obtenir bégaya. Pour obtenir des coins arrondis et de l'ombre ET de la douceur de l'animation ou de défilement, utilisez le code suivant à la place:
button.backgroundColor = [UIColor clearColor];
button.layer.backgroundColor = [UIColor redColor].CGColor;
button.layer.masksToBounds = NO;
button.layer.cornerRadius = 10.0f;
view.layer.shadowOpacity = 0.5f;
view.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:_button.bounds cornerRadius:10.0f].CGPath;
view.layer.shadowOffset = CGSizeMake(0.0f, 4.0f);
view.layer.shadowRadius = 2.0f;
view.layer.masksToBounds = NO;
view.layer.cornerRadius = 10.0f;
[view addSubview:button];