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