76

後ろに影を追加したい UIImageView があります。アップルがそれをプロパティとして持っていればいいのですが、私たちプログラマーにとって多くのことを難しくしなければならないので、この質問をする必要があります.

4

5 に答える 5

218

これを行うためのより良い、より簡単な方法があります。UIImageView は UIView を継承しているため、layer プロパティを持っています。レイヤーの影のプロパティにアクセスすると、影ができました。

UIImageView を nib ファイルへの IBOutlet として持っている場合は、awakeFromNib を実装するだけです。

Objective-C

- (void)awakeFromNib {
    imageView.layer.shadowColor = [UIColor purpleColor].CGColor;
    imageView.layer.shadowOffset = CGSizeMake(0, 1);
    imageView.layer.shadowOpacity = 1;
    imageView.layer.shadowRadius = 1.0;
    imageView.clipsToBounds = NO;
}

忘れないで#import "QuartzCore/CALayer.h"


Swift の場合、複数の方法で対応できます。クラス拡張、サブクラス、または imageView インスタンスを作成します。どちらの方法でも、レイヤーのシャドウ プロパティを変更するプロセスは同じです。

スイフト3

override func awakeFromNib() {
    super.awakeFromNib()

    imageView.layer.shadowColor = UIColor.purple.cgColor
    imageView.layer.shadowOffset = CGSize(width: 0, height: 1)
    imageView.layer.shadowOpacity = 1
    imageView.layer.shadowRadius = 1.0
    imageView.clipsToBounds = false
}
于 2010-10-01T23:14:46.490 に答える
11

最も簡単な方法は、画像ビューにシャドウレイヤーを追加することです。

CALayer             *layer = [CALayer layer];
CGRect              bounds = self.bounds;

layer.bounds = bounds;
layer.position = CGPointMake(bounds.size.width / 2 + 3, bounds.size.height / 2 + 3);
layer.backgroundColor = [UIColor colorWithWhite: 0.25 alpha: 0.55].CGColor;
layer.zPosition = -5;

[self.layer addSublayer: layer];

ビューの[サブビューのクリップ]がオフになっていることを確認してください

于 2010-01-11T20:02:12.137 に答える
5

それに加えて、白い境界線と影を作りたい場合は、そのコードを使用できます:

//shadow part
imageView.layer.shadowColor = [UIColor blackColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(0, 1);
imageView.layer.shadowOpacity = 1;
imageView.layer.shadowRadius = 1.0;
//white border part
[imageView.layer setBorderColor: [[UIColor whiteColor] CGColor]];
[imageView.layer setBorderWidth: 2.0];
于 2012-05-09T13:59:09.737 に答える
0

スウィフト 5.x

profileImageView.layer.cornerRadius = profileImageView.frame.size.width/2
profileImageView.clipsToBounds = false
profileImageView.layer.shadowColor = UIColor.black.cgColor
profileImageView.layer.shadowOpacity = 0.7
profileImageView.layer.shadowOffset =  CGSize(width: 2, height: 2)
profileImageView.layer.shadowRadius = 10
于 2021-02-08T15:24:58.497 に答える