Сейчас iOS 6, возможно, все изменилось.Ответ TheSquad не работает для меня, пока мне не удастся добавить еще одну строку view2.layer.masksToBounds = NO;
, иначе тень не будет отображаться.Хотя в документации сказано, что masksToBounds
по умолчанию НЕТ, мой код показывает обратное.
Вот как я делаю закругленную угловую кнопку с тенью, которая является одним из наиболее часто используемых фрагментов кода в моем приложении.
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];
РЕДАКТИРОВАТЬ
Если представления необходимо анимировать или прокручивать, masksToBounds = YES
значительно увеличивает производительность, что означает, что анимация, вероятно, будет зависать.Чтобы получить закругленный угол и тень И плавную анимацию или прокрутку, используйте вместо этого следующий код:
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];