如何在UIImage边界上创建阴影效果

时间:2017-08-26 09:07:12

标签: ios objective-c uiimageview uiimage uibezierpath

我有UIImageView,其中显然有UIImage。我想仅在UIImage上创建阴影效果。我的问题是我无法获取CGRectUIImage的{​​{1}}所以我可以使用以下方法对其应用阴影效果。

UIImageView

请考虑此问题附带的图像。 这个问题也很关键,因为[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上创建UIBezierPath,而不仅仅是UIImageView。与方法一样,我无法得到UIImage的确切CGRect

任何解决方案?我错过了什么?

cropped image

1 个答案:

答案 0 :(得分:0)

UIImage总是矩形的,UIImageView也是如此。我相信你只想在裁剪区域的锯齿状边缘周围放置阴影吗?如果是这种情况,则无法使用此方法。您需要使用CoreGraphics或其他,以获得您想要的效果。例如,您可以在内存中创建此图像的副本,将其变黑并将其模糊并将其粘贴到图像后面以创建阴影效果。