Как использовать Quartz 2D для добавления тени к UIImage или UIImageView?

#iphone #ipad #uiimageview #uiimage

#iPhone #iPad #uiimageview #uiimage

Вопрос:

Как мне использовать Quartz 2D для добавления тени к UIImage или UIImageView ?

Есть примеры кода?

Ответ №1:

 imageView.layer.shadowColor = [UIColor blackColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(0, 1);
imageView.layer.shadowOpacity = 1;
imageView.layer.shadowRadius = 1.0;
  

Не забудьте #import <QuartzCore/QuartzCore.h> в вашей реализации.

Редактировать:

Добавление в комментарии @Luke’s:

Небольшое уточнение, которое может сэкономить время некоторым другим пользователям, убедитесь, что вы не установили layer.masksToBounds значение YES в своем представлении, иначе тень не будет,, появляться.

Комментарии:

1. Тень имеет сплошной черный цвет? Как сделать непрозрачную тень? Спасибо.

2. Вы устанавливаете непрозрачность, изменяя свойство shadowOpacity.

3. Я сделал все это, и ошибка: «Свойство ‘layer’ не найдено для объекта типа ‘UIImage'», что мне делать?

4. @ValKalinic Убедитесь, что платформа QuartzCore добавлена в ваш проект XCode.

5. Небольшое уточнение, которое может сэкономить время некоторым другим пользователям. Убедитесь, что вы не установили masksToBounds в YES для вашего view, иначе тень не появится! layer.masksToBounds = ДА;

Ответ №2:

   (void)addShadowToView:(UIView*)view Color:(UIColor*)color ShadowOffset:(CGSize)offset Radius:(float)radius Opacity:(float)opacity
{
    view.layer.shadowColor = [color CGColor];
    view.layer.shadowOffset = offset;
    view.layer.shadowRadius = radius;
    view.layer.shadowOpacity = opacity;
}
  

Использовать:

 [calssName addShadowToView:self.navigationController.navigationBar Color:[UIColor blackColor] ShadowOffset:CGSizeMake(1.0f, 0.5f) Radius:1.0 Opacity:0.5];