我正在使用以下代码为ImageView制作阴影

UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:self.avatarImageView.bounds];
self.avatarImageView.layer.masksToBounds = NO;
self.avatarImageView.layer.shadowColor = [UIColor blackColor].CGColor;
self.avatarImageView.layer.shadowOffset = CGSizeMake(5.0f, 5.0f);
self.avatarImageView.layer.shadowOpacity = 0.8f;
self.avatarImageView.layer.shadowPath = shadowPath.CGPath;

它将在此图像的右侧和底部投下阴影。

ios - iOS:如何在4面(顶部,右侧,底部和左侧)为UIView制作阴影-LMLPHP

现在,我想使ImageView的顶部和左侧也有阴影。
我应该更改什么代码?
是否可以仅通过代码使 View 在顶部,右侧,底部,左侧包含阴影,还是需要为阴影创建其他布局 View ?任何帮助将不胜感激。

这是我想要实现的
ios - iOS:如何在4面(顶部,右侧,底部和左侧)为UIView制作阴影-LMLPHP

更新
感谢@Dipen Panchasara提供了一个简单的解决方案。跟随@Dipen Panchasara(阴影颜色为黑色),我将得到像这样的阴影图像
ios - iOS:如何在4面(顶部,右侧,底部和左侧)为UIView制作阴影-LMLPHP

最佳答案

像这样:

float shadowSize = 10.0f;
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(self.avatarImageView.frame.origin.x - shadowSize / 2,
                                                                       self.avatarImageView.frame.origin.y - shadowSize / 2,
                                                                       self.avatarImageView.frame.size.width + shadowSize,
                                                                       self.avatarImageView.frame.size.height + shadowSize)];
self.avatarImageView.layer.masksToBounds = NO;
self.avatarImageView.layer.shadowColor = [UIColor blackColor].CGColor;
self.avatarImageView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
self.avatarImageView.layer.shadowOpacity = 0.8f;
self.avatarImageView.layer.shadowPath = shadowPath.CGPath;

Swift 3 版本:
    let shadowSize : CGFloat = 5.0
    let shadowPath = UIBezierPath(rect: CGRect(x: -shadowSize / 2,
                                               y: -shadowSize / 2,
                                               width: self.avatarImageView.frame.size.width + shadowSize,
                                               height: self.avatarImageView.frame.size.height + shadowSize))
    self.avatarImageView.layer.masksToBounds = false
    self.avatarImageView.layer.shadowColor = UIColor.black.cgColor
    self.avatarImageView.layer.shadowOffset = CGSize(width: 0.0, height: 0.0)
    self.avatarImageView.layer.shadowOpacity = 0.5
    self.avatarImageView.layer.shadowPath = shadowPath.cgPath

10-07 19:51
查看更多