2017-08-26 16 views
-1

私はを明らかに持っているUIImageViewを持っています。 UIImageにのみシャドーエフェクトを作成したいと思います。私の問題は、UIImageCGRectUIImageViewに入れることができないため、次の方法でシャドーエフェクトを適用できます。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は、ここでバインドされたビューに等しいです。したがって、上記の方法でエフェクトを適用すると、UIImageだけでなく、UIImageView全体にUIBezierPathが作成されます。この方法では、UIImageの正確なCGRectを取得できません。

私は何が欠けていますか?

cropped image

+0

マイナスポイントが得られる理由 –

答えて

0

UIImageのでUIImageViewは、常に矩形です。私は、切り取った領域のギザギザの境界線の周りだけに影を入れたいと思っていますか?この場合、このメソッドを使用することはできません。 CoreGraphicsなどを使用して、効果を得る必要があります。たとえば、この画像のコピーをメモリに作成し、黒く塗りつぶしてぼかして、画像の後ろに貼り付けて影のような効果を作り出すことができます。

関連する問題