如何在 UIImage 边界上创建阴影效果
Posted
技术标签:
【中文标题】如何在 UIImage 边界上创建阴影效果【英文标题】:How to create shadow effect on UIImage bounds 【发布时间】:2017-08-26 09:07:11 【问题描述】:我有一个UIImageView
,其中我显然有一个UIImage
。我只想在UIImage
上创建阴影效果。我的问题是我无法在UIImageView
中获得UIImage
的CGRect
,所以我可以使用以下方法对其应用阴影效果。
[mImageView.layer.shadowColor = [UIColor grayColor].CGColor;
mImageView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
mImageView.layer.shadowOpacity = 0.9f;
mImageView.layer.masksToBounds = NO;
CGRect imageFrame = mImageView.frame;
UIEdgeInsets shadowInsets = UIEdgeInsetsMake(0, 0, -1.5f, 0);
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:UIEdgeInsetsInsetRect(imageFrame, shadowInsets)];
mImageView.layer.shadowPath = shadowPath.CGPath;
请考虑针对此问题附上的图片。
这个问题也很关键,因为UIImage
可以是一个刚性尺寸的图像,因为它是一个裁剪的图像,正如您在所附图片中看到的那样。
UIImageView’s
边界等于视图的边界。所以当使用上述方法应用效果时,它会在整个UIImageView
上创建一个UIBezierPath
,而不仅仅是UIImage
。与方法一样,我无法获得UIImage
的确切CGRect
。
有什么解决办法吗?我错过了什么?
cropped image
【问题讨论】:
为什么我会得到减分 【参考方案1】:UIImage 总是矩形的,UIImageView 也是如此。我相信您只想在裁剪区域的锯齿状边界周围放置阴影,对吗?如果是这种情况,则不能使用此方法。您需要使用 CoreGraphics 或其他,以获得您想要的效果。例如,您可以在内存中创建此图像的副本,将其变黑,然后对其进行模糊处理并将其粘贴到图像后面以创建阴影效果。
【讨论】:
以上是关于如何在 UIImage 边界上创建阴影效果的主要内容,如果未能解决你的问题,请参考以下文章