在ios中放置阴影

在ios中放置阴影,ios,objective-c,shadow,roundedcorners-dropshadow,Ios,Objective C,Shadow,Roundedcorners Dropshadow,如何在iOS中放置对象阴影 我的对象是UIImageView,我想投下一个椭圆阴影。请参考图片以供参考。 最好使用另一个图像来显示阴影。使用模糊图像或更改imageview的alpha 或者,如果要以编程方式执行,请尝试: Obj c: //create elliptical shadow for image through UIBezierPath CGRect ovalRect = CGRectMake(0.0f, _imageView.frame.size.height + 10, _im

如何在iOS中放置对象阴影

我的对象是UIImageView,我想投下一个椭圆阴影。请参考图片以供参考。
最好使用另一个图像来显示阴影。使用模糊图像或更改imageview的alpha

或者,如果要以编程方式执行,请尝试:

Obj c:

//create elliptical shadow for image through UIBezierPath
CGRect ovalRect = CGRectMake(0.0f, _imageView.frame.size.height + 10, _imageView.frame.size.width, 15);
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:ovalRect];

 //applying shadow to path
 _imageView.layer.shadowColor = kShadowColor.CGColor;
 _imageView.layer.shadowOffset = CGSizeMake(0.0, 0.0);
 _imageView.layer.shadowOpacity = 1.0;
 _imageView.layer.shadowRadius = 3.0;
 _imageView.layer.shadowPath = path.CGPath;
斯威夫特:

//create elliptical shdow forimage through UIBezierPath
var ovalRect = CGRectMake(0.0, imageView.frame.size.height + 10, imageView.frame.size.width, 15)
var path = UIBezierPath(ovalInRect: ovalRect)

//applying shadow to path
imageView.layer.shadowColor = UIColor(white: 0.0, alpha: 0.5).CGColor
 imageView.layer.shadowOffset = CGSizeMake(0.0, 0.0)
imageView.layer.shadowOpacity = 1.0
imageView.layer.shadowRadius = 3.0
imageView.layer.shadowPath = path.CGPath
输出:


摘自并查看了解更多信息:

最好使用另一个图像来显示阴影。使用模糊图像或更改imageview的alpha

或者,如果要以编程方式执行,请尝试:

Obj c:

//create elliptical shadow for image through UIBezierPath
CGRect ovalRect = CGRectMake(0.0f, _imageView.frame.size.height + 10, _imageView.frame.size.width, 15);
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:ovalRect];

 //applying shadow to path
 _imageView.layer.shadowColor = kShadowColor.CGColor;
 _imageView.layer.shadowOffset = CGSizeMake(0.0, 0.0);
 _imageView.layer.shadowOpacity = 1.0;
 _imageView.layer.shadowRadius = 3.0;
 _imageView.layer.shadowPath = path.CGPath;
斯威夫特:

//create elliptical shdow forimage through UIBezierPath
var ovalRect = CGRectMake(0.0, imageView.frame.size.height + 10, imageView.frame.size.width, 15)
var path = UIBezierPath(ovalInRect: ovalRect)

//applying shadow to path
imageView.layer.shadowColor = UIColor(white: 0.0, alpha: 0.5).CGColor
 imageView.layer.shadowOffset = CGSizeMake(0.0, 0.0)
imageView.layer.shadowOpacity = 1.0
imageView.layer.shadowRadius = 3.0
imageView.layer.shadowPath = path.CGPath
输出:


摘自并查看了解更多信息:

您可以像这样使用CAShapeLayer:

目标-C:

// init CAShapeLayer
CAShapeLayer *shadowLayer = [CAShapeLayer layer];
shadowLayer.frame = CGRectMake(CGRectGetMinX(_imageView.frame), CGRectGetMaxY(_imageView.frame), _imageView.frame.size.width, _imageView.frame.size.height);
shadowLayer.path = [UIBezierPath bezierPathWithOvalInRect:shadowLayer.bounds].CGPath;
shadowLayer.fillColor = [UIColor colorWithWhite:0 alpha:0.02].CGColor;
shadowLayer.lineWidth = 0;
[self.view.layer addSublayer: shadowLayer];
Swift 3

let shadowLayer = CAShapeLayer()
shadowLayer.frame = CGRect(x: imageView.frame.minX, y: imageView.frame.maxY, width: imageView.frame.width, height: imageView.frame.height * 0.25)
shadowLayer.path = UIBezierPath(ovalIn: shadowLayer.bounds).cgPath
shadowLayer.fillColor = UIColor(white: 0, alpha: 0.02).cgColor
shadowLayer.lineWidth = 0
view.layer.addSublayer(shadowLayer)
输出:

// init CAShapeLayer
CAShapeLayer *shadowLayer = [CAShapeLayer layer];
shadowLayer.frame = CGRectMake(CGRectGetMinX(_imageView.frame), CGRectGetMaxY(_imageView.frame), _imageView.frame.size.width, _imageView.frame.size.height);
shadowLayer.path = [UIBezierPath bezierPathWithOvalInRect:shadowLayer.bounds].CGPath;
shadowLayer.fillColor = [UIColor colorWithWhite:0 alpha:0.02].CGColor;
shadowLayer.lineWidth = 0;
[self.view.layer addSublayer: shadowLayer];

您可以像这样使用CAShapeLayer:

目标-C:

// init CAShapeLayer
CAShapeLayer *shadowLayer = [CAShapeLayer layer];
shadowLayer.frame = CGRectMake(CGRectGetMinX(_imageView.frame), CGRectGetMaxY(_imageView.frame), _imageView.frame.size.width, _imageView.frame.size.height);
shadowLayer.path = [UIBezierPath bezierPathWithOvalInRect:shadowLayer.bounds].CGPath;
shadowLayer.fillColor = [UIColor colorWithWhite:0 alpha:0.02].CGColor;
shadowLayer.lineWidth = 0;
[self.view.layer addSublayer: shadowLayer];
Swift 3

let shadowLayer = CAShapeLayer()
shadowLayer.frame = CGRect(x: imageView.frame.minX, y: imageView.frame.maxY, width: imageView.frame.width, height: imageView.frame.height * 0.25)
shadowLayer.path = UIBezierPath(ovalIn: shadowLayer.bounds).cgPath
shadowLayer.fillColor = UIColor(white: 0, alpha: 0.02).cgColor
shadowLayer.lineWidth = 0
view.layer.addSublayer(shadowLayer)
输出:

// init CAShapeLayer
CAShapeLayer *shadowLayer = [CAShapeLayer layer];
shadowLayer.frame = CGRectMake(CGRectGetMinX(_imageView.frame), CGRectGetMaxY(_imageView.frame), _imageView.frame.size.width, _imageView.frame.size.height);
shadowLayer.path = [UIBezierPath bezierPathWithOvalInRect:shadowLayer.bounds].CGPath;
shadowLayer.fillColor = [UIColor colorWithWhite:0 alpha:0.02].CGColor;
shadowLayer.lineWidth = 0;
[self.view.layer addSublayer: shadowLayer];

为什么不使用另一个几乎透明的黑色椭圆图像?您的对象?你真是个面向对象的人。到目前为止你尝试了什么?@Leo Natan红色矩形是我的目标。事实上,它是imageview,我想要如FigID所示的imageview的阴影,我的答案对你有用吗?也许你删除了接受。为什么不使用另一个几乎透明的黑色椭圆图像呢?你的对象?你真是个面向对象的人。到目前为止你尝试了什么?@Leo Natan红色矩形是我的目标。事实上,它是imageview,我想要如FigID所示的imageview的阴影,我的答案对你有用吗?也许你会拒绝接受。