在UIImageView背后创build阴影的最佳方法是什么?
我有一个UIImageView,我想添加一个阴影。 我希望苹果有这样的属性,但是他们必须为我们的程序员做很多事情,所以我需要问这个问题。
有一个更好,更简单的方法来做到这一点。 UIImageView从UIViewinheritance,所以它有一个图层属性。 你可以访问图层的阴影属性和巴姆,你有一个阴影。
如果您将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,你可以采取多种方式。 创build一个类扩展,子类或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 }
最简单的做法是在图像视图中添加阴影图层:
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];
确保视图的“剪辑子视图”已closures
除此之外,如果你想使白色的边框和阴影,你可以使用该代码:
//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];
具有扩展的Swift解决scheme。 子类化不是必需的。 从viewDidLoad()
调用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 } }
UIView设置阴影
和addSubview:你的imageView