如何以编程方式将子视图发送到前端?(已尝试将子视图带到前面)



在我的UICollectionViewCell中,我有一个图像和一个标签。图片占据了整个单元格(我想要( - 但是,标签放在图像后面,因此不可见。我已经尝试了bringSubview(toFront: titleLabel),但没有任何反应...我不知道该怎么做,已经做了很多搜索。

这是单元格的代码,如您所见,我不使用故事板(抱歉限制混乱,正在测试不同的解决方案以确定这是否是问题所在(

import UIKit
class BaseCell: UICollectionViewCell {
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupViews()
        setupBasket()
    }
    func setupViews() {
    }
    func setupBasket(){
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
class VideoCell: BaseCell {
    var selectedItemID : String!
    static let sharedInstance = VideoCell()
    var video: Video? {
        didSet {
            titleLabel.text = video?.title
            setupThumbnailImage()
        }
    }

    func setupThumbnailImage() {
        if let thumbnailImageUrl = video?.thumbnail_image_name {
            thumbnailImageView.loadImageUsingUrlString(thumbnailImageUrl)
        }
    }
    let thumbnailImageView: CustomImageView = {
        let imageView = CustomImageView()
        imageView.image = UIImage(named: "taylor_swift_blank_space")
        imageView.contentMode = .scaleAspectFill
        imageView.clipsToBounds = true
        return imageView
    }()
    let titleLabel: UILabel = {
        let textView = UILabel()
        textView.translatesAutoresizingMaskIntoConstraints = false
        textView.text = "Clothes"
        textView.textColor = UIColor.lightGray
        return textView
    }()

    let separatorView: UIView = {
        let view = UIView()
        view.backgroundColor = UIColor(red: 230/255, green: 230/255, blue: 230/255, alpha: 1)
        return view
    }()
    var titleLabelHeightConstraint: NSLayoutConstraint?
    let addtoBasket = UIButton(type: .contactAdd)

    override func setupViews() {
        addtoBasket.frame = CGRect(x: 50, y: 0, width: 20, height: 60)
        addSubview(addtoBasket)
        addSubview(titleLabel)
        addSubview(thumbnailImageView)
        addSubview(separatorView)
        addSubview(addtoBasket)

        titleLabel.superview!.bringSubview(toFront: titleLabel)

        //horizontal constraints
        addConstraintsWithFormat("H:|-0-[v0]-0-|", views: thumbnailImageView)

        //vertical constraints
        addConstraintsWithFormat("V:|-1-[v0]-1-|", views: thumbnailImageView)
        addConstraintsWithFormat("H:|-0-[v0]-1-|", views: separatorView)

        addtoBasket.translatesAutoresizingMaskIntoConstraints = false
        addtoBasket.heightAnchor.constraint(equalToConstant: 20).isActive = true
        addtoBasket.widthAnchor.constraint(equalToConstant: 20).isActive = true
        addtoBasket.centerXAnchor.constraint(equalTo: addtoBasket.superview!.centerXAnchor, constant: 90).isActive = true
        addtoBasket.centerYAnchor.constraint(equalTo: addtoBasket.superview!.centerYAnchor, constant: -50).isActive = true
        //top constraint
        addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .top, relatedBy: .equal, toItem: self, attribute: .bottom, multiplier: 1, constant: 8))
        //right constraint
        addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .right, relatedBy: .equal, toItem: self, attribute: .right, multiplier: 1, constant: 0))
        //right constraint
        addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .left, relatedBy: .equal, toItem: self, attribute: .left, multiplier: 1, constant: 20))
        //height constraint
        titleLabelHeightConstraint = NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: self, attribute: .height, multiplier: 1, constant: -10)
        addConstraint(titleLabelHeightConstraint!)
    }
}

尝试访问标签图层并设置其 zPosition。

试试titleLabel.layer.zPosition = 1

约束显然有问题,现在正在工作!谢谢

最新更新