Ios 向UIImageView添加渐变
我正在尝试向UIImageView添加渐变Ios 向UIImageView添加渐变,ios,swift,uiimageview,Ios,Swift,Uiimageview,我正在尝试向UIImageView添加渐变 viewDidLoad() { self.bookImageBig.sd_setImage(with: URL(string: self.book.image), placeholderImage: nil) self.bookImage.sd_setImage(with: URL(string: self.book.image), placeholderImage: nil) let view = UIView(fr
viewDidLoad() {
self.bookImageBig.sd_setImage(with: URL(string: self.book.image), placeholderImage: nil)
self.bookImage.sd_setImage(with: URL(string: self.book.image), placeholderImage: nil)
let view = UIView(frame: bookImageBig.frame)
let gradient = CAGradientLayer()
gradient.frame = view.frame
gradient.colors = [UIColor.clear.cgColor, UIColor.black.cgColor]
gradient.locations = [0.0, 1.0]
view.layer.insertSublayer(gradient, at: 0)
bookImageBig.addSubview(view)
bookImageBig.bringSubviewToFront(view)
我正在尝试向BookImageView添加渐变
viewDidLoad() {
self.bookImageBig.sd_setImage(with: URL(string: self.book.image), placeholderImage: nil)
self.bookImage.sd_setImage(with: URL(string: self.book.image), placeholderImage: nil)
let view = UIView(frame: bookImageBig.frame)
let gradient = CAGradientLayer()
gradient.frame = view.frame
gradient.colors = [UIColor.clear.cgColor, UIColor.black.cgColor]
gradient.locations = [0.0, 1.0]
view.layer.insertSublayer(gradient, at: 0)
bookImageBig.addSubview(view)
bookImageBig.bringSubviewToFront(view)
但是,梯度仅部分覆盖图像。30像素的图像不被渐变覆盖。该图像已添加到故事板,并在视图控制器中引用。
有人能帮忙吗?用边框代替边框
gradient.frame = self.bookImageBig.bounds
对于帧和边界差异,请查看此,而不是帧使用边界
gradient.frame = self.bookImageBig.bounds
对于帧和边界的差异,请注意这一点不仅会混淆帧和边界,而且还会隐藏代码运行的时间,这一点至关重要。如果在
viewDidLoad
中运行它,那就不好了。@matt我在viewDidLoad中运行它。我应该在哪里运行它?在第一个viewdilayoutsubviews
之后。在那之前,尺寸都不合适。请读@matt,我仍然很困惑。如果在多次调用viewDidLayoutSubviews和viewDidLayoutSubviews之后必须调用它,您将在何处调用它?您可以在viewDidLayoutSubviews
中执行此操作,并使用Bool实例属性,这样您就知道这是第一次。您不仅混淆了帧和边界,而且还隐藏了此代码运行的时间,这一点至关重要。如果在viewDidLoad
中运行它,那就不好了。@matt我在viewDidLoad中运行它。我应该在哪里运行它?在第一个viewdilayoutsubviews
之后。在那之前,尺寸都不合适。请读@matt,我仍然很困惑。如果在多次调用viewDidLayoutSubviews和viewDidLayoutSubviews之后必须调用它,您将在何处调用它?您在viewDidLayoutSubviews
中执行此操作,并使用Bool实例属性,因此您知道这是第一次。这不起作用。你还有其他建议吗?你能分享这个演示项目吗?这里是不起作用的代码。你还有其他建议吗?你能分享演示项目吗?下面是代码