2017-08-26 115 views
-1

我有一个UIImageView,其中我明显有一个UIImage。我只想在UIImage上创建阴影效果。我的问题是,我无法在UIImageView中获得UIImageCGRect,所以我可以通过使用以下方法对其应用阴影效果。如何在UIImage边界上创建阴影效果

[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

+0

为什么我得到负分 –

回答

0

的UIImage总是矩形,所以是的UIImageView。我相信你只想把阴影只放在裁剪区域的锯齿状边界上吗?如果是这种情况,则不能使用此方法。您需要使用CoreGraphics或其他软件来获得所需的效果。例如,您可以在内存中创建此图像的副本,将其变黑,然后模糊它并将其粘贴到图像后面以创建一个阴影效果。