4 ответов:
есть лучший и более простой способ сделать это. UIImageView наследует от UIView, поэтому он имеет свойство слоя. Вы можете получить доступ к свойствам тени слоя и бац, у вас есть тень.
Если у вас есть UIImageView как IBOutlet к файлу nib, вы можете просто реализовать awakeFromNib например,
С
- (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 }
самое простое, что нужно сделать, это добавить теневой слой к вашему виду изображения:
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];убедитесь, что" клип Subviews " выключен для просмотра
в дополнение к этому, если вы хотите сделать белую границу и тень, вы можете использовать этот код:
//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];
быстрое решение с расширением. Подклассы не требуются. Звоните
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 } }
Comments