我有一个 UIImageView 我想在后面添加一个阴影。我希望苹果有这个属性,但他们不得不让我们程序员做很多事情,所以我需要问这个问题。
问问题
69365 次
5 回答
218
有一种更好、更简单的方法可以做到这一点。UIImageView 继承自 UIView 所以它有一个 layer 属性。您可以访问图层的阴影属性和 bam,您有一个阴影。
如果你有 UIImageView 作为 IBOutlet 到一个 nib 文件,你可以只实现 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 回答
9
带有扩展的 Swift 解决方案。不需要子类化。myImage.addShadow()
从调用viewDidLoad()
。这应该适用于UIView
和UIImageView
。
extension UIView {
func addShadow() {
layer.shadowColor = UIColor.black.cgColor
layer.shadowOffset = CGSize(width: 0, height: 0)
layer.shadowOpacity = 0.5
layer.shadowRadius = 5
clipsToBounds = false
}
}
于 2017-02-10T13:36:39.120 回答
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 回答