У меня есть UIImageView, что я хочу добавить тень. Я хочу, чтобы у яблока было это свойство, но для этого нам нужно много сделать для программистов, поэтому мне нужно задать этот вопрос.
Каков наилучший способ создать тень за UIImageView
Ответ 1
Там лучший и простой способ сделать это. UIImageView наследует UIView, поэтому он обладает свойством layer. Вы можете получить доступ к свойствам тени тени и bam, у вас есть тень.
Если у вас UIImageView как IBOutlet для файла nib, вы можете просто реализовать awakeFromNib например.
Objective-C
- (void)awakeFromNib {
imageView.layer.shadowColor = [UIColor purpleColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(0, 1);
imageView.layer.shadowOpacity = 1;
imageView.layer.shadowRadius = 1.0;
imageView.clipsToBounds = NO;
}
Не забывайте #import "QuartzCore/CALayer.h"
Для Swift вы можете использовать несколько способов. Создайте расширение класса, подкласс или экземпляр imageView. Каким бы способом этот процесс не изменился при изменении свойства тэгов слоев.
Swift 3
override func awakeFromNib() {
super.awakeFromNib()
imageView.layer.shadowColor = UIColor.purple.cgColor
imageView.layer.shadowOffset = CGSize(width: 0, height: 1)
imageView.layer.shadowOpacity = 1
imageView.layer.shadowRadius = 1.0
imageView.clipsToBounds = false
}
Ответ 2
Простейшая вещь - добавить теневой слой к вашему представлению изображения:
CALayer *layer = [CALayer layer];
CGRect bounds = self.bounds;
layer.bounds = bounds;
layer.position = CGPointMake(bounds.size.width / 2 + 3, bounds.size.height / 2 + 3);
layer.backgroundColor = [UIColor colorWithWhite: 0.25 alpha: 0.55].CGColor;
layer.zPosition = -5;
[self.layer addSublayer: layer];
Убедитесь, что "Подъемные клипы" выключен для просмотра
Ответ 3
в дополнение к этому, если вы хотите сделать белую границу и тень, вы можете использовать этот код:
//shadow part
imageView.layer.shadowColor = [UIColor blackColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(0, 1);
imageView.layer.shadowOpacity = 1;
imageView.layer.shadowRadius = 1.0;
//white border part
[imageView.layer setBorderColor: [[UIColor whiteColor] CGColor]];
[imageView.layer setBorderWidth: 2.0];
Ответ 4
Быстрое решение с расширением. Подкласс не требуется. Вызовите myImage.addShadow()
с viewDidLoad()
. Это должно работать для UIView
и UIImageView
.
extension UIView {
func addShadow() {
layer.shadowColor = UIColor.black.cgColor
layer.shadowOffset = CGSize(width: 0, height: 0)
layer.shadowOpacity = 0.5
layer.shadowRadius = 5
clipsToBounds = false
}
}
Ответ 5
UIView set shadowlayer
и addSubview: ваш imageView