【问题标题】:How do I add a label on top of a gradient?如何在渐变顶部添加标签?
【发布时间】:2016-10-21 20:27:04
【问题描述】:

我有一个非常基本的 UICollectionView。在我的 CollectionViewCell 中,我有一个“thumbnailImage”,它只是一个图像。我想要一个从黑色渐变到清晰颜色的渐变层,但我也想要这个 CAGradient 的 UILabel ON TOP 而不是下面。标签是“MovieTitle”。我正在以编程方式做所有事情,包括约束。我该怎么做?这是我的代码

let myView: UIView = {
    let view = UIView()
    return view
}()

let gradientView: CAGradientLayer = {
    let grad = CAGradientLayer()
    grad.colors = [UIColor.white.cgColor, UIColor.red.cgColor]
    grad.locations = [0.7, 1.2]
    return grad
}()

func setupViews() {
    thumbnailImageView.addSubview(movieTitle)
    addSubview(thumbnailImageView)
    thumbnailImageView.addSubview(dividerLine)
    thumbnailImageView.addSubview(myView)
    myView.layer.addSublayer(gradientView)

    addConstrainsWithFormat(format: "H:|[v0]|", views: thumbnailImageView)
    addConstrainsWithFormat(format: "V:|[v0]|", views: thumbnailImageView)

    thumbnailImageView.addConstrainsWithFormat(format: "H:|[v0]|", views: myView)
    thumbnailImageView.addConstrainsWithFormat(format: "V:|[v0]|", views: myView)

    thumbnailImageView.addConstrainsWithFormat(format: "H:|[v0]|", views: dividerLine)
    thumbnailImageView.addConstrainsWithFormat(format: "V:[v0(0.75)]|", views: dividerLine)

    thumbnailImageView.addConstrainsWithFormat(format: "H:|-16-[v0]-16-|", views: movieTitle)
    thumbnailImageView.addConstrainsWithFormat(format: "V:[v0(25)]-8-|", views: movieTitle)
}

【问题讨论】:

    标签: swift uicollectionview swift3 cagradientlayer


    【解决方案1】:

    尝试更改视图的顺序,使标签出现在视图上方,内部带有渐变:

    myView.layer.addSublayer(gradientView)
    thumbnailImageView.addSubview(myView)
    thumbnailImageView.addSubview(movieTitle)
    thumbnailImageView.addSubview(dividerLine)
    addSubview(thumbnailImageView)
    

    您还可以在层次结构中已存在的图层/视图下方或上方插入图层和视图:

    view.insertSubview(subview, at: 0)
    view.insertSubview(subview, belowSubview: existingView)
    view.insertSubview(subview, aboveSubview: existingView)
    
    layer.insertSublayer(gradientLayer, at: 0)
    layer.insertSublayer(gradientLayer, below: anotherLayer)
    layer.insertSublayer(gradientLayer, above: anotherLayer)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 2020-04-27
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多