我有一个UIImageView,我想在后面添加一个阴影。我希望苹果把它作为一种财产,但是他们必须为我们的程序员做很多事情,所以我需要问这个问题。
答案 0 :(得分:209)
有一种更好,更简单的方法。 UIImageView继承自UIView,因此它具有图层属性。你可以访问图层的阴影属性和bam,你有一个阴影。
如果您将UIImageView作为nib文件的IBOutlet,您可以实现awakeFromNib e.g。
<强>目标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实例。无论哪种方式,修改图层阴影属性的过程都是一样的。
Swift 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
}
答案 1 :(得分:10)
最简单的方法是在图像视图中添加阴影图层:
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];
确保视图“剪辑子视图”已关闭
答案 2 :(得分:7)
带扩展名的快速解决方案。不需要子类化。从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
}
}
答案 3 :(得分:4)
除此之外,如果你想制作白色边框和阴影,你可以使用该代码:
//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];
答案 4 :(得分:0)
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